summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-17 17:24:17 -0700
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-18 10:45:45 +0300
commit0153e2ecab657be17aaecca234b29c1154a98202 (patch)
tree40b5ea1fabd7ff59a7708060f54cbc8179cf0136
parent1120e4bfa5f9c28cb55d815ab3c6bed81dfc595c (diff)
Bluetooth: Create HCI device debugfs directory in hci_register_dev
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>
-rw-r--r--net/bluetooth/hci_core.c5
-rw-r--r--net/bluetooth/hci_sysfs.c16
2 files changed, 6 insertions, 15 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 0fb9f6d1f60f..f7ba81885b42 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -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);
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c
index 077037e7f912..0e71318b0c82 100644
--- a/net/bluetooth/hci_sysfs.c
+++ b/net/bluetooth/hci_sysfs.c
@@ -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);
}