• Michal Nazarewicz's avatar
    usb: gadget: f_fs: simplify ffs_dev name handling · ea920bb4
    Michal Nazarewicz authored
    Currently ffs_dev::name can be either allocated by the client of
    the ffs_dev structure or by the f_fs.c core itself.  The former
    is used by g_ffs while the latter happens with configfs.
    
    Historically, g_ffs did not need to allocate separate buffer for
    the name so what is now f_fs.c core never cared about freeing
    that space.  With configfs the name needs to be copied since the
    memory is not guaranteed to be availeble after ffs_set_inst_name
    finishes.
    
    The complication is therefore here to avoid allocations in the
    g_ffs case but it complicates the code inproportinally to
    benefits it provides.  In particular, g_ffs is considered
    ‘legacy’ so optimising for its sake is unlikely to be worth the
    effort.
    
    With that observation in mind, simplify the code by unifying the
    code paths in g_ffs and configfs paths.  Furthermore, instead of
    allocating a new buffer for the name, simply embed it in the
    ffs_dev structure.  This further makes the memory management
    less convoluted and error-prone.
    
    The configfs interface for functionfs imposed a limit of 40
    characters for the name so this results in a 41-byte buffer
    added to the structure.  (For short names this may lead to
    wasted memory but the actual amount is not immediately obvious
    and depends on pointer size and which slab buckets the structure
    and name would fall into).
    Signed-off-by: default avatarMichal Nazarewicz <mina86@mina86.com>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    ea920bb4
u_fs.h 8.2 KB