| From stable-bounces@linux.kernel.org Fri Oct 26 14:06:06 2007 |
| From: Marc Pignat <marc.pignat@hevs.ch> |
| Date: Fri, 26 Oct 2007 17:04:39 -0400 |
| Subject: zd1211rw, fix oops when ejecting install media |
| To: stable@kernel.org |
| Cc: linux-wireless@vger.kernel.org, "John W. Linville" <linville@tuxdriver.com>, Marc Pignat <marc.pignat@hevs.ch> |
| Message-ID: <11934326832747-git-send-email-linville@tuxdriver.com> |
| |
| |
| From: Marc Pignat <marc.pignat@hevs.ch> |
| |
| patch e0579d576cb894a4cf3c5af04fbf38e8c1281738 in mainline. |
| |
| The disconnect function can dereference the net_device structure when it |
| is never allocated. This is the case when ejecting the device installer. |
| |
| Signed-off-by: Marc Pignat <marc.pignat@hevs.ch> |
| Acked-by: Daniel Drake <dsd@gentoo.org> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/net/wireless/zd1211rw/zd_usb.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/wireless/zd1211rw/zd_usb.c |
| +++ b/drivers/net/wireless/zd1211rw/zd_usb.c |
| @@ -1041,14 +1041,17 @@ error: |
| static void disconnect(struct usb_interface *intf) |
| { |
| struct net_device *netdev = zd_intf_to_netdev(intf); |
| - struct zd_mac *mac = zd_netdev_mac(netdev); |
| - struct zd_usb *usb = &mac->chip.usb; |
| + struct zd_mac *mac; |
| + struct zd_usb *usb; |
| |
| /* Either something really bad happened, or we're just dealing with |
| * a DEVICE_INSTALLER. */ |
| if (netdev == NULL) |
| return; |
| |
| + mac = zd_netdev_mac(netdev); |
| + usb = &mac->chip.usb; |
| + |
| dev_dbg_f(zd_usb_dev(usb), "\n"); |
| |
| zd_netdev_disconnect(netdev); |