From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
syzbot+10bd8fe6741eedd2be2e@syzkaller.appspotmail.com,
Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
Dan Carpenter <dan.carpenter@linaro.org>
Subject: [PATCH 6.6 159/166] Bluetooth: L2CAP: Fix corrupted list in hci_chan_del
Date: Wed, 19 Mar 2025 07:32:10 -0700 [thread overview]
Message-ID: <20250319143024.337092602@linuxfoundation.org> (raw)
In-Reply-To: <20250319143019.983527953@linuxfoundation.org>
6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
commit ab4eedb790cae44313759b50fe47da285e2519d5 upstream.
This fixes the following trace by reworking the locking of l2cap_conn
so instead of only locking when changing the chan_l list this promotes
chan_lock to a general lock of l2cap_conn so whenever it is being held
it would prevents the likes of l2cap_conn_del to run:
list_del corruption, ffff888021297e00->prev is LIST_POISON2 (dead000000000122)
------------[ cut here ]------------
kernel BUG at lib/list_debug.c:61!
Oops: invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 1 UID: 0 PID: 5896 Comm: syz-executor213 Not tainted 6.14.0-rc1-next-20250204-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/27/2024
RIP: 0010:__list_del_entry_valid_or_report+0x12c/0x190 lib/list_debug.c:59
Code: 8c 4c 89 fe 48 89 da e8 32 8c 37 fc 90 0f 0b 48 89 df e8 27 9f 14 fd 48 c7 c7 a0 c0 60 8c 4c 89 fe 48 89 da e8 15 8c 37 fc 90 <0f> 0b 4c 89 e7 e8 0a 9f 14 fd 42 80 3c 2b 00 74 08 4c 89 e7 e8 cb
RSP: 0018:ffffc90003f6f998 EFLAGS: 00010246
RAX: 000000000000004e RBX: dead000000000122 RCX: 01454d423f7fbf00
RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff819f077c R09: 1ffff920007eded0
R10: dffffc0000000000 R11: fffff520007eded1 R12: dead000000000122
R13: dffffc0000000000 R14: ffff8880352248d8 R15: ffff888021297e00
FS: 00007f7ace6686c0(0000) GS:ffff8880b8700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f7aceeeb1d0 CR3: 000000003527c000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
__list_del_entry_valid include/linux/list.h:124 [inline]
__list_del_entry include/linux/list.h:215 [inline]
list_del_rcu include/linux/rculist.h:168 [inline]
hci_chan_del+0x70/0x1b0 net/bluetooth/hci_conn.c:2858
l2cap_conn_free net/bluetooth/l2cap_core.c:1816 [inline]
kref_put include/linux/kref.h:65 [inline]
l2cap_conn_put+0x70/0xe0 net/bluetooth/l2cap_core.c:1830
l2cap_sock_shutdown+0xa8a/0x1020 net/bluetooth/l2cap_sock.c:1377
l2cap_sock_release+0x79/0x1d0 net/bluetooth/l2cap_sock.c:1416
__sock_release net/socket.c:642 [inline]
sock_close+0xbc/0x240 net/socket.c:1393
__fput+0x3e9/0x9f0 fs/file_table.c:448
task_work_run+0x24f/0x310 kernel/task_work.c:227
ptrace_notify+0x2d2/0x380 kernel/signal.c:2522
ptrace_report_syscall include/linux/ptrace.h:415 [inline]
ptrace_report_syscall_exit include/linux/ptrace.h:477 [inline]
syscall_exit_work+0xc7/0x1d0 kernel/entry/common.c:173
syscall_exit_to_user_mode_prepare kernel/entry/common.c:200 [inline]
__syscall_exit_to_user_mode_work kernel/entry/common.c:205 [inline]
syscall_exit_to_user_mode+0x24a/0x340 kernel/entry/common.c:218
do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f7aceeaf449
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 41 19 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f7ace668218 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
RAX: fffffffffffffffc RBX: 00007f7acef39328 RCX: 00007f7aceeaf449
RDX: 000000000000000e RSI: 0000000020000100 RDI: 0000000000000004
RBP: 00007f7acef39320 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000003
R13: 0000000000000004 R14: 00007f7ace668670 R15: 000000000000000b
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__list_del_entry_valid_or_report+0x12c/0x190 lib/list_debug.c:59
Code: 8c 4c 89 fe 48 89 da e8 32 8c 37 fc 90 0f 0b 48 89 df e8 27 9f 14 fd 48 c7 c7 a0 c0 60 8c 4c 89 fe 48 89 da e8 15 8c 37 fc 90 <0f> 0b 4c 89 e7 e8 0a 9f 14 fd 42 80 3c 2b 00 74 08 4c 89 e7 e8 cb
RSP: 0018:ffffc90003f6f998 EFLAGS: 00010246
RAX: 000000000000004e RBX: dead000000000122 RCX: 01454d423f7fbf00
RDX: 0000000000000000 RSI: 0000000080000000 RDI: 0000000000000000
RBP: dffffc0000000000 R08: ffffffff819f077c R09: 1ffff920007eded0
R10: dffffc0000000000 R11: fffff520007eded1 R12: dead000000000122
R13: dffffc0000000000 R14: ffff8880352248d8 R15: ffff888021297e00
FS: 00007f7ace6686c0(0000) GS:ffff8880b8600000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f7acef05b08 CR3: 000000003527c000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Reported-by: syzbot+10bd8fe6741eedd2be2e@syzkaller.appspotmail.com
Tested-by: syzbot+10bd8fe6741eedd2be2e@syzkaller.appspotmail.com
Fixes: b4f82f9ed43a ("Bluetooth: L2CAP: Fix slab-use-after-free Read in l2cap_send_cmd")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/bluetooth/l2cap.h | 3
net/bluetooth/l2cap_core.c | 138 ++++++++++++++----------------------------
net/bluetooth/l2cap_sock.c | 15 ++--
3 files changed, 58 insertions(+), 98 deletions(-)
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -662,7 +662,7 @@ struct l2cap_conn {
struct l2cap_chan *smp;
struct list_head chan_l;
- struct mutex chan_lock;
+ struct mutex lock;
struct kref ref;
struct list_head users;
};
@@ -968,6 +968,7 @@ void l2cap_logical_cfm(struct l2cap_chan
void __l2cap_physical_cfm(struct l2cap_chan *chan, int result);
struct l2cap_conn *l2cap_conn_get(struct l2cap_conn *conn);
+struct l2cap_conn *l2cap_conn_hold_unless_zero(struct l2cap_conn *conn);
void l2cap_conn_put(struct l2cap_conn *conn);
int l2cap_register_user(struct l2cap_conn *conn, struct l2cap_user *user);
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -119,7 +119,6 @@ static struct l2cap_chan *l2cap_get_chan
{
struct l2cap_chan *c;
- mutex_lock(&conn->chan_lock);
c = __l2cap_get_chan_by_scid(conn, cid);
if (c) {
/* Only lock if chan reference is not 0 */
@@ -127,7 +126,6 @@ static struct l2cap_chan *l2cap_get_chan
if (c)
l2cap_chan_lock(c);
}
- mutex_unlock(&conn->chan_lock);
return c;
}
@@ -140,7 +138,6 @@ static struct l2cap_chan *l2cap_get_chan
{
struct l2cap_chan *c;
- mutex_lock(&conn->chan_lock);
c = __l2cap_get_chan_by_dcid(conn, cid);
if (c) {
/* Only lock if chan reference is not 0 */
@@ -148,7 +145,6 @@ static struct l2cap_chan *l2cap_get_chan
if (c)
l2cap_chan_lock(c);
}
- mutex_unlock(&conn->chan_lock);
return c;
}
@@ -418,7 +414,7 @@ static void l2cap_chan_timeout(struct wo
if (!conn)
return;
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
/* __set_chan_timer() calls l2cap_chan_hold(chan) while scheduling
* this work. No need to call l2cap_chan_hold(chan) here again.
*/
@@ -439,7 +435,7 @@ static void l2cap_chan_timeout(struct wo
l2cap_chan_unlock(chan);
l2cap_chan_put(chan);
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
}
struct l2cap_chan *l2cap_chan_create(void)
@@ -642,9 +638,9 @@ void __l2cap_chan_add(struct l2cap_conn
void l2cap_chan_add(struct l2cap_conn *conn, struct l2cap_chan *chan)
{
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
__l2cap_chan_add(conn, chan);
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
}
void l2cap_chan_del(struct l2cap_chan *chan, int err)
@@ -732,9 +728,9 @@ void l2cap_chan_list(struct l2cap_conn *
if (!conn)
return;
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
__l2cap_chan_list(conn, func, data);
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
}
EXPORT_SYMBOL_GPL(l2cap_chan_list);
@@ -746,7 +742,7 @@ static void l2cap_conn_update_id_addr(st
struct hci_conn *hcon = conn->hcon;
struct l2cap_chan *chan;
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
list_for_each_entry(chan, &conn->chan_l, list) {
l2cap_chan_lock(chan);
@@ -755,7 +751,7 @@ static void l2cap_conn_update_id_addr(st
l2cap_chan_unlock(chan);
}
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
}
static void l2cap_chan_le_connect_reject(struct l2cap_chan *chan)
@@ -1508,8 +1504,6 @@ static void l2cap_conn_start(struct l2ca
BT_DBG("conn %p", conn);
- mutex_lock(&conn->chan_lock);
-
list_for_each_entry_safe(chan, tmp, &conn->chan_l, list) {
l2cap_chan_lock(chan);
@@ -1578,8 +1572,6 @@ static void l2cap_conn_start(struct l2ca
l2cap_chan_unlock(chan);
}
-
- mutex_unlock(&conn->chan_lock);
}
static void l2cap_le_conn_ready(struct l2cap_conn *conn)
@@ -1625,7 +1617,7 @@ static void l2cap_conn_ready(struct l2ca
if (hcon->type == ACL_LINK)
l2cap_request_info(conn);
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
list_for_each_entry(chan, &conn->chan_l, list) {
@@ -1643,7 +1635,7 @@ static void l2cap_conn_ready(struct l2ca
l2cap_chan_unlock(chan);
}
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
if (hcon->type == LE_LINK)
l2cap_le_conn_ready(conn);
@@ -1658,14 +1650,10 @@ static void l2cap_conn_unreliable(struct
BT_DBG("conn %p", conn);
- mutex_lock(&conn->chan_lock);
-
list_for_each_entry(chan, &conn->chan_l, list) {
if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
l2cap_chan_set_err(chan, err);
}
-
- mutex_unlock(&conn->chan_lock);
}
static void l2cap_info_timeout(struct work_struct *work)
@@ -1676,7 +1664,9 @@ static void l2cap_info_timeout(struct wo
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
conn->info_ident = 0;
+ mutex_lock(&conn->lock);
l2cap_conn_start(conn);
+ mutex_unlock(&conn->lock);
}
/*
@@ -1768,6 +1758,8 @@ static void l2cap_conn_del(struct hci_co
BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
+ mutex_lock(&conn->lock);
+
kfree_skb(conn->rx_skb);
skb_queue_purge(&conn->pending_rx);
@@ -1786,8 +1778,6 @@ static void l2cap_conn_del(struct hci_co
/* Force the connection to be immediately dropped */
hcon->disc_timeout = 0;
- mutex_lock(&conn->chan_lock);
-
/* Kill channels */
list_for_each_entry_safe(chan, l, &conn->chan_l, list) {
l2cap_chan_hold(chan);
@@ -1801,12 +1791,14 @@ static void l2cap_conn_del(struct hci_co
l2cap_chan_put(chan);
}
- mutex_unlock(&conn->chan_lock);
-
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT)
cancel_delayed_work_sync(&conn->info_timer);
+ hci_chan_del(conn->hchan);
+ conn->hchan = NULL;
+
hcon->l2cap_data = NULL;
+ mutex_unlock(&conn->lock);
l2cap_conn_put(conn);
}
@@ -1814,7 +1806,6 @@ static void l2cap_conn_free(struct kref
{
struct l2cap_conn *conn = container_of(ref, struct l2cap_conn, ref);
- hci_chan_del(conn->hchan);
hci_conn_put(conn->hcon);
kfree(conn);
}
@@ -2925,8 +2916,6 @@ static void l2cap_raw_recv(struct l2cap_
BT_DBG("conn %p", conn);
- mutex_lock(&conn->chan_lock);
-
list_for_each_entry(chan, &conn->chan_l, list) {
if (chan->chan_type != L2CAP_CHAN_RAW)
continue;
@@ -2941,8 +2930,6 @@ static void l2cap_raw_recv(struct l2cap_
if (chan->ops->recv(chan, nskb))
kfree_skb(nskb);
}
-
- mutex_unlock(&conn->chan_lock);
}
/* ---- L2CAP signalling commands ---- */
@@ -3963,7 +3950,6 @@ static void l2cap_connect(struct l2cap_c
goto response;
}
- mutex_lock(&conn->chan_lock);
l2cap_chan_lock(pchan);
/* Check if the ACL is secure enough (if not SDP) */
@@ -4070,7 +4056,6 @@ response:
}
l2cap_chan_unlock(pchan);
- mutex_unlock(&conn->chan_lock);
l2cap_chan_put(pchan);
}
@@ -4109,27 +4094,19 @@ static int l2cap_connect_create_rsp(stru
BT_DBG("dcid 0x%4.4x scid 0x%4.4x result 0x%2.2x status 0x%2.2x",
dcid, scid, result, status);
- mutex_lock(&conn->chan_lock);
-
if (scid) {
chan = __l2cap_get_chan_by_scid(conn, scid);
- if (!chan) {
- err = -EBADSLT;
- goto unlock;
- }
+ if (!chan)
+ return -EBADSLT;
} else {
chan = __l2cap_get_chan_by_ident(conn, cmd->ident);
- if (!chan) {
- err = -EBADSLT;
- goto unlock;
- }
+ if (!chan)
+ return -EBADSLT;
}
chan = l2cap_chan_hold_unless_zero(chan);
- if (!chan) {
- err = -EBADSLT;
- goto unlock;
- }
+ if (!chan)
+ return -EBADSLT;
err = 0;
@@ -4167,9 +4144,6 @@ static int l2cap_connect_create_rsp(stru
l2cap_chan_unlock(chan);
l2cap_chan_put(chan);
-unlock:
- mutex_unlock(&conn->chan_lock);
-
return err;
}
@@ -4457,11 +4431,7 @@ static inline int l2cap_disconnect_req(s
chan->ops->set_shutdown(chan);
- l2cap_chan_unlock(chan);
- mutex_lock(&conn->chan_lock);
- l2cap_chan_lock(chan);
l2cap_chan_del(chan, ECONNRESET);
- mutex_unlock(&conn->chan_lock);
chan->ops->close(chan);
@@ -4498,11 +4468,7 @@ static inline int l2cap_disconnect_rsp(s
return 0;
}
- l2cap_chan_unlock(chan);
- mutex_lock(&conn->chan_lock);
- l2cap_chan_lock(chan);
l2cap_chan_del(chan, 0);
- mutex_unlock(&conn->chan_lock);
chan->ops->close(chan);
@@ -4700,13 +4666,9 @@ static int l2cap_le_connect_rsp(struct l
BT_DBG("dcid 0x%4.4x mtu %u mps %u credits %u result 0x%2.2x",
dcid, mtu, mps, credits, result);
- mutex_lock(&conn->chan_lock);
-
chan = __l2cap_get_chan_by_ident(conn, cmd->ident);
- if (!chan) {
- err = -EBADSLT;
- goto unlock;
- }
+ if (!chan)
+ return -EBADSLT;
err = 0;
@@ -4754,9 +4716,6 @@ static int l2cap_le_connect_rsp(struct l
l2cap_chan_unlock(chan);
-unlock:
- mutex_unlock(&conn->chan_lock);
-
return err;
}
@@ -4868,7 +4827,6 @@ static int l2cap_le_connect_req(struct l
goto response;
}
- mutex_lock(&conn->chan_lock);
l2cap_chan_lock(pchan);
if (!smp_sufficient_security(conn->hcon, pchan->sec_level,
@@ -4934,7 +4892,6 @@ static int l2cap_le_connect_req(struct l
response_unlock:
l2cap_chan_unlock(pchan);
- mutex_unlock(&conn->chan_lock);
l2cap_chan_put(pchan);
if (result == L2CAP_CR_PEND)
@@ -5071,7 +5028,6 @@ static inline int l2cap_ecred_conn_req(s
goto response;
}
- mutex_lock(&conn->chan_lock);
l2cap_chan_lock(pchan);
if (!smp_sufficient_security(conn->hcon, pchan->sec_level,
@@ -5146,7 +5102,6 @@ static inline int l2cap_ecred_conn_req(s
unlock:
l2cap_chan_unlock(pchan);
- mutex_unlock(&conn->chan_lock);
l2cap_chan_put(pchan);
response:
@@ -5183,8 +5138,6 @@ static inline int l2cap_ecred_conn_rsp(s
BT_DBG("mtu %u mps %u credits %u result 0x%4.4x", mtu, mps, credits,
result);
- mutex_lock(&conn->chan_lock);
-
cmd_len -= sizeof(*rsp);
list_for_each_entry_safe(chan, tmp, &conn->chan_l, list) {
@@ -5270,8 +5223,6 @@ static inline int l2cap_ecred_conn_rsp(s
l2cap_chan_unlock(chan);
}
- mutex_unlock(&conn->chan_lock);
-
return err;
}
@@ -5384,8 +5335,6 @@ static inline int l2cap_le_command_rej(s
if (cmd_len < sizeof(*rej))
return -EPROTO;
- mutex_lock(&conn->chan_lock);
-
chan = __l2cap_get_chan_by_ident(conn, cmd->ident);
if (!chan)
goto done;
@@ -5400,7 +5349,6 @@ static inline int l2cap_le_command_rej(s
l2cap_chan_put(chan);
done:
- mutex_unlock(&conn->chan_lock);
return 0;
}
@@ -6855,8 +6803,12 @@ static void process_pending_rx(struct wo
BT_DBG("");
+ mutex_lock(&conn->lock);
+
while ((skb = skb_dequeue(&conn->pending_rx)))
l2cap_recv_frame(conn, skb);
+
+ mutex_unlock(&conn->lock);
}
static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon)
@@ -6895,7 +6847,7 @@ static struct l2cap_conn *l2cap_conn_add
conn->local_fixed_chan |= L2CAP_FC_SMP_BREDR;
mutex_init(&conn->ident_lock);
- mutex_init(&conn->chan_lock);
+ mutex_init(&conn->lock);
INIT_LIST_HEAD(&conn->chan_l);
INIT_LIST_HEAD(&conn->users);
@@ -7088,7 +7040,7 @@ int l2cap_chan_connect(struct l2cap_chan
}
}
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
l2cap_chan_lock(chan);
if (cid && __l2cap_get_chan_by_dcid(conn, cid)) {
@@ -7129,7 +7081,7 @@ int l2cap_chan_connect(struct l2cap_chan
chan_unlock:
l2cap_chan_unlock(chan);
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
done:
hci_dev_unlock(hdev);
hci_dev_put(hdev);
@@ -7345,7 +7297,7 @@ static void l2cap_security_cfm(struct hc
BT_DBG("conn %p status 0x%2.2x encrypt %u", conn, status, encrypt);
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
list_for_each_entry(chan, &conn->chan_l, list) {
l2cap_chan_lock(chan);
@@ -7419,7 +7371,7 @@ static void l2cap_security_cfm(struct hc
l2cap_chan_unlock(chan);
}
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
}
/* Append fragment into frame respecting the maximum len of rx_skb */
@@ -7486,8 +7438,11 @@ static void l2cap_recv_reset(struct l2ca
conn->rx_len = 0;
}
-static struct l2cap_conn *l2cap_conn_hold_unless_zero(struct l2cap_conn *c)
+struct l2cap_conn *l2cap_conn_hold_unless_zero(struct l2cap_conn *c)
{
+ if (!c)
+ return NULL;
+
BT_DBG("conn %p orig refcnt %u", c, kref_read(&c->ref));
if (!kref_get_unless_zero(&c->ref))
@@ -7513,11 +7468,15 @@ void l2cap_recv_acldata(struct hci_conn
hci_dev_unlock(hcon->hdev);
- if (!conn)
- goto drop;
+ if (!conn) {
+ kfree_skb(skb);
+ return;
+ }
BT_DBG("conn %p len %u flags 0x%x", conn, skb->len, flags);
+ mutex_lock(&conn->lock);
+
switch (flags) {
case ACL_START:
case ACL_START_NO_FLUSH:
@@ -7542,7 +7501,7 @@ void l2cap_recv_acldata(struct hci_conn
if (len == skb->len) {
/* Complete frame received */
l2cap_recv_frame(conn, skb);
- return;
+ goto unlock;
}
BT_DBG("Start: total len %d, frag len %u", len, skb->len);
@@ -7604,10 +7563,11 @@ void l2cap_recv_acldata(struct hci_conn
break;
}
- l2cap_conn_put(conn);
-
drop:
kfree_skb(skb);
+unlock:
+ mutex_unlock(&conn->lock);
+ l2cap_conn_put(conn);
}
static struct hci_cb l2cap_cb = {
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -1323,9 +1323,10 @@ static int l2cap_sock_shutdown(struct so
/* prevent sk structure from being freed whilst unlocked */
sock_hold(sk);
- chan = l2cap_pi(sk)->chan;
/* prevent chan structure from being freed whilst unlocked */
- l2cap_chan_hold(chan);
+ chan = l2cap_chan_hold_unless_zero(l2cap_pi(sk)->chan);
+ if (!chan)
+ goto shutdown_already;
BT_DBG("chan %p state %s", chan, state_to_string(chan->state));
@@ -1355,22 +1356,20 @@ static int l2cap_sock_shutdown(struct so
release_sock(sk);
l2cap_chan_lock(chan);
- conn = chan->conn;
- if (conn)
- /* prevent conn structure from being freed */
- l2cap_conn_get(conn);
+ /* prevent conn structure from being freed */
+ conn = l2cap_conn_hold_unless_zero(chan->conn);
l2cap_chan_unlock(chan);
if (conn)
/* mutex lock must be taken before l2cap_chan_lock() */
- mutex_lock(&conn->chan_lock);
+ mutex_lock(&conn->lock);
l2cap_chan_lock(chan);
l2cap_chan_close(chan, 0);
l2cap_chan_unlock(chan);
if (conn) {
- mutex_unlock(&conn->chan_lock);
+ mutex_unlock(&conn->lock);
l2cap_conn_put(conn);
}
next prev parent reply other threads:[~2025-03-19 14:41 UTC|newest]
Thread overview: 181+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 14:29 [PATCH 6.6 000/166] 6.6.84-rc1 review Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 001/166] clockevents/drivers/i8253: Fix stop sequence for timer 0 Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 002/166] sched/isolation: Prevent boot crash when the boot CPU is nohz_full Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 003/166] zram: fix NULL pointer in comp_algorithm_show() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 004/166] hrtimer: Use and report correct timerslack values for realtime tasks Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 005/166] bpf: Use raw_spinlock_t in ringbuf Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 006/166] tcp: fix races in tcp_abort() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 007/166] tcp: fix forever orphan socket caused by tcp_abort Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 008/166] fbdev: hyperv_fb: iounmap() the correct memory when removing a device Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 009/166] pinctrl: bcm281xx: Fix incorrect regmap max_registers value Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 010/166] netfilter: nft_ct: Use __refcount_inc() for per-CPU nft_ct_pcpu_template Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 011/166] ice: fix memory leak in aRFS after reset Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 012/166] netfilter: nf_conncount: garbage collection is not skipped when jiffies wrap around Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 013/166] sched: address a potential NULL pointer dereference in the GRED scheduler Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 014/166] wifi: cfg80211: cancel wiphy_work before freeing wiphy Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 015/166] Bluetooth: hci_event: Fix enabling passive scanning Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 016/166] Revert "Bluetooth: hci_core: Fix sleeping function called from invalid context" Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 017/166] net/mlx5: Fill out devlink dev info only for PFs Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 018/166] net: dsa: mv88e6xxx: Verify after ATU Load ops Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 019/166] net: mctp i2c: Copy headers if cloned Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 020/166] netpoll: hold rcu read lock in __netpoll_send_skb() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 021/166] drm/hyperv: Fix address space leak when Hyper-V DRM device is removed Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 022/166] Drivers: hv: vmbus: Dont release fb_mmio resource in vmbus_free_mmio() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 023/166] net/mlx5: handle errors in mlx5_chains_create_table() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 024/166] eth: bnxt: do not update checksum in bnxt_xdp_build_skb() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 025/166] net: switchdev: Convert blocking notification chain to a raw one Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 026/166] bonding: fix incorrect MAC address setting to receive NS messages Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 027/166] netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree() Greg Kroah-Hartman
2025-03-19 14:29 ` [PATCH 6.6 028/166] ipvs: prevent integer overflow in do_ip_vs_get_ctl() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 029/166] net_sched: Prevent creation of classes with TC_H_ROOT Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 030/166] netfilter: nft_exthdr: fix offset with ipv4_find_option() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 031/166] gre: Fix IPv6 link-local address generation Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 032/166] net: openvswitch: remove misbehaving actions length check Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 033/166] net/mlx5: Lag, Check shared fdb before creating MultiPort E-Switch Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 034/166] net/mlx5: Bridge, fix the crash caused by LAG state check Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 035/166] net/mlx5e: Prevent bridge link show failure for non-eswitch-allowed devices Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 036/166] nvme-fc: go straight to connecting state when initializing Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 037/166] nvme-fc: do not ignore connectivity loss during connecting Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 038/166] hrtimers: Mark is_migration_base() with __always_inline Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 039/166] powercap: call put_device() on an error path in powercap_register_control_type() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 040/166] iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in ibft_attr_show_nic() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 041/166] sched/debug: Provide slice length for fair tasks Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 042/166] platform/x86/intel: pmc: fix ltr decode in pmc_core_ltr_show() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 043/166] scsi: core: Use GFP_NOIO to avoid circular locking dependency Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 044/166] scsi: ufs: core: Fix error return with query response Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 045/166] scsi: qla1280: Fix kernel oops when debug level > 2 Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 046/166] ACPI: resource: IRQ override for Eluktronics MECH-17 Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 047/166] smb: client: fix noisy when tree connecting to DFS interlink targets Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 048/166] alpha/elf: Fix misc/setarch test of util-linux by removing 32bit support Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 049/166] vboxsf: fix building with GCC 15 Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 050/166] HID: intel-ish-hid: fix the length of MNG_SYNC_FW_CLOCK in doorbell Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 051/166] HID: intel-ish-hid: Send clock sync message immediately after reset Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 052/166] HID: ignore non-functional sensor in HP 5MP Camera Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 053/166] usb: phy: generic: Use proper helper for property detection Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 054/166] HID: topre: Fix n-key rollover on Realforce R3S TKL boards Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 055/166] HID: hid-apple: Apple Magic Keyboard a3203 USB-C support Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 056/166] HID: apple: fix up the F6 key on the Omoton KB066 keyboard Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 057/166] objtool: Ignore dangling jump table entries Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 058/166] sched: Clarify wake_up_q()s write to task->wake_q.next Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 059/166] platform/x86: thinkpad_acpi: Fix invalid fan speed on ThinkPad X120e Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 060/166] platform/x86: thinkpad_acpi: Support for V9 DYTC platform profiles Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 061/166] s390/cio: Fix CHPID "configure" attribute caching Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 062/166] thermal/cpufreq_cooling: Remove structure member documentation Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 063/166] Xen/swiotlb: mark xen_swiotlb_fixup() __init Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 064/166] Bluetooth: L2CAP: Fix slab-use-after-free Read in l2cap_send_cmd Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 065/166] selftests/bpf: Fix invalid flag of recv() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 066/166] ASoC: simple-card-utils.c: add missing dlc->of_node Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 067/166] ALSA: hda/realtek: Limit mic boost on Positivo ARN50 Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 068/166] ASoC: rsnd: indicate unsupported clock rate Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 069/166] ASoC: rsnd: dont indicate warning on rsnd_kctrl_accept_runtime() Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 070/166] ASoC: rsnd: adjust convert rate limitation Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 071/166] ASoC: arizona/madera: use fsleep() in up/down DAPM event delays Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 072/166] ASoC: SOF: Intel: hda: add softdep pre to snd-hda-codec-hdmi module Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 073/166] ASoC: SOF: amd: Handle IPC replies before FW_BOOT_COMPLETE Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 074/166] net: wwan: mhi_wwan_mbim: Silence sequence number glitch errors Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 075/166] io-wq: backoff when retrying worker creation Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 076/166] nvme-pci: quirk Acer FA100 for non-uniqueue identifiers Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 077/166] nvme-tcp: add basic support for the C2HTermReq PDU Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 078/166] nvmet-rdma: recheck queue state is LIVE in state lock in recv done Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 079/166] apple-nvme: Release power domains when probe fails Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 080/166] cifs: Treat unhandled directory name surrogate reparse points as mount directory nodes Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 081/166] sctp: Fix undefined behavior in left shift operation Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 082/166] nvme: only allow entering LIVE from CONNECTING state Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 083/166] ASoC: tas2770: Fix volume scale Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 084/166] ASoC: tas2764: Fix power control mask Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 085/166] ASoC: tas2764: Set the SDOUT polarity correctly Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 086/166] fuse: dont truncate cached, mutated symlink Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 087/166] drm/vkms: Round fixp2int conversion in lerp_u16 Greg Kroah-Hartman
2025-03-19 14:30 ` [PATCH 6.6 088/166] perf/x86/intel: Use better start period for frequency mode Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 089/166] x86/irq: Define trace events conditionally Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 090/166] mptcp: safety check before fallback Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 091/166] drm/nouveau: Do not override forced connector status Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 092/166] net: Handle napi_schedule() calls from non-interrupt Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 093/166] block: fix kmem_cache of name bio-108 already exists Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 094/166] mm: add nommu variant of vm_insert_pages() Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 095/166] io_uring: get rid of remap_pfn_range() for mapping rings/sqes Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 096/166] io_uring: dont attempt to mmap larger than what the user asks for Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 097/166] io_uring: fix corner case forgetting to vunmap Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 098/166] io_uring: use vmap() for ring mapping Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 099/166] io_uring: unify io_pin_pages() Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 100/166] io_uring/kbuf: vmap pinned buffer ring Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 101/166] io_uring/kbuf: use vm_insert_pages() for mmaped pbuf ring Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 102/166] io_uring: use unpin_user_pages() where appropriate Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 103/166] io_uring: fix error pbuf checking Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 104/166] Input: ads7846 - fix gpiod allocation Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 105/166] Input: iqs7222 - preserve system status register Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 106/166] Input: xpad - add 8BitDo SN30 Pro, Hyperkin X91 and Gamesir G7 SE controllers Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 107/166] Input: xpad - add multiple supported devices Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 108/166] Input: xpad - add support for ZOTAC Gaming Zone Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 109/166] Input: xpad - add support for TECNO Pocket Go Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 110/166] Input: xpad - rename QH controller to Legion Go S Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 111/166] Input: i8042 - swap old quirk combination with new quirk for NHxxRZQ Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 112/166] Input: i8042 - add required quirks for missing old boardnames Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 113/166] Input: i8042 - swap old quirk combination with new quirk for several devices Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 114/166] Input: i8042 - swap old quirk combination with new quirk for more devices Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 115/166] USB: serial: ftdi_sio: add support for Altera USB Blaster 3 Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 116/166] USB: serial: option: add Telit Cinterion FE990B compositions Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 117/166] USB: serial: option: fix Telit Cinterion FE990A name Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 118/166] USB: serial: option: match on interface class for Telit FN990B Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 119/166] x86/microcode/AMD: Fix out-of-bounds on systems with CPU-less NUMA nodes Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 120/166] drm/i915/cdclk: Do cdclk post plane programming later Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 121/166] drm/atomic: Filter out redundant DPMS calls Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 122/166] drm/dp_mst: Fix locking when skipping CSN before topology probing Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 123/166] drm/amd/display: Disable unneeded hpd interrupts during dm_init Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 124/166] drm/amd/display: Restore correct backlight brightness after a GPU reset Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 125/166] drm/amd/display: Assign normalized_pix_clk when color depth = 14 Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 126/166] drm/amd/display: Fix slab-use-after-free on hdcp_work Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 127/166] ksmbd: fix use-after-free in ksmbd_free_work_struct Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 128/166] ksmbd: prevent connection release during oplock break notification Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 129/166] clk: samsung: update PLL locktime for PLL142XX used on FSD platform Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 130/166] ASoC: amd: yc: Support mic on another Lenovo ThinkPad E16 Gen 2 model Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 131/166] dm-flakey: Fix memory corruption in optional corrupt_bio_byte feature Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 132/166] arm64: mm: Populate vmemmap at the page level if not section aligned Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 133/166] qlcnic: fix memory leak issues in qlcnic_sriov_common.c Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 134/166] smb: client: fix regression with guest option Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 135/166] rust: Disallow BTF generation with Rust + LTO Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 136/166] rust: init: fix `Zeroable` implementation for `Option<NonNull<T>>` and `Option<KBox<T>>` Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 137/166] lib/buildid: Handle memfd_secret() files in build_id_parse() Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 138/166] mm: split critical region in remap_file_pages() and invoke LSMs in between Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 139/166] ASoC: ops: Consistently treat platform_max as control value Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 140/166] rust: error: add missing newline to pr_warn! calls Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 141/166] drm/gma500: Add NULL check for pci_gfx_root in mid_get_vbt_data() Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 142/166] ASoC: cs42l43: Fix maximum ADC Volume Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 143/166] rust: init: add missing newline to pr_info! calls Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 144/166] ASoC: rt722-sdca: add missing readable registers Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 145/166] ASoC: codecs: wm0010: Fix error handling path in wm0010_spi_probe() Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 146/166] scripts: generate_rust_analyzer: add missing macros deps Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 147/166] cifs: Fix integer overflow while processing acregmax mount option Greg Kroah-Hartman
2025-03-19 14:31 ` [PATCH 6.6 148/166] cifs: Fix integer overflow while processing acdirmax " Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 149/166] cifs: Fix integer overflow while processing actimeo " Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 150/166] cifs: Fix integer overflow while processing closetimeo " Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 151/166] cifs: Validate content of WSL reparse point buffers Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 152/166] cifs: Throw -EOPNOTSUPP error on unsupported reparse point type from parse_reparse_point() Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 153/166] i2c: ali1535: Fix an error handling path in ali1535_probe() Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 154/166] i2c: ali15x3: Fix an error handling path in ali15x3_probe() Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 155/166] i2c: sis630: Fix an error handling path in sis630_probe() Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 156/166] stmmac: loongson: Pass correct arg to PCI function Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 157/166] smb3: add support for IAKerb Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 158/166] smb: client: Fix match_session bug preventing session reuse Greg Kroah-Hartman
2025-03-19 14:32 ` Greg Kroah-Hartman [this message]
2025-03-19 14:32 ` [PATCH 6.6 160/166] nvme-fc: rely on state transitions to handle connectivity loss Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 161/166] HID: apple: disable Fn key handling on the Omoton KB066 Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 162/166] nvme-tcp: Fix a C2HTermReq error message Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 163/166] rust: lockdep: Remove support for dynamically allocated LockClassKeys Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 164/166] netfilter: nf_tables: use timestamp to check for set element timeout Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 165/166] netfilter: nf_tables: bail out if stateful expression provides no .clone Greg Kroah-Hartman
2025-03-19 14:32 ` [PATCH 6.6 166/166] netfilter: nf_tables: allow clone callbacks to sleep Greg Kroah-Hartman
2025-03-19 16:33 ` [PATCH 6.6 000/166] 6.6.84-rc1 review Naresh Kamboju
2025-03-19 16:37 ` Jens Axboe
2025-03-19 17:02 ` Greg Kroah-Hartman
2025-03-19 23:51 ` Greg Kroah-Hartman
2025-03-20 12:55 ` Jens Axboe
2025-03-20 13:02 ` Jens Axboe
2025-03-20 13:22 ` Greg Kroah-Hartman
2025-03-19 16:55 ` SeongJae Park
2025-03-19 19:35 ` Jon Hunter
2025-03-20 10:28 ` Ron Economos
2025-03-20 11:15 ` Miguel Ojeda
2025-03-20 11:36 ` Mark Brown
2025-03-20 16:27 ` Hardik Garg
2025-03-21 0:36 ` Peter Schneider
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250319143024.337092602@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=dan.carpenter@linaro.org \
--cc=luiz.von.dentz@intel.com \
--cc=patches@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=syzbot+10bd8fe6741eedd2be2e@syzkaller.appspotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox