[PATCH] mISDN: Fix a sleep-in-atomic bug

Subsystems: the rest

STALE3371d

2 messages, 2 authors, 2017-06-01 · open the first message on its own page

[PATCH] mISDN: Fix a sleep-in-atomic bug

From: Jia-Ju Bai <hidden>
Date: 2017-05-31 07:07:17

The driver may sleep under a read spin lock, and the function call path is:
send_socklist (acquire the lock by read_lock)
  skb_copy(GFP_KERNEL) --> may sleep

To fix it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".

Signed-off-by: Jia-Ju Bai <redacted>
---
 drivers/isdn/mISDN/stack.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/isdn/mISDN/stack.c b/drivers/isdn/mISDN/stack.c
index 8b7faea..422dced 100644
--- a/drivers/isdn/mISDN/stack.c
+++ b/drivers/isdn/mISDN/stack.c
@@ -75,7 +75,7 @@
 		if (sk->sk_state != MISDN_BOUND)
 			continue;
 		if (!cskb)
-			cskb = skb_copy(skb, GFP_KERNEL);
+			cskb = skb_copy(skb, GFP_ATOMIC);
 		if (!cskb) {
 			printk(KERN_WARNING "%s no skb\n", __func__);
 			break;
-- 
1.7.9.5

Re: [PATCH] mISDN: Fix a sleep-in-atomic bug

From: David Miller <davem@davemloft.net>
Date: 2017-06-01 18:50:17

From: Jia-Ju Bai <redacted>
Date: Wed, 31 May 2017 15:08:25 +0800
The driver may sleep under a read spin lock, and the function call path is:
send_socklist (acquire the lock by read_lock)
  skb_copy(GFP_KERNEL) --> may sleep

To fix it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".

Signed-off-by: Jia-Ju Bai <redacted>
Just proves that nobody has ever run this code with lock debugging
enabled, if at all.

Applied, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help