Re: [PATCH 5/5] staging: vt6656: set usb_set_intfdata on driver fail.

2020-01-03 Thread Greg Kroah-Hartman
On Fri, Jan 03, 2020 at 11:01:59AM +0100, Greg Kroah-Hartman wrote:
> On Fri, Dec 20, 2019 at 09:15:59PM +, Malcolm Priestley wrote:
> > intfdata will contain stale pointer when the device is detached after
> > failed initialization when referenced in vt6656_disconnect
> > 
> > Provide driver access to it here and NULL it.
> > 
> > Cc: stable 
> > Signed-off-by: Malcolm Priestley 
> > ---
> >  drivers/staging/vt6656/device.h   | 1 +
> >  drivers/staging/vt6656/main_usb.c | 1 +
> >  drivers/staging/vt6656/wcmd.c | 1 +
> >  3 files changed, 3 insertions(+)
> > 
> > diff --git a/drivers/staging/vt6656/device.h 
> > b/drivers/staging/vt6656/device.h
> > index 6074ceda78bf..50e1c8918040 100644
> > --- a/drivers/staging/vt6656/device.h
> > +++ b/drivers/staging/vt6656/device.h
> > @@ -259,6 +259,7 @@ struct vnt_private {
> > u8 mac_hw;
> > /* netdev */
> > struct usb_device *usb;
> > +   struct usb_interface *intf;
> >  
> > u64 tsf_time;
> > u8 rx_rate;
> > diff --git a/drivers/staging/vt6656/main_usb.c 
> > b/drivers/staging/vt6656/main_usb.c
> > index 4a5d741f94f5..9cb924c54571 100644
> > --- a/drivers/staging/vt6656/main_usb.c
> > +++ b/drivers/staging/vt6656/main_usb.c
> > @@ -992,6 +992,7 @@ vt6656_probe(struct usb_interface *intf, const struct 
> > usb_device_id *id)
> > priv = hw->priv;
> > priv->hw = hw;
> > priv->usb = udev;
> > +   priv->intf = intf;
> >  
> > vnt_set_options(priv);
> >  
> > diff --git a/drivers/staging/vt6656/wcmd.c b/drivers/staging/vt6656/wcmd.c
> > index 3eb2f11a5de1..2c5250ca2801 100644
> > --- a/drivers/staging/vt6656/wcmd.c
> > +++ b/drivers/staging/vt6656/wcmd.c
> > @@ -99,6 +99,7 @@ void vnt_run_command(struct work_struct *work)
> > if (vnt_init(priv)) {
> > /* If fail all ends TODO retry */
> > dev_err(>usb->dev, "failed to start\n");
> > +   usb_set_intfdata(priv->intf, NULL);
> > ieee80211_free_hw(priv->hw);
> > return;
> > }
> 
> You set this variable, but never reference it, so how does this change
> any behavior in the driver?

Nevermind, I've looked at the driver, it makes more sense now, sorry for
the noise.

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 5/5] staging: vt6656: set usb_set_intfdata on driver fail.

2020-01-03 Thread Greg Kroah-Hartman
On Fri, Dec 20, 2019 at 09:15:59PM +, Malcolm Priestley wrote:
> intfdata will contain stale pointer when the device is detached after
> failed initialization when referenced in vt6656_disconnect
> 
> Provide driver access to it here and NULL it.
> 
> Cc: stable 
> Signed-off-by: Malcolm Priestley 
> ---
>  drivers/staging/vt6656/device.h   | 1 +
>  drivers/staging/vt6656/main_usb.c | 1 +
>  drivers/staging/vt6656/wcmd.c | 1 +
>  3 files changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h
> index 6074ceda78bf..50e1c8918040 100644
> --- a/drivers/staging/vt6656/device.h
> +++ b/drivers/staging/vt6656/device.h
> @@ -259,6 +259,7 @@ struct vnt_private {
>   u8 mac_hw;
>   /* netdev */
>   struct usb_device *usb;
> + struct usb_interface *intf;
>  
>   u64 tsf_time;
>   u8 rx_rate;
> diff --git a/drivers/staging/vt6656/main_usb.c 
> b/drivers/staging/vt6656/main_usb.c
> index 4a5d741f94f5..9cb924c54571 100644
> --- a/drivers/staging/vt6656/main_usb.c
> +++ b/drivers/staging/vt6656/main_usb.c
> @@ -992,6 +992,7 @@ vt6656_probe(struct usb_interface *intf, const struct 
> usb_device_id *id)
>   priv = hw->priv;
>   priv->hw = hw;
>   priv->usb = udev;
> + priv->intf = intf;
>  
>   vnt_set_options(priv);
>  
> diff --git a/drivers/staging/vt6656/wcmd.c b/drivers/staging/vt6656/wcmd.c
> index 3eb2f11a5de1..2c5250ca2801 100644
> --- a/drivers/staging/vt6656/wcmd.c
> +++ b/drivers/staging/vt6656/wcmd.c
> @@ -99,6 +99,7 @@ void vnt_run_command(struct work_struct *work)
>   if (vnt_init(priv)) {
>   /* If fail all ends TODO retry */
>   dev_err(>usb->dev, "failed to start\n");
> + usb_set_intfdata(priv->intf, NULL);
>   ieee80211_free_hw(priv->hw);
>   return;
>   }

You set this variable, but never reference it, so how does this change
any behavior in the driver?

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 5/5] staging: vt6656: set usb_set_intfdata on driver fail.

2019-12-20 Thread Malcolm Priestley
intfdata will contain stale pointer when the device is detached after
failed initialization when referenced in vt6656_disconnect

Provide driver access to it here and NULL it.

Cc: stable 
Signed-off-by: Malcolm Priestley 
---
 drivers/staging/vt6656/device.h   | 1 +
 drivers/staging/vt6656/main_usb.c | 1 +
 drivers/staging/vt6656/wcmd.c | 1 +
 3 files changed, 3 insertions(+)

diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h
index 6074ceda78bf..50e1c8918040 100644
--- a/drivers/staging/vt6656/device.h
+++ b/drivers/staging/vt6656/device.h
@@ -259,6 +259,7 @@ struct vnt_private {
u8 mac_hw;
/* netdev */
struct usb_device *usb;
+   struct usb_interface *intf;
 
u64 tsf_time;
u8 rx_rate;
diff --git a/drivers/staging/vt6656/main_usb.c 
b/drivers/staging/vt6656/main_usb.c
index 4a5d741f94f5..9cb924c54571 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -992,6 +992,7 @@ vt6656_probe(struct usb_interface *intf, const struct 
usb_device_id *id)
priv = hw->priv;
priv->hw = hw;
priv->usb = udev;
+   priv->intf = intf;
 
vnt_set_options(priv);
 
diff --git a/drivers/staging/vt6656/wcmd.c b/drivers/staging/vt6656/wcmd.c
index 3eb2f11a5de1..2c5250ca2801 100644
--- a/drivers/staging/vt6656/wcmd.c
+++ b/drivers/staging/vt6656/wcmd.c
@@ -99,6 +99,7 @@ void vnt_run_command(struct work_struct *work)
if (vnt_init(priv)) {
/* If fail all ends TODO retry */
dev_err(>usb->dev, "failed to start\n");
+   usb_set_intfdata(priv->intf, NULL);
ieee80211_free_hw(priv->hw);
return;
}
-- 
2.24.0
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel