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;
hci_del_sysfs(hdev);
+ debugfs_remove_recursive(hdev->debugfs);
+
destroy_workqueue(hdev->workqueue);
destroy_workqueue(hdev->req_workqueue);
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);
}