On Wed, 4 Jul 2018, Jaejoong Kim wrote: > The kref used to be needed because sharing of fsg_common among multiple USB > function instances was handled by fsg. Now this is managed by configfs, we > don't need it anymore. So let's eliminate kref from this driver. > > Signed-off-by: Jaejoong Kim <climbbb.kim@xxxxxxxxx> Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > --- > Changes in V2: > - Rewrite commit title & message. > - Remove kref instead of removing unused kref EXPORT_SYMBOL (Alan and Michal) > > V1 patches > https://patchwork.kernel.org/patch/10463709/ > https://patchwork.kernel.org/patch/10463713/ > > drivers/usb/gadget/function/f_mass_storage.c | 27 +++++---------------------- > drivers/usb/gadget/function/f_mass_storage.h | 4 ---- > 2 files changed, 5 insertions(+), 26 deletions(-) > > diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c > index 1b580eb..ca8a4b5 100644 > --- a/drivers/usb/gadget/function/f_mass_storage.c > +++ b/drivers/usb/gadget/function/f_mass_storage.c > @@ -206,7 +206,6 @@ > #include <linux/fcntl.h> > #include <linux/file.h> > #include <linux/fs.h> > -#include <linux/kref.h> > #include <linux/kthread.h> > #include <linux/sched/signal.h> > #include <linux/limits.h> > @@ -312,8 +311,6 @@ struct fsg_common { > void *private_data; > > char inquiry_string[INQUIRY_STRING_LEN]; > - > - struct kref ref; > }; > > struct fsg_dev { > @@ -2551,25 +2548,11 @@ static DEVICE_ATTR(file, 0, file_show, file_store); > > /****************************** FSG COMMON ******************************/ > > -static void fsg_common_release(struct kref *ref); > - > static void fsg_lun_release(struct device *dev) > { > /* Nothing needs to be done */ > } > > -void fsg_common_get(struct fsg_common *common) > -{ > - kref_get(&common->ref); > -} > -EXPORT_SYMBOL_GPL(fsg_common_get); > - > -void fsg_common_put(struct fsg_common *common) > -{ > - kref_put(&common->ref, fsg_common_release); > -} > -EXPORT_SYMBOL_GPL(fsg_common_put); > - > static struct fsg_common *fsg_common_setup(struct fsg_common *common) > { > if (!common) { > @@ -2582,7 +2565,6 @@ static struct fsg_common *fsg_common_setup(struct fsg_common *common) > } > init_rwsem(&common->filesem); > spin_lock_init(&common->lock); > - kref_init(&common->ref); > init_completion(&common->thread_notifier); > init_waitqueue_head(&common->io_wait); > init_waitqueue_head(&common->fsg_wait); > @@ -2870,9 +2852,8 @@ void fsg_common_set_inquiry_string(struct fsg_common *common, const char *vn, > } > EXPORT_SYMBOL_GPL(fsg_common_set_inquiry_string); > > -static void fsg_common_release(struct kref *ref) > +static void fsg_common_release(struct fsg_common *common) > { > - struct fsg_common *common = container_of(ref, struct fsg_common, ref); > int i; > > /* If the thread isn't already dead, tell it to exit now */ > @@ -3346,7 +3327,7 @@ static void fsg_free_inst(struct usb_function_instance *fi) > struct fsg_opts *opts; > > opts = fsg_opts_from_func_inst(fi); > - fsg_common_put(opts->common); > + fsg_common_release(opts->common); > kfree(opts); > } > > @@ -3370,7 +3351,7 @@ static struct usb_function_instance *fsg_alloc_inst(void) > rc = fsg_common_set_num_buffers(opts->common, > CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS); > if (rc) > - goto release_opts; > + goto release_common; > > pr_info(FSG_DRIVER_DESC ", version: " FSG_DRIVER_VERSION "\n"); > > @@ -3393,6 +3374,8 @@ static struct usb_function_instance *fsg_alloc_inst(void) > > release_buffers: > fsg_common_free_buffers(opts->common); > +release_common: > + kfree(opts->common); > release_opts: > kfree(opts); > return ERR_PTR(rc); > diff --git a/drivers/usb/gadget/function/f_mass_storage.h b/drivers/usb/gadget/function/f_mass_storage.h > index 58857fc..3b8c4ce 100644 > --- a/drivers/usb/gadget/function/f_mass_storage.h > +++ b/drivers/usb/gadget/function/f_mass_storage.h > @@ -115,10 +115,6 @@ fsg_opts_from_func_inst(const struct usb_function_instance *fi) > return container_of(fi, struct fsg_opts, func_inst); > } > > -void fsg_common_get(struct fsg_common *common); > - > -void fsg_common_put(struct fsg_common *common); > - > void fsg_common_set_sysfs(struct fsg_common *common, bool sysfs); > > int fsg_common_set_num_buffers(struct fsg_common *common, unsigned int n); > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html