On Tue, May 29, 2018 at 05:30:47PM +0200, Greg Kroah-Hartman wrote: > When calling debugfs functions, there is no need to ever check the > return value. The function can work or not, but the code logic should > never do something different based on this. > > Clean up the fsusb302 driver to not care about the dentry being created, > or if the root directory was created, as the code should work properly > either way. We do not need to save the dentry anymore as things are > properly cleaned up when we remove the root directory. > > Note, this driver seems to only work for one device per system, > otherwise the debugfs directories are going to get confused when a > device is removed. > > Cc: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > Cc: Guenter Roeck <linux@xxxxxxxxxxxx> > Cc: Hans de Goede <hdegoede@xxxxxxxxxx> > Cc: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Cc: Adam Thomson <Adam.Thomson.Opensource@xxxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/usb/typec/fusb302/fusb302.c | 24 +++++++----------------- > 1 file changed, 7 insertions(+), 17 deletions(-) > > diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c > index 9c1eba9ea004..07b07ddf6af0 100644 > --- a/drivers/usb/typec/fusb302/fusb302.c > +++ b/drivers/usb/typec/fusb302/fusb302.c > @@ -117,7 +117,6 @@ struct fusb302_chip { > u32 snk_pdo[PDO_MAX_OBJECTS]; > > #ifdef CONFIG_DEBUG_FS > - struct dentry *dentry; > /* lock for log buffer access */ > struct mutex logbuffer_lock; > int logbuffer_head; > @@ -215,33 +214,26 @@ DEFINE_SHOW_ATTRIBUTE(fusb302_debug); > > static struct dentry *rootdir; > > -static int fusb302_debugfs_init(struct fusb302_chip *chip) > +static void fusb302_debugfs_init(struct fusb302_chip *chip) > { > mutex_init(&chip->logbuffer_lock); > - if (!rootdir) { > + if (!rootdir) > rootdir = debugfs_create_dir("fusb302", NULL); > - if (!rootdir) > - return -ENOMEM; > - } > - > - chip->dentry = debugfs_create_file(dev_name(chip->dev), > - S_IFREG | 0444, rootdir, > - chip, &fusb302_debug_fops); > > - return 0; > + debugfs_create_file(dev_name(chip->dev), S_IFREG | 0444, rootdir, chip, > + &fusb302_debug_fops); > } > > static void fusb302_debugfs_exit(struct fusb302_chip *chip) > { > - debugfs_remove(chip->dentry); > - debugfs_remove(rootdir); > + debugfs_remove_recursive(rootdir); The idea was that debugfs_remove() would only remove the root directory if nothing else was in it. This was the reason for the preceding debugfs_remove(chip->dentry) followed by debugfs_remove(). Your patch changes this behavior. "... this driver seems to only work for one device per system" is introduced by your patch and was not previously the case. Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html