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

Greg Kroah-Hartman gregkh at linuxfoundation.org
Fri Jan 3 10:03:18 UTC 2020


On Fri, Jan 03, 2020 at 11:01:59AM +0100, Greg Kroah-Hartman wrote:
> On Fri, Dec 20, 2019 at 09:15:59PM +0000, 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 <stable at vger.kernel.org>
> > Signed-off-by: Malcolm Priestley <tvboxspy at gmail.com>
> > ---
> >  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(&priv->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


More information about the devel mailing list