firmware: dmi-sysfs: Remove "dmi" directory on module exit
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 5 Dec 2013 23:46:35 +0000 (16:46 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Dec 2013 02:23:42 +0000 (18:23 -0800)
With CONFIG_DEBUG_KOBJECT_RELEASE=y, removing and immediately reloading the
dmi-sysfs module causes the following warning:

  sysfs: cannot create duplicate filename '/firmware/dmi'
  kobject_add_internal failed for dmi with -EEXIST, don't try to register things with the same name in the same directory.

The "dmi" directory stays in sysfs until the dmi_kobj is released, and
DEBUG_KOBJECT_RELEASE delays that.

I don't think we can hit this problem in normal usage because dmi_kobj is
static and nothing outside dmi-sysfs can get a reference to it, so the
only way to delay the "dmi" release is with DEBUG_KOBJECT_RELEASE.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/firmware/dmi-sysfs.c

index 66200ed5e6a13104f293c0f6fcb3e688711e6a8c..e0f1cb3d3598dab3a3c69386c73c5690b21e28cf 100644 (file)
@@ -685,6 +685,7 @@ static void __exit dmi_sysfs_exit(void)
        pr_debug("dmi-sysfs: unloading.\n");
        cleanup_entry_list();
        kset_unregister(dmi_kset);
+       kobject_del(dmi_kobj);
        kobject_put(dmi_kobj);
 }