On Wed, Oct 23 2013, Andrzej Pietrasiewicz wrote:
> This will be required in order to use the new function interface
> (usb_get_function_instance/usb_put_function_instance)
>
> Signed-off-by: Andrzej Pietrasiewicz <andrze...@samsung.com>
> Signed-off-by: Kyunmgin Park <kyungmin.p...@samsung.com>
> ---
>  drivers/usb/gadget/f_fs.c  |   41 ++++++++++++++++++++++++++++++++++++
>  drivers/usb/gadget/g_ffs.c |   50 ++++++++++++++++++++++++++-----------------
>  drivers/usb/gadget/u_fs.h  |    2 +
>  3 files changed, 73 insertions(+), 20 deletions(-)

> @@ -175,35 +175,49 @@ static DEFINE_MUTEX(gfs_lock);
>  static unsigned int missing_funcs;
>  static bool gfs_registered;
>  static bool gfs_single_func;
> -static struct ffs_dev *ffs_tab;
> +static struct ffs_dev **ffs_tab;
>  
>  static int __init gfs_init(void)
>  {
>       int i;
> +     int ret = 0;
>  
>       ENTER();
>  
> -     if (!func_num) {
> +     if (func_num < 2) {
>               gfs_single_func = true;
>               func_num = 1;
>       }
>  
> -     ffs_tab = kcalloc(func_num, sizeof *ffs_tab, GFP_KERNEL);
> +     ffs_tab = kcalloc(func_num, sizeof(ffs_tab), GFP_KERNEL);

What just happened here? I'm pretty sure the star is required.

>       if (!ffs_tab)
>               return -ENOMEM;
>  
> -     if (!gfs_single_func)
> -             for (i = 0; i < func_num; i++)
> -                     ffs_tab[i].name = func_names[i];
> +     for (i = 0; i < func_num; i++) {
> +             ffs_tab[i] = ffs_alloc_dev();
> +             if (IS_ERR(ffs_tab[i])) {
> +                     ret = PTR_ERR(ffs_tab[i]);
> +                     goto no_dev;
> +             }
> +             if (!gfs_single_func)
> +                     ffs_tab[i]->name = func_names[i];
> +     }
>  
>       missing_funcs = func_num;
>  
>       return functionfs_init();
> +no_dev:
> +     while (--i >= 0)
> +             ffs_free_dev(ffs_tab[i]);
> +     kfree(ffs_tab);
> +     return ret;
>  }
>  module_init(gfs_init);
>  
>  static void __exit gfs_exit(void)
>  {
> +     int i;
> +
>       ENTER();
>       mutex_lock(&gfs_lock);
>  

Attachment: signature.asc
Description: PGP signature

Reply via email to