Hi, Larry Finger wrote: > I missed a Cc for stable in this patch: > > ================================================ > commit 2080913e017ab9f88379d93fd09546ad95faf87b > Author: Larry Finger <Larry.Finger@xxxxxxxxxxxx> > Date: Sat Feb 25 18:10:21 2012 -0600 > > staging: r8712u: Fix regression caused by commit 8c213fa > > In commit 8c213fa "staging: r8712u: Use asynchronous firmware loading", > the command to release the firmware was placed in the wrong routine. > > In combination with the bug introduced in commit a5ee652 "staging: r8712u: > Interface-state not fully tracked", the driver attempts to upload firmware > that had already been released. This bug is the source of one of the > problems in https://bugs.archlinux.org/task/27996#comment89833. > > Tested-by: Alberto Lago Ballesteros <saniukeokusainaya@xxxxxxxxx> > Tested-by: Adrian <agib@xxxxxx> > Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Accordingly, the fix described above was included in 3.3.4. a5ee652 was merged during the 3.2 merge window and 8c213fa was backported as part of 3.2.6, so I imagine the 3.2-stable tree needs this fix, too. (Luckily neither patch is in 3.0.y.) Thanks, Jonathan > --- > drivers/staging/rtl8712/os_intfs.c | 3 --- > drivers/staging/rtl8712/usb_intf.c | 5 +++++ > 2 files changed, 5 insertions(+), 3 deletions(-) > > --- a/drivers/staging/rtl8712/os_intfs.c > +++ b/drivers/staging/rtl8712/os_intfs.c > @@ -476,9 +476,6 @@ static int netdev_close(struct net_devic > r8712_free_assoc_resources(padapter); > /*s2-4.*/ > r8712_free_network_queue(padapter); > - release_firmware(padapter->fw); > - /* never exit with a firmware callback pending */ > - wait_for_completion(&padapter->rtl8712_fw_ready); > return 0; > } > > --- a/drivers/staging/rtl8712/usb_intf.c > +++ b/drivers/staging/rtl8712/usb_intf.c > @@ -30,6 +30,7 @@ > > #include <linux/usb.h> > #include <linux/module.h> > +#include <linux/firmware.h> > > #include "osdep_service.h" > #include "drv_types.h" > @@ -621,6 +622,10 @@ static void r871xu_dev_remove(struct usb > struct _adapter *padapter = netdev_priv(pnetdev); > struct usb_device *udev = interface_to_usbdev(pusb_intf); > > + if (padapter->fw_found) > + release_firmware(padapter->fw); > + /* never exit with a firmware callback pending */ > + wait_for_completion(&padapter->rtl8712_fw_ready); > usb_set_intfdata(pusb_intf, NULL); > if (padapter) { > if (drvpriv.drv_registered == true) _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel