Message ID | 20210311150354.8723-1-lyl2019@mail.ustc.edu.cn |
---|---|
State | New |
Headers | show |
Series | usb/usbtmc: Remove a redundant kref_put in usbtmc_disconnect | expand |
On Thu, Mar 11, 2021 at 07:03:54AM -0800, Lv Yunlong wrote: > In the implementation of usbtmc_free_int(), it already calls > kref_put() to free the data as shown below. So, in > usbtmc_disconnect, call an extra kref_put() is redundant. > > """ > static void usbtmc_free_int(struct usbtmc_device_data *data) > { > if (!data->iin_ep_present || !data->iin_urb) > return; > usb_kill_urb(data->iin_urb); > kfree(data->iin_buffer); > data->iin_buffer = NULL; > usb_free_urb(data->iin_urb); > data->iin_urb = NULL; > kref_put(&data->kref, usbtmc_delete); > } > """ > > Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn> > --- > drivers/usb/class/usbtmc.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c > index 74d5a9c5238a..adcdd2df1949 100644 > --- a/drivers/usb/class/usbtmc.c > +++ b/drivers/usb/class/usbtmc.c > @@ -2494,7 +2494,6 @@ static void usbtmc_disconnect(struct usb_interface *intf) > } > mutex_unlock(&data->io_mutex); > usbtmc_free_int(data); > - kref_put(&data->kref, usbtmc_delete); Did you test this change? If not, please do so, I think the code is fine as-is. thanks, greg k-h
diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 74d5a9c5238a..adcdd2df1949 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -2494,7 +2494,6 @@ static void usbtmc_disconnect(struct usb_interface *intf) } mutex_unlock(&data->io_mutex); usbtmc_free_int(data); - kref_put(&data->kref, usbtmc_delete); } static void usbtmc_draw_down(struct usbtmc_file_data *file_data)
In the implementation of usbtmc_free_int(), it already calls kref_put() to free the data as shown below. So, in usbtmc_disconnect, call an extra kref_put() is redundant. """ static void usbtmc_free_int(struct usbtmc_device_data *data) { if (!data->iin_ep_present || !data->iin_urb) return; usb_kill_urb(data->iin_urb); kfree(data->iin_buffer); data->iin_buffer = NULL; usb_free_urb(data->iin_urb); data->iin_urb = NULL; kref_put(&data->kref, usbtmc_delete); } """ Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn> --- drivers/usb/class/usbtmc.c | 1 - 1 file changed, 1 deletion(-)