usb: typec: tcpm: remove tcpm dir if no children
authorLi Jun <jun.li@nxp.com>
Wed, 17 Jul 2019 08:06:46 +0000 (16:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 Jul 2019 09:04:09 +0000 (11:04 +0200)
If config tcpm as module, module unload will not remove tcpm dir,
then the next module load will have problem: the rootdir is NULL
but tcpm dir is still there, so tcpm_debugfs_init() will create
tcpm dir again with failure, fix it by remove the tcpm dir if no
children.

Cc: stable@vger.kernel.org # v4.15+
Fixes: 4b4e02c83167 ("typec: tcpm: Move out of staging")
Signed-off-by: Li Jun <jun.li@nxp.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20190717080646.30421-2-jun.li@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpm.c

index 7b6497c1031e1e717268a8559d6e05c7390c9e1b..ab64566221200004fdcecef48d1b70bd0c4abc40 100644 (file)
@@ -597,6 +597,10 @@ static void tcpm_debugfs_exit(struct tcpm_port *port)
        mutex_unlock(&port->logbuffer_lock);
 
        debugfs_remove(port->dentry);
+       if (list_empty(&rootdir->d_subdirs)) {
+               debugfs_remove(rootdir);
+               rootdir = NULL;
+       }
 }
 
 #else