Re: [PATCH 3/3] usb: gadget: storage: Remove EXPORT_SYMBOL_GPL for kref_{put, get}

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Getting rid of kref seems sensible to me. Reference counting used to
be needed because sharing of fsg_common among multiple USB function
instances was handled by fsg. Now this is handled by configfs layer
and I don’t think the kref is necessary any more.

2018-06-14 19:23 GMT+01:00 Jaejoong Kim <climbbb.kim@xxxxxxxxx>:
> Thanks for the review it.
>
> 2018년 6월 14일 (목) 오후 11:48, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>님이 작성:
>>
>> On Thu, 14 Jun 2018, Jaejoong Kim wrote:
>>
>> > Removing EXPORT_SYMBOL_GPL from kref_{put, get} since it is used
>> > only in f_mass_storage
>> >
>> > Signed-off-by: Jaejoong Kim <climbbb.kim@xxxxxxxxx>
>>
>> This is only a partial solution.  In fact, fsg_common_get() isn't used
>> anywhere, and fsg_common_put() is used in only one place.
>
> Right. Actually my first approach was to remove fsg_common_get/put and just
> use kref APIs(kref_get/put). But I kept current codes because this module author
> might have another reason.
>
>>
>> It would be better to remove those two routines, get rid of common->ref
>> entirely, and make fsg_free_inst() call fsg_common_release() directly.
>
> Hm.. If you want to call fsg_common_release () in fsg_free_inst (),
> the struct kref
> in this moduel is meaningless. I prefer hold kref and just use kref APIs not
> fsg_common_get/put.
>
> Thanks, Jaejoong
>>
>> Alan Stern
>>
>> > ---
>> >  drivers/usb/gadget/function/f_mass_storage.c | 6 ++----
>> >  drivers/usb/gadget/function/f_mass_storage.h | 4 ----
>> >  2 files changed, 2 insertions(+), 8 deletions(-)
>> >
>> > diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
>> > index b6e2930..ba0eb7e 100644
>> > --- a/drivers/usb/gadget/function/f_mass_storage.c
>> > +++ b/drivers/usb/gadget/function/f_mass_storage.c
>> > @@ -2558,17 +2558,15 @@ static void fsg_lun_release(struct device *dev)
>> >       /* Nothing needs to be done */
>> >  }
>> >
>> > -void fsg_common_get(struct fsg_common *common)
>> > +static void __maybe_unused 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)
>> > +static 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)
>> >  {
>> > 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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux