diff mbox

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

Message ID 1528968239-2447-4-git-send-email-climbbb.kim@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jaejoong Kim June 14, 2018, 9:23 a.m. UTC
Removing EXPORT_SYMBOL_GPL from kref_{put, get} since it is used
only in f_mass_storage

Signed-off-by: Jaejoong Kim <climbbb.kim@gmail.com>
---
 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(-)

Comments

Alan Stern June 14, 2018, 2:48 p.m. UTC | #1
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@gmail.com>

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.

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.

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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sergei Shtylyov June 14, 2018, 6:14 p.m. UTC | #2
Hello!

On 06/14/2018 12:23 PM, Jaejoong Kim wrote:

> Removing EXPORT_SYMBOL_GPL from kref_{put, get} since it is used

   I thought you removed the exports from the real kref_{get|put}(). :-)
Your patch subject and description are simply misleading the way they are
written.

> only in f_mass_storage
> 
> Signed-off-by: Jaejoong Kim <climbbb.kim@gmail.com>
> ---
>  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)
>  {
[...]

MBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaejoong Kim June 14, 2018, 6:23 p.m. UTC | #3
Thanks for the review it.

2018년 6월 14일 (목) 오후 11:48, Alan Stern <stern@rowland.harvard.edu>님이 작성:
>
> 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@gmail.com>
>
> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaejoong Kim June 14, 2018, 6:26 p.m. UTC | #4
2018년 6월 15일 (금) 오전 3:14, Sergei Shtylyov
<sergei.shtylyov@cogentembedded.com>님이 작성:
>
> Hello!
>
> On 06/14/2018 12:23 PM, Jaejoong Kim wrote:
>
> > Removing EXPORT_SYMBOL_GPL from kref_{put, get} since it is used
>
>    I thought you removed the exports from the real kref_{get|put}(). :-)
> Your patch subject and description are simply misleading the way they are
> written.

Thanks, I will update with V2.
>
> > only in f_mass_storage
> >
> > Signed-off-by: Jaejoong Kim <climbbb.kim@gmail.com>
> > ---
> >  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)
> >  {
> [...]
>
> MBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alan Stern June 14, 2018, 9:09 p.m. UTC | #5
On Fri, 15 Jun 2018, Jaejoong Kim wrote:

> Thanks for the review it.
> 
> 2018년 6월 14일 (목) 오후 11:48, Alan Stern <stern@rowland.harvard.edu>님이 작성:
> >
> > 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@gmail.com>
> >
> > 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.

Michal Nazarewicz is the author of this part of the driver.  He should
make the decision of whether to keep the kref or eliminate it.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michał Nazarewicz June 26, 2018, 8:54 a.m. UTC | #6
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@gmail.com>:
> Thanks for the review it.
>
> 2018년 6월 14일 (목) 오후 11:48, Alan Stern <stern@rowland.harvard.edu>님이 작성:
>>
>> 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@gmail.com>
>>
>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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);