From 9137fd048ea7fbd2f183a30db87a99fa73aacc9f Mon Sep 17 00:00:00 2001 From: Vasiliy Kulikov Date: Sun, 5 Sep 2010 22:32:41 +0400 Subject: [PATCH] --- yaml --- r: 219775 b: refs/heads/master c: 2fac6c290f9e7ac98256e9deaa668f6c2c305cf2 h: refs/heads/master i: 219773: 202067034de43f21a01e709055f24b58f45186b8 219771: 6987709ce139028cb8c0942f853245045435b71f 219767: e308c8ce13d9a32e6ee46d2805b584540b363cee 219759: 614fbd6ad51fa7aa79dad9759fc87972d18de302 219743: 791f06ed1655d337a66013d2654b4e2a6887604b 219711: eccc4171538fcc0b91ba2915b78acdb777b04c4e 219647: 991ee1ab4022a70f518c9ca9c41fc031babe3019 v: v3 --- [refs] | 2 +- trunk/drivers/staging/rtl8192u/r8192U_core.c | 23 +++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 9faaaf33c032..5eadc1ad2a0b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e5a7dc54eedde81e87832e02ba0f6b8c5a4d2d48 +refs/heads/master: 2fac6c290f9e7ac98256e9deaa668f6c2c305cf2 diff --git a/trunk/drivers/staging/rtl8192u/r8192U_core.c b/trunk/drivers/staging/rtl8192u/r8192U_core.c index 51bcd0196009..494f180acc26 100644 --- a/trunk/drivers/staging/rtl8192u/r8192U_core.c +++ b/trunk/drivers/staging/rtl8192u/r8192U_core.c @@ -5793,10 +5793,12 @@ static int __devinit rtl8192_usb_probe(struct usb_interface *intf, struct net_device *dev = NULL; struct r8192_priv *priv= NULL; struct usb_device *udev = interface_to_usbdev(intf); + int ret; RT_TRACE(COMP_INIT, "Oops: i'm coming\n"); dev = alloc_ieee80211(sizeof(struct r8192_priv)); - + if (dev == NULL) + return -ENOMEM; usb_set_intfdata(intf, dev); SET_NETDEV_DEV(dev, &intf->dev); @@ -5826,12 +5828,16 @@ static int __devinit rtl8192_usb_probe(struct usb_interface *intf, RT_TRACE(COMP_INIT, "Driver probe completed1\n"); if(rtl8192_init(dev)!=0){ RT_TRACE(COMP_ERR, "Initialization failed"); + ret = -ENODEV; goto fail; } netif_carrier_off(dev); netif_stop_queue(dev); - register_netdev(dev); + ret = register_netdev(dev); + if (ret) + goto fail2; + RT_TRACE(COMP_INIT, "dev name=======> %s\n",dev->name); rtl8192_proc_init_one(dev); @@ -5839,13 +5845,20 @@ static int __devinit rtl8192_usb_probe(struct usb_interface *intf, RT_TRACE(COMP_INIT, "Driver probe completed\n"); return 0; - +fail2: + rtl8192_down(dev); + if (priv->pFirmware) { + kfree(priv->pFirmware); + priv->pFirmware = NULL; + } + rtl8192_usb_deleteendpoints(dev); + destroy_workqueue(priv->priv_wq); + mdelay(10); fail: free_ieee80211(dev); RT_TRACE(COMP_ERR, "wlan driver load failed\n"); - return -ENODEV; - + return ret; } //detach all the work and timer structure declared or inititialize in r8192U_init function.