Eric Dumazet
2ea2f62c8b
net: fix crash in build_skb()
When I added pfmemalloc support in build_skb(), I forgot netlink
was using build_skb() with a vmalloc() area.
In this patch I introduce __build_skb() for netlink use,
and build_skb() is a wrapper handling both skb->head_frag and
skb->pfmemalloc
This means netlink no longer has to hack skb->head_frag
[ 1567.700067] kernel BUG at arch/x86/mm/physaddr.c:26!
[ 1567.700067] invalid opcode: 0000 [#1] PREEMPT SMP KASAN
[ 1567.700067] Dumping ftrace buffer:
[ 1567.700067] (ftrace buffer empty)
[ 1567.700067] Modules linked in:
[ 1567.700067] CPU: 9 PID: 16186 Comm: trinity-c182 Not tainted 4.0.0-next-20150424-sasha-00037-g4796e21 #2167
[ 1567.700067] task: ffff880127efb000 ti: ffff880246770000 task.ti: ffff880246770000
[ 1567.700067] RIP: __phys_addr (arch/x86/mm/physaddr.c:26 (discriminator 3))
[ 1567.700067] RSP: 0018:ffff8802467779d8 EFLAGS: 00010202
[ 1567.700067] RAX: 000041000ed8e000 RBX: ffffc9008ed8e000 RCX: 000000000000002c
[ 1567.700067] RDX: 0000000000000004 RSI: 0000000000000000 RDI: ffffffffb3fd6049
[ 1567.700067] RBP: ffff8802467779f8 R08: 0000000000000019 R09: ffff8801d0168000
[ 1567.700067] R10: ffff8801d01680c7 R11: ffffed003a02d019 R12: ffffc9000ed8e000
[ 1567.700067] R13: 0000000000000f40 R14: 0000000000001180 R15: ffffc9000ed8e000
[ 1567.700067] FS: 00007f2a7da3f700(0000) GS:ffff8801d1000000(0000) knlGS:0000000000000000
[ 1567.700067] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1567.700067] CR2: 0000000000738308 CR3: 000000022e329000 CR4: 00000000000007e0
[ 1567.700067] Stack:
[ 1567.700067] ffffc9000ed8e000 ffff8801d0168000 ffffc9000ed8e000 ffff8801d0168000
[ 1567.700067] ffff880246777a28 ffffffffad7c0a21 0000000000001080 ffff880246777c08
[ 1567.700067] ffff88060d302e68 ffff880246777b58 ffff880246777b88 ffffffffad9a6821
[ 1567.700067] Call Trace:
[ 1567.700067] build_skb (include/linux/mm.h:508 net/core/skbuff.c:316)
[ 1567.700067] netlink_sendmsg (net/netlink/af_netlink.c:1633 net/netlink/af_netlink.c:2329)
[ 1567.774369] ? sched_clock_cpu (kernel/sched/clock.c:311)
[ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
[ 1567.774369] ? netlink_unicast (net/netlink/af_netlink.c:2273)
[ 1567.774369] sock_sendmsg (net/socket.c:614 net/socket.c:623)
[ 1567.774369] sock_write_iter (net/socket.c:823)
[ 1567.774369] ? sock_sendmsg (net/socket.c:806)
[ 1567.774369] __vfs_write (fs/read_write.c:479 fs/read_write.c:491)
[ 1567.774369] ? get_lock_stats (kernel/locking/lockdep.c:249)
[ 1567.774369] ? default_llseek (fs/read_write.c:487)
[ 1567.774369] ? vtime_account_user (kernel/sched/cputime.c:701)
[ 1567.774369] ? rw_verify_area (fs/read_write.c:406 (discriminator 4))
[ 1567.774369] vfs_write (fs/read_write.c:539)
[ 1567.774369] SyS_write (fs/read_write.c:586 fs/read_write.c:577)
[ 1567.774369] ? SyS_read (fs/read_write.c:577)
[ 1567.774369] ? __this_cpu_preempt_check (lib/smp_processor_id.c:63)
[ 1567.774369] ? trace_hardirqs_on_caller (kernel/locking/lockdep.c:2594 kernel/locking/lockdep.c:2636)
[ 1567.774369] ? trace_hardirqs_on_thunk (arch/x86/lib/thunk_64.S:42)
[ 1567.774369] system_call_fastpath (arch/x86/kernel/entry_64.S:261)
Fixes: 79930f5892 ("net: do not deplete pfmemalloc reserve")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-04-25 15:49:49 -04:00
..
2015-02-10 10:23:15 +00:00
2014-08-06 18:01:23 -07:00
2015-02-19 13:31:40 +03:00
2015-04-22 09:24:55 -07:00
2014-09-22 16:48:47 +09:00
2015-04-17 15:50:54 -04:00
2015-04-22 09:18:17 -07:00
2015-04-17 11:48:01 +02:00
2015-02-18 08:01:44 -08:00
2015-02-11 10:28:45 -08:00
2015-04-22 09:04:39 -07:00
2015-04-15 16:35:22 -07:00
2013-12-02 11:24:18 +00:00
2012-12-02 00:05:12 +00:00
2012-03-16 10:38:24 -04:00
2010-12-06 15:58:43 -05:00
2015-04-17 09:03:56 -04:00
2015-04-17 09:03:53 -04:00
2015-04-17 08:31:12 -06:00
2015-02-11 11:24:14 -07:00
2013-02-21 17:22:16 -08:00
2014-01-23 16:36:56 -08:00
2015-04-15 16:35:22 -07:00
2015-01-20 14:02:58 -07:00
2013-12-04 17:19:44 +01:00
2014-01-21 20:18:26 -08:00
2014-07-03 11:32:43 +01:00
2014-05-28 13:37:21 -07:00
2008-06-04 14:56:12 +01:00
2015-04-16 12:33:51 +09:30
2015-04-15 16:35:22 -07:00
2013-05-12 14:16:21 +02:00
2015-02-17 12:21:51 -05:00
2013-08-18 17:39:55 -07:00
2014-12-19 22:55:06 +01:00
2015-04-07 16:45:33 -07:00
2014-10-03 14:55:48 -07:00
2014-09-29 00:04:55 -04:00
2008-01-28 23:21:18 +01:00
2014-04-03 16:21:06 -07:00
2012-10-13 10:46:48 +01:00
2015-03-02 16:43:41 -05:00
2014-01-21 23:17:20 -08:00
2009-12-17 10:58:17 -05:00
2015-04-17 09:04:38 -04:00
2013-04-30 10:09:06 +02:00
2015-04-15 16:35:19 -07:00
2015-04-03 16:18:02 +02:00
2015-02-13 21:21:41 -08:00
2015-03-05 09:23:12 +01:00
2014-05-14 16:40:04 -07:00
2012-11-10 00:40:24 -08:00
2015-04-21 09:42:58 -07:00
2015-04-18 12:32:59 -07:00
2015-04-15 16:35:22 -07:00
2015-04-15 16:35:20 -07:00
2015-04-21 09:44:55 -03:00
2007-07-31 15:39:40 -07:00
2014-12-13 13:33:07 +01:00
2015-04-17 09:03:55 -04:00
2014-07-28 14:16:30 -04:00
2015-02-18 20:50:05 +01:00
2014-10-08 10:39:41 +05:30
2015-04-14 16:49:00 -07:00
2014-10-22 16:14:04 -06:00
2015-04-15 16:35:18 -07:00
2015-04-17 09:04:07 -04:00
2015-04-15 16:35:20 -07:00
2014-10-09 22:25:58 -04:00
2015-04-14 10:49:03 -07:00
2015-03-12 18:46:08 -07:00
2014-10-14 02:18:28 +02:00
2015-04-18 11:20:31 -04:00
2014-01-27 21:02:39 -08:00
2015-02-01 23:16:33 -08:00
2015-04-23 11:38:14 -04:00
2012-12-11 17:22:27 -08:00
2015-04-18 08:30:10 -04:00
2013-03-29 17:54:33 -07:00
2015-04-15 16:35:19 -07:00
2014-01-23 16:36:55 -08:00
2012-10-13 10:46:48 +01:00
2013-03-01 23:51:07 -05:00
2015-04-16 13:53:32 -05:00
2013-08-19 21:22:34 -07:00
2015-04-15 16:35:23 -07:00
2015-03-31 12:01:19 -04:00
2010-02-08 18:19:41 -06:00
2014-08-24 18:36:01 -07:00
2015-04-15 16:35:23 -07:00
2014-10-20 10:11:29 +02:00
2015-04-24 11:38:12 -04:00
2014-11-10 16:45:43 -05:00
2015-04-15 16:35:19 -07:00
2012-10-13 10:46:48 +01:00
2015-04-15 09:00:47 -07:00
2015-02-24 08:44:16 +01:00
2015-04-25 15:49:49 -04:00
2015-04-20 09:08:49 -07:00
2015-04-11 15:53:35 -04:00
2015-03-03 11:16:47 -08:00
2008-05-26 16:15:32 +02:00
2015-04-14 09:50:27 -07:00
2006-12-07 02:14:08 +01:00
2015-04-16 13:58:42 -04:00
2015-04-16 19:02:04 -04:00
2015-04-15 16:35:17 -07:00
2015-04-17 09:04:07 -04:00
2012-09-13 16:47:34 +02:00
2010-05-27 09:12:51 -07:00
2012-08-21 16:28:31 +02:00
2014-07-18 11:49:57 +02:00
2012-10-09 16:22:32 +09:00
2015-04-15 16:35:22 -07:00
2015-04-15 16:35:22 -07:00
2015-04-17 09:03:54 -04:00
2015-03-12 18:46:08 -07:00
2015-02-02 10:09:54 -08:00
2015-03-09 09:22:28 -04:00
2015-03-17 12:23:32 -04:00
2015-04-15 16:35:20 -07:00