mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH bluetooth v1] Bluetooth: hci_core: Initialize LTK before publication
@ 2026-10-19 10:56 Binbin Deng
  2026-10-20 18:20 ` patchwork-bot+bluetooth
  0 siblings, 1 reply; 2+ messages in thread
From: Binbin Deng @ 2026-10-19 10:56 UTC (permalink / raw)
  To: marcel, luiz.dentz, johan.hedberg
  Cc: linux-bluetooth, linux-kernel, Binbin Deng

hci_add_ltk() publishes a newly allocated LTK on hdev->long_term_keys
before initializing its address, type, value, authentication state,
encryption size, EDIV, and random value.  hci_find_ltk() and the debugfs
long_term_keys_show() traverse this list under RCU and can therefore see
a zero or partially initialized key before those stores complete.

The race is reachable by racing an LTK addition with another CPU looking
up or dumping long-term keys.  For example, userspace can issue
MGMT_OP_LOAD_LONG_TERM_KEYS while another process reads the corresponding
debugfs file.

Initialize all fields of a new LTK before list_add_rcu() makes it visible
to RCU readers.  Existing LTKs remain published and continue to be updated
in place.

Found during a static-analysis-assisted audit: candidate sites were
surfaced by a Coccinelle rule, and the reader/writer paths were
confirmed by LLM-assisted (GLM-5.3) code inspection.  The issue was
not observed at runtime; it is identified by code inspection only.

Fixes: 970d0f1b2803 ("Bluetooth: Convert LTK list to RCU")
Assisted-by: GLM-5.3 coccinelle
Signed-off-by: Binbin Deng <18983559317@163.com>
---
 net/bluetooth/hci_core.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index d183efaf9063..9500da51af85 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1297,7 +1297,6 @@ struct smp_ltk *hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr,
 		key = kzalloc_obj(*key);
 		if (!key)
 			return NULL;
-		list_add_rcu(&key->list, &hdev->long_term_keys);
 	}
 
 	bacpy(&key->bdaddr, bdaddr);
@@ -1309,6 +1308,9 @@ struct smp_ltk *hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr,
 	key->enc_size = enc_size;
 	key->type = type;
 
+	if (!old_key)
+		list_add_rcu(&key->list, &hdev->long_term_keys);
+
 	return key;
 }
 
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH bluetooth v1] Bluetooth: hci_core: Initialize LTK before publication
  2026-10-19 10:56 [PATCH bluetooth v1] Bluetooth: hci_core: Initialize LTK before publication Binbin Deng
@ 2026-10-20 18:20 ` patchwork-bot+bluetooth
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+bluetooth @ 2026-10-20 18:20 UTC (permalink / raw)
  To: Binbin Deng
  Cc: marcel, luiz.dentz, johan.hedberg, linux-bluetooth, linux-kernel

Hello:

This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Mon, 19 Oct 2026 18:56:24 +0800 you wrote:
> hci_add_ltk() publishes a newly allocated LTK on hdev->long_term_keys
> before initializing its address, type, value, authentication state,
> encryption size, EDIV, and random value.  hci_find_ltk() and the debugfs
> long_term_keys_show() traverse this list under RCU and can therefore see
> a zero or partially initialized key before those stores complete.
> 
> The race is reachable by racing an LTK addition with another CPU looking
> up or dumping long-term keys.  For example, userspace can issue
> MGMT_OP_LOAD_LONG_TERM_KEYS while another process reads the corresponding
> debugfs file.
> 
> [...]

Here is the summary with links:
  - [v1] Bluetooth: hci_core: Initialize LTK before publication
    https://git.kernel.org/bluetooth/bluetooth-next/c/fd0191d9375d

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-20 18:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-19 10:56 [PATCH bluetooth v1] Bluetooth: hci_core: Initialize LTK before publication Binbin Deng
2026-10-20 18:20 ` patchwork-bot+bluetooth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®