diff mbox series

[net] net/tls: allocate tls context using GFP_ATOMIC

Message ID 1545220102-15403-1-git-send-email-ganeshgr@chelsio.com
State Accepted, archived
Delegated to: David Miller
Headers show
Series [net] net/tls: allocate tls context using GFP_ATOMIC | expand

Commit Message

Ganesh Goudar Dec. 19, 2018, 11:48 a.m. UTC
create_ctx can be called from atomic context, hence use
GFP_ATOMIC instead of GFP_KERNEL.

[  395.962599] BUG: sleeping function called from invalid context at mm/slab.h:421
[  395.979896] in_atomic(): 1, irqs_disabled(): 0, pid: 16254, name: openssl
[  395.996564] 2 locks held by openssl/16254:
[  396.010492]  #0: 00000000347acb52 (sk_lock-AF_INET){+.+.}, at: do_tcp_setsockopt.isra.44+0x13b/0x9a0
[  396.029838]  #1: 000000006c9552b5 (device_spinlock){+...}, at: tls_init+0x1d/0x280
[  396.047675] CPU: 5 PID: 16254 Comm: openssl Tainted: G           O      4.20.0-rc6+ #25
[  396.066019] Hardware name: Supermicro X10SRA-F/X10SRA-F, BIOS 2.0c 09/25/2017
[  396.083537] Call Trace:
[  396.096265]  dump_stack+0x5e/0x8b
[  396.109876]  ___might_sleep+0x216/0x250
[  396.123940]  kmem_cache_alloc_trace+0x1b0/0x240
[  396.138800]  create_ctx+0x1f/0x60
[  396.152504]  tls_init+0xbd/0x280
[  396.166135]  tcp_set_ulp+0x191/0x2d0
[  396.180035]  ? tcp_set_ulp+0x2c/0x2d0
[  396.193960]  do_tcp_setsockopt.isra.44+0x148/0x9a0
[  396.209013]  __sys_setsockopt+0x7c/0xe0
[  396.223054]  __x64_sys_setsockopt+0x20/0x30
[  396.237378]  do_syscall_64+0x4a/0x180
[  396.251200]  entry_SYSCALL_64_after_hwframe+0x49/0xbe

Fixes: df9d4a178022 ("net/tls: sleeping function from invalid context")
Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
---
 net/tls/tls_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller Dec. 20, 2018, 12:30 a.m. UTC | #1
From: Ganesh Goudar <ganeshgr@chelsio.com>
Date: Wed, 19 Dec 2018 17:18:22 +0530

> create_ctx can be called from atomic context, hence use
> GFP_ATOMIC instead of GFP_KERNEL.
> 
> [  395.962599] BUG: sleeping function called from invalid context at mm/slab.h:421
> [  395.979896] in_atomic(): 1, irqs_disabled(): 0, pid: 16254, name: openssl
> [  395.996564] 2 locks held by openssl/16254:
> [  396.010492]  #0: 00000000347acb52 (sk_lock-AF_INET){+.+.}, at: do_tcp_setsockopt.isra.44+0x13b/0x9a0
> [  396.029838]  #1: 000000006c9552b5 (device_spinlock){+...}, at: tls_init+0x1d/0x280
> [  396.047675] CPU: 5 PID: 16254 Comm: openssl Tainted: G           O      4.20.0-rc6+ #25
> [  396.066019] Hardware name: Supermicro X10SRA-F/X10SRA-F, BIOS 2.0c 09/25/2017
> [  396.083537] Call Trace:
> [  396.096265]  dump_stack+0x5e/0x8b
> [  396.109876]  ___might_sleep+0x216/0x250
> [  396.123940]  kmem_cache_alloc_trace+0x1b0/0x240
> [  396.138800]  create_ctx+0x1f/0x60
> [  396.152504]  tls_init+0xbd/0x280
> [  396.166135]  tcp_set_ulp+0x191/0x2d0
> [  396.180035]  ? tcp_set_ulp+0x2c/0x2d0
> [  396.193960]  do_tcp_setsockopt.isra.44+0x148/0x9a0
> [  396.209013]  __sys_setsockopt+0x7c/0xe0
> [  396.223054]  __x64_sys_setsockopt+0x20/0x30
> [  396.237378]  do_syscall_64+0x4a/0x180
> [  396.251200]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
> 
> Fixes: df9d4a178022 ("net/tls: sleeping function from invalid context")
> Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>

Applied, thanks.
diff mbox series

Patch

diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c
index 1428bd7..28887cf 100644
--- a/net/tls/tls_main.c
+++ b/net/tls/tls_main.c
@@ -538,7 +538,7 @@  static struct tls_context *create_ctx(struct sock *sk)
 	struct inet_connection_sock *icsk = inet_csk(sk);
 	struct tls_context *ctx;
 
-	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
+	ctx = kzalloc(sizeof(*ctx), GFP_ATOMIC);
 	if (!ctx)
 		return NULL;