Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg}
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 3 Mar 2022 21:11:57 +0000 (13:11 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Apr 2022 18:59:08 +0000 (20:59 +0200)
[ Upstream commit 9b392e0e0b6d026da5a62bb79a08f32e27af858e ]

This fixes attemting to print hdev->name directly which causes them to
print an error:

kernel: read_version:367: (efault): sock 000000006a3008f2

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/net/bluetooth/bluetooth.h

index 9125eff..3fecc4a 100644 (file)
@@ -180,19 +180,21 @@ void bt_err_ratelimited(const char *fmt, ...);
 #define BT_DBG(fmt, ...)       pr_debug(fmt "\n", ##__VA_ARGS__)
 #endif
 
+#define bt_dev_name(hdev) ((hdev) ? (hdev)->name : "null")
+
 #define bt_dev_info(hdev, fmt, ...)                            \
-       BT_INFO("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       BT_INFO("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 #define bt_dev_warn(hdev, fmt, ...)                            \
-       BT_WARN("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       BT_WARN("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 #define bt_dev_err(hdev, fmt, ...)                             \
-       BT_ERR("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       BT_ERR("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 #define bt_dev_dbg(hdev, fmt, ...)                             \
-       BT_DBG("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       BT_DBG("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 
 #define bt_dev_warn_ratelimited(hdev, fmt, ...)                        \
-       bt_warn_ratelimited("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       bt_warn_ratelimited("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 #define bt_dev_err_ratelimited(hdev, fmt, ...)                 \
-       bt_err_ratelimited("%s: " fmt, (hdev)->name, ##__VA_ARGS__)
+       bt_err_ratelimited("%s: " fmt, bt_dev_name(hdev), ##__VA_ARGS__)
 
 /* Connection and socket states */
 enum {