diff mbox

[V2,2/2] usb: gadget: storage: Remove reference counting

Message ID 1530679888-19939-3-git-send-email-climbbb.kim@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jaejoong Kim July 4, 2018, 4:51 a.m. UTC
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@gmail.com>
---
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(-)

Comments

MichaƂ Nazarewicz July 5, 2018, 7:33 a.m. UTC | #1
Acked-by: Michal Nazarewicz <mina86@mina86.com>

2018-07-04 5:51 GMT+01:00 Jaejoong Kim <climbbb.kim@gmail.com>:
> 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@gmail.com>
> ---
> 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);
> --
> 2.7.4
>
--
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 July 5, 2018, 2:09 p.m. UTC | #2
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@gmail.com>

Acked-by: Alan Stern <stern@rowland.harvard.edu>

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