Hi Michał,

W dniu 07.04.2016 o 18:40, Michal Nazarewicz pisze:
On Thu, 7 Apr 2016, Michal Nazarewicz wrote:
This makes me suspect it’s not possible to link a function instance to
the same configuration twice, but now that I think about it, I’m not
quite sure what would happen if one did:

        ln -s functions/mass_storage.0 configs/c.1/foo
        ln -s functions/mass_storage.0 configs/c.1/bar

On Thu, Apr 07 2016, Alan Stern wrote:
Do you think it would be worthwhile to check for this possibility in
the driver and report an error?

I think this should be (if it isn’t already) blocked on configfs side.
I cannot see a legitimate use of such configuration and I wouldn’t be
surprised if other function drivers broke as well.


Sorry about late response.

The function responsible for verifying if a symlink can be made is
in drivers/usb/gadget/configfs.c: config_usb_cfg_link()

There is a comment from the author:

        /*
         * Make sure this function is from within our _this_ gadget and not
         * from another gadget or a random directory.
         * Also a function instance can only be linked once.
         */

This is the code fragment of interest:

        list_for_each_entry(f, &cfg->func_list, list) {
                if (f->fi == fi) {
                        ret = -EEXIST;
                        goto out;
                }
        }


AP

Reply via email to