| From 69764660ad1f2e3a1d644879688bdbc369a4140e Mon Sep 17 00:00:00 2001 |
| From: Stefan Schmidt <stefan@datenfreihafen.org> |
| Date: Mon, 26 Apr 2010 11:20:32 -0700 |
| Subject: ieee802154: Fix oops during ieee802154_sock_ioctl |
| |
| |
| From: Stefan Schmidt <stefan@datenfreihafen.org> |
| |
| [ Upstream commit 93c0c8b4a5a174645550d444bd5c3ff0cccf74cb ] |
| |
| Trying to run izlisten (from lowpan-tools tests) on a device that does not |
| exists I got the oops below. The problem is that we are using get_dev_by_name |
| without checking if we really get a device back. We don't in this case and |
| writing to dev->type generates this oops. |
| |
| [Oops code removed by Dmitry Eremin-Solenikov] |
| |
| If possible this patch should be applied to the current -rc fixes branch. |
| |
| Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org> |
| Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| net/ieee802154/af_ieee802154.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/net/ieee802154/af_ieee802154.c |
| +++ b/net/ieee802154/af_ieee802154.c |
| @@ -147,6 +147,9 @@ static int ieee802154_dev_ioctl(struct s |
| dev_load(sock_net(sk), ifr.ifr_name); |
| dev = dev_get_by_name(sock_net(sk), ifr.ifr_name); |
| |
| + if (!dev) |
| + return -ENODEV; |
| + |
| if (dev->type == ARPHRD_IEEE802154 && dev->netdev_ops->ndo_do_ioctl) |
| ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd); |
| |