| From 1db4564f101b47188c1b71696bd342ef09172b22 Mon Sep 17 00:00:00 2001 |
| From: Aaron Thompson <dev@aaront.org> |
| Date: Fri, 4 Oct 2024 23:04:10 +0000 |
| Subject: Bluetooth: Remove debugfs directory on module init failure |
| |
| From: Aaron Thompson <dev@aaront.org> |
| |
| commit 1db4564f101b47188c1b71696bd342ef09172b22 upstream. |
| |
| If bt_init() fails, the debugfs directory currently is not removed. If |
| the module is loaded again after that, the debugfs directory is not set |
| up properly due to the existing directory. |
| |
| # modprobe bluetooth |
| # ls -laF /sys/kernel/debug/bluetooth |
| total 0 |
| drwxr-xr-x 2 root root 0 Sep 27 14:26 ./ |
| drwx------ 31 root root 0 Sep 27 14:25 ../ |
| -r--r--r-- 1 root root 0 Sep 27 14:26 l2cap |
| -r--r--r-- 1 root root 0 Sep 27 14:26 sco |
| # modprobe -r bluetooth |
| # ls -laF /sys/kernel/debug/bluetooth |
| ls: cannot access '/sys/kernel/debug/bluetooth': No such file or directory |
| # |
| |
| # modprobe bluetooth |
| modprobe: ERROR: could not insert 'bluetooth': Invalid argument |
| # dmesg | tail -n 6 |
| Bluetooth: Core ver 2.22 |
| NET: Registered PF_BLUETOOTH protocol family |
| Bluetooth: HCI device and connection manager initialized |
| Bluetooth: HCI socket layer initialized |
| Bluetooth: Faking l2cap_init() failure for testing |
| NET: Unregistered PF_BLUETOOTH protocol family |
| # ls -laF /sys/kernel/debug/bluetooth |
| total 0 |
| drwxr-xr-x 2 root root 0 Sep 27 14:31 ./ |
| drwx------ 31 root root 0 Sep 27 14:26 ../ |
| # |
| |
| # modprobe bluetooth |
| # dmesg | tail -n 7 |
| Bluetooth: Core ver 2.22 |
| debugfs: Directory 'bluetooth' with parent '/' already present! |
| NET: Registered PF_BLUETOOTH protocol family |
| Bluetooth: HCI device and connection manager initialized |
| Bluetooth: HCI socket layer initialized |
| Bluetooth: L2CAP socket layer initialized |
| Bluetooth: SCO socket layer initialized |
| # ls -laF /sys/kernel/debug/bluetooth |
| total 0 |
| drwxr-xr-x 2 root root 0 Sep 27 14:31 ./ |
| drwx------ 31 root root 0 Sep 27 14:26 ../ |
| # |
| |
| Cc: stable@vger.kernel.org |
| Fixes: ffcecac6a738 ("Bluetooth: Create root debugfs directory during module init") |
| Signed-off-by: Aaron Thompson <dev@aaront.org> |
| Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/bluetooth/af_bluetooth.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/net/bluetooth/af_bluetooth.c |
| +++ b/net/bluetooth/af_bluetooth.c |
| @@ -773,6 +773,7 @@ cleanup_sysfs: |
| bt_sysfs_cleanup(); |
| cleanup_led: |
| bt_leds_cleanup(); |
| + debugfs_remove_recursive(bt_debugfs); |
| return err; |
| } |
| |