Hi,

Larry Finger wrote:

> I missed a Cc for stable in this patch:
>
> ================================================
> commit 2080913e017ab9f88379d93fd09546ad95faf87b
> Author: Larry Finger <[email protected]>
> 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 <[email protected]>
>     Tested-by: Adrian <[email protected]>
>     Signed-off-by: Larry Finger <[email protected]>
>     Signed-off-by: Greg Kroah-Hartman <[email protected]>

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)
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to