On Fri, Nov 22 2013, Andrzej Pietrasiewicz wrote:
> This is required in order to integrate configfs support.
> f_fs needs to be a separately compiled module and so it needs to use the new
> interface.
>
> Signed-off-by: Andrzej Pietrasiewicz <andrze...@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.p...@samsung.com>

Acked-by: Michal Nazarewicz <min...@mina86.com>


> @@ -496,6 +297,7 @@ static ssize_t ffs_ep0_write(struct file *file, const 
> char __user *buf,
>                       mutex_unlock(&ffs->mutex);
>  
>                       ret = ffs_ready(ffs);
> +
>                       if (unlikely(ret < 0)) {
>                               ffs->state = FFS_CLOSING;
>                               return ret;

There are couple of hunks like this one which just make the patch longer
then it should be.  Just an observation.

> @@ -2226,8 +2031,59 @@ static int __ffs_func_bind_do_nums(enum 
> ffs_entity_type type, u8 *valuep,
>       return 0;
>  }
>  
> -static int ffs_func_bind(struct usb_configuration *c,
> -                      struct usb_function *f)
> +#ifndef USB_FFS_INCLUDED
> +static inline struct f_fs_opts *ffs_do_functionfs_bind(struct usb_function 
> *f,
> +                                             struct usb_configuration *c)
> +{
> +     struct ffs_function *func = ffs_func_from_usb(f);
> +     struct f_fs_opts *ffs_opts =
> +             container_of(f->fi, struct f_fs_opts, func_inst);
> +     int ret;
> +
> +     ENTER();
> +
> +     /*
> +      * Legacy gadget triggers binding in functionfs_ready_callback,
> +      * which already uses locking; taking the same lock here would
> +      * cause a deadlock.
> +      *
> +      * Configfs-enabled gadgets however do need ffs_dev_lock.
> +      */
> +     if (!ffs_opts->no_configfs)
> +             ffs_dev_lock();

Could this condition be hidden inside ffs_dev_lock?  On the other hand,
since this is a transitional state, maybe it's not worth it to make it
perfect.

> +     ret = ffs_opts->dev->desc_ready ? 0 : -ENODEV;
> +     func->ffs = ffs_opts->dev->ffs_data;
> +     if (!ffs_opts->no_configfs)
> +             ffs_dev_unlock();
> +     if (ret)
> +             return ERR_PTR(ret);

> @@ -2482,11 +2355,17 @@ void ffs_dev_lock(void)
>  {
>       mutex_lock(&ffs_lock);
>  }
> +#ifndef USB_FFS_INCLUDED
> +EXPORT_SYMBOL(ffs_dev_lock);
> +#endif
>  
>  void ffs_dev_unlock(void)
>  {
>       mutex_unlock(&ffs_lock);
>  }
> +#ifndef USB_FFS_INCLUDED
> +EXPORT_SYMBOL(ffs_dev_unlock);
> +#endif

Right…  Like I wrote before, I think ffs_lock should be exported and
those functions should be static inline in header file.


-- 
Best regards,                                         _     _
.o. | Liege of Serenely Enlightened Majesty of      o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz    (o o)
ooo +--<m...@google.com>--<xmpp:min...@jabber.org>--ooO--(_)--Ooo--

Attachment: signature.asc
Description: PGP signature

Reply via email to