Commit 36f41f8
af_key: do not use GFP_KERNEL in atomic contexts
pfkey_broadcast() might be called from non process contexts,
we can not use GFP_KERNEL in these cases [1].
This patch partially reverts commit ba51b6b ("net: Fix RCU splat in
af_key"), only keeping the GFP_ATOMIC forcing under rcu_read_lock()
section.
[1] : syzkaller reported :
in_atomic(): 1, irqs_disabled(): 0, pid: 2932, name: syzkaller183439
3 locks held by syzkaller183439/2932:
#0: (&net->xfrm.xfrm_cfg_mutex){+.+.+.}, at: [<ffffffff83b43888>] pfkey_sendmsg+0x4c8/0x9f0 net/key/af_key.c:3649
#1: (&pfk->dump_lock){+.+.+.}, at: [<ffffffff83b467f6>] pfkey_do_dump+0x76/0x3f0 net/key/af_key.c:293
#2: (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] spin_lock_bh include/linux/spinlock.h:304 [inline]
#2: (&(&net->xfrm.xfrm_policy_lock)->rlock){+...+.}, at: [<ffffffff83957632>] xfrm_policy_walk+0x192/0xa30 net/xfrm/xfrm_policy.c:1028
CPU: 0 PID: 2932 Comm: syzkaller183439 Not tainted 4.13.0-rc4+ #24
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:16 [inline]
dump_stack+0x194/0x257 lib/dump_stack.c:52
___might_sleep+0x2b2/0x470 kernel/sched/core.c:5994
__might_sleep+0x95/0x190 kernel/sched/core.c:5947
slab_pre_alloc_hook mm/slab.h:416 [inline]
slab_alloc mm/slab.c:3383 [inline]
kmem_cache_alloc+0x24b/0x6e0 mm/slab.c:3559
skb_clone+0x1a0/0x400 net/core/skbuff.c:1037
pfkey_broadcast_one+0x4b2/0x6f0 net/key/af_key.c:207
pfkey_broadcast+0x4ba/0x770 net/key/af_key.c:281
dump_sp+0x3d6/0x500 net/key/af_key.c:2685
xfrm_policy_walk+0x2f1/0xa30 net/xfrm/xfrm_policy.c:1042
pfkey_dump_sp+0x42/0x50 net/key/af_key.c:2695
pfkey_do_dump+0xaa/0x3f0 net/key/af_key.c:299
pfkey_spddump+0x1a0/0x210 net/key/af_key.c:2722
pfkey_process+0x606/0x710 net/key/af_key.c:2814
pfkey_sendmsg+0x4d6/0x9f0 net/key/af_key.c:3650
sock_sendmsg_nosec net/socket.c:633 [inline]
sock_sendmsg+0xca/0x110 net/socket.c:643
___sys_sendmsg+0x755/0x890 net/socket.c:2035
__sys_sendmsg+0xe5/0x210 net/socket.c:2069
SYSC_sendmsg net/socket.c:2080 [inline]
SyS_sendmsg+0x2d/0x50 net/socket.c:2076
entry_SYSCALL_64_fastpath+0x1f/0xbe
RIP: 0033:0x445d79
RSP: 002b:00007f32447c1dc8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000445d79
RDX: 0000000000000000 RSI: 000000002023dfc8 RDI: 0000000000000008
RBP: 0000000000000086 R08: 00007f32447c2700 R09: 00007f32447c2700
R10: 00007f32447c2700 R11: 0000000000000202 R12: 0000000000000000
R13: 00007ffe33edec4f R14: 00007f32447c29c0 R15: 0000000000000000
Fixes: ba51b6b ("net: Fix RCU splat in af_key")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Cc: David Ahern <dsa@cumulusnetworks.com>
Acked-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>1 parent 539a06b commit 36f41f8
1 file changed
+26
-22
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
231 | | - | |
| 231 | + | |
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
| |||
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
281 | | - | |
| 281 | + | |
282 | 282 | | |
283 | 283 | | |
284 | 284 | | |
| |||
311 | 311 | | |
312 | 312 | | |
313 | 313 | | |
314 | | - | |
| 314 | + | |
315 | 315 | | |
316 | 316 | | |
317 | 317 | | |
| |||
355 | 355 | | |
356 | 356 | | |
357 | 357 | | |
358 | | - | |
| 358 | + | |
359 | 359 | | |
360 | 360 | | |
361 | 361 | | |
| |||
1389 | 1389 | | |
1390 | 1390 | | |
1391 | 1391 | | |
1392 | | - | |
| 1392 | + | |
1393 | 1393 | | |
1394 | 1394 | | |
1395 | 1395 | | |
| |||
1476 | 1476 | | |
1477 | 1477 | | |
1478 | 1478 | | |
1479 | | - | |
| 1479 | + | |
1480 | 1480 | | |
1481 | 1481 | | |
1482 | 1482 | | |
| |||
1589 | 1589 | | |
1590 | 1590 | | |
1591 | 1591 | | |
1592 | | - | |
| 1592 | + | |
1593 | 1593 | | |
1594 | 1594 | | |
1595 | 1595 | | |
| |||
1694 | 1694 | | |
1695 | 1695 | | |
1696 | 1696 | | |
1697 | | - | |
1698 | | - | |
| 1697 | + | |
| 1698 | + | |
1699 | 1699 | | |
1700 | 1700 | | |
1701 | 1701 | | |
| |||
1712 | 1712 | | |
1713 | 1713 | | |
1714 | 1714 | | |
1715 | | - | |
| 1715 | + | |
| 1716 | + | |
1716 | 1717 | | |
1717 | 1718 | | |
1718 | 1719 | | |
| |||
1733 | 1734 | | |
1734 | 1735 | | |
1735 | 1736 | | |
1736 | | - | |
| 1737 | + | |
1737 | 1738 | | |
1738 | 1739 | | |
1739 | 1740 | | |
| |||
1790 | 1791 | | |
1791 | 1792 | | |
1792 | 1793 | | |
1793 | | - | |
| 1794 | + | |
1794 | 1795 | | |
1795 | 1796 | | |
1796 | 1797 | | |
| |||
1878 | 1879 | | |
1879 | 1880 | | |
1880 | 1881 | | |
1881 | | - | |
| 1882 | + | |
1882 | 1883 | | |
1883 | 1884 | | |
1884 | 1885 | | |
| |||
2206 | 2207 | | |
2207 | 2208 | | |
2208 | 2209 | | |
2209 | | - | |
| 2210 | + | |
2210 | 2211 | | |
2211 | 2212 | | |
2212 | 2213 | | |
| |||
2426 | 2427 | | |
2427 | 2428 | | |
2428 | 2429 | | |
2429 | | - | |
| 2430 | + | |
2430 | 2431 | | |
2431 | 2432 | | |
2432 | 2433 | | |
| |||
2682 | 2683 | | |
2683 | 2684 | | |
2684 | 2685 | | |
2685 | | - | |
| 2686 | + | |
2686 | 2687 | | |
2687 | 2688 | | |
2688 | 2689 | | |
| |||
2739 | 2740 | | |
2740 | 2741 | | |
2741 | 2742 | | |
2742 | | - | |
| 2743 | + | |
2743 | 2744 | | |
2744 | 2745 | | |
2745 | 2746 | | |
| |||
2803 | 2804 | | |
2804 | 2805 | | |
2805 | 2806 | | |
2806 | | - | |
| 2807 | + | |
2807 | 2808 | | |
2808 | 2809 | | |
2809 | 2810 | | |
| |||
3024 | 3025 | | |
3025 | 3026 | | |
3026 | 3027 | | |
3027 | | - | |
| 3028 | + | |
| 3029 | + | |
3028 | 3030 | | |
3029 | 3031 | | |
3030 | 3032 | | |
| |||
3212 | 3214 | | |
3213 | 3215 | | |
3214 | 3216 | | |
3215 | | - | |
| 3217 | + | |
| 3218 | + | |
3216 | 3219 | | |
3217 | 3220 | | |
3218 | 3221 | | |
| |||
3408 | 3411 | | |
3409 | 3412 | | |
3410 | 3413 | | |
3411 | | - | |
| 3414 | + | |
| 3415 | + | |
3412 | 3416 | | |
3413 | 3417 | | |
3414 | 3418 | | |
| |||
3599 | 3603 | | |
3600 | 3604 | | |
3601 | 3605 | | |
3602 | | - | |
| 3606 | + | |
3603 | 3607 | | |
3604 | 3608 | | |
3605 | 3609 | | |
| |||
0 commit comments