Bluetooth: Create HCI device debugfs directory in hci_register_dev
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 18 Oct 2013 00:24:17 +0000 (17:24 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 18 Oct 2013 07:45:45 +0000 (10:45 +0300)
Create the debugfs directory for each HCI device directly in
hci_register_dev function and remove it during hci_unregister_dev.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/hci_core.c
net/bluetooth/hci_sysfs.c

index 0fb9f6d..f7ba818 100644 (file)
@@ -2479,6 +2479,9 @@ int hci_register_dev(struct hci_dev *hdev)
                goto err;
        }
 
+       if (!IS_ERR_OR_NULL(bt_debugfs))
+               hdev->debugfs = debugfs_create_dir(hdev->name, bt_debugfs);
+
        error = hci_add_sysfs(hdev);
        if (error < 0)
                goto err_wqueue;
@@ -2569,6 +2572,8 @@ void hci_unregister_dev(struct hci_dev *hdev)
 
        hci_del_sysfs(hdev);
 
+       debugfs_remove_recursive(hdev->debugfs);
+
        destroy_workqueue(hdev->workqueue);
        destroy_workqueue(hdev->req_workqueue);
 
index 077037e..0e71318 100644 (file)
@@ -409,32 +409,18 @@ void hci_init_sysfs(struct hci_dev *hdev)
 int hci_add_sysfs(struct hci_dev *hdev)
 {
        struct device *dev = &hdev->dev;
-       int err;
 
        BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
 
        dev_set_name(dev, "%s", hdev->name);
 
-       err = device_add(dev);
-       if (err < 0)
-               return err;
-
-       if (!bt_debugfs)
-               return 0;
-
-       hdev->debugfs = debugfs_create_dir(hdev->name, bt_debugfs);
-       if (!hdev->debugfs)
-               return 0;
-
-       return 0;
+       return device_add(dev);
 }
 
 void hci_del_sysfs(struct hci_dev *hdev)
 {
        BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
 
-       debugfs_remove_recursive(hdev->debugfs);
-
        device_del(&hdev->dev);
 }