[3.2.y] staging: r8712u: Fix regression caused by commit 8c213fa

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux