Re: [PATCH 5/5] staging: vt6656: set usb_set_intfdata on driver fail.
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.
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.
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