Nikolay Aleksandrov
4ae9ebf9e8
net: nexthop: don't allow empty NHA_GROUP
...
[ Upstream commit eeaac3634ee0e3f35548be35275efeca888e9b23 ]
Currently the nexthop code will use an empty NHA_GROUP attribute, but it
requires at least 1 entry in order to function properly. Otherwise we
end up derefencing null or random pointers all over the place due to not
having any nh_grp_entry members allocated, nexthop code relies on having at
least the first member present. Empty NHA_GROUP doesn't make any sense so
just disallow it.
Also add a WARN_ON for any future users of nexthop_create_group().
BUG: kernel NULL pointer dereference, address: 0000000000000080
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: 0000 [#1 ] SMP
CPU: 0 PID: 558 Comm: ip Not tainted 5.9.0-rc1+ #93
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-2.fc32 04/01/2014
RIP: 0010:fib_check_nexthop+0x4a/0xaa
Code: 0f 84 83 00 00 00 48 c7 02 80 03 f7 81 c3 40 80 fe fe 75 12 b8 ea ff ff ff 48 85 d2 74 6b 48 c7 02 40 03 f7 81 c3 48 8b 40 10 <48> 8b 80 80 00 00 00 eb 36 80 78 1a 00 74 12 b8 ea ff ff ff 48 85
RSP: 0018:ffff88807983ba00 EFLAGS: 00010213
RAX: 0000000000000000 RBX: ffff88807983bc00 RCX: 0000000000000000
RDX: ffff88807983bc00 RSI: 0000000000000000 RDI: ffff88807bdd0a80
RBP: ffff88807983baf8 R08: 0000000000000dc0 R09: 000000000000040a
R10: 0000000000000000 R11: ffff88807bdd0ae8 R12: 0000000000000000
R13: 0000000000000000 R14: ffff88807bea3100 R15: 0000000000000001
FS: 00007f10db393700(0000) GS:ffff88807dc00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000080 CR3: 000000007bd0f004 CR4: 00000000003706f0
Call Trace:
fib_create_info+0x64d/0xaf7
fib_table_insert+0xf6/0x581
? __vma_adjust+0x3b6/0x4d4
inet_rtm_newroute+0x56/0x70
rtnetlink_rcv_msg+0x1e3/0x20d
? rtnl_calcit.isra.0+0xb8/0xb8
netlink_rcv_skb+0x5b/0xac
netlink_unicast+0xfa/0x17b
netlink_sendmsg+0x334/0x353
sock_sendmsg_nosec+0xf/0x3f
____sys_sendmsg+0x1a0/0x1fc
? copy_msghdr_from_user+0x4c/0x61
___sys_sendmsg+0x63/0x84
? handle_mm_fault+0xa39/0x11b5
? sockfd_lookup_light+0x72/0x9a
__sys_sendmsg+0x50/0x6e
do_syscall_64+0x54/0xbe
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7f10dacc0bb7
Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb cd 66 0f 1f 44 00 00 8b 05 9a 4b 2b 00 85 c0 75 2e 48 63 ff 48 63 d2 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 01 c3 48 8b 15 b1 f2 2a 00 f7 d8 64 89 02 48
RSP: 002b:00007ffcbe628bf8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007ffcbe628f80 RCX: 00007f10dacc0bb7
RDX: 0000000000000000 RSI: 00007ffcbe628c60 RDI: 0000000000000003
RBP: 000000005f41099c R08: 0000000000000001 R09: 0000000000000008
R10: 00000000000005e9 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 00007ffcbe628d70 R15: 0000563a86c6e440
Modules linked in:
CR2: 0000000000000080
CC: David Ahern <dsahern@gmail.com>
Fixes: 430a049190de ("nexthop: Add support for nexthop groups")
Reported-by: syzbot+a61aa19b0c14c8770bd9@syzkaller.appspotmail.com
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-09-03 11:26:40 +02:00
..
2019-07-06 12:50:01 +02:00
2020-08-11 15:33:36 +02:00
2019-06-19 17:09:55 +02:00
2020-01-12 12:21:50 +01:00
2020-08-11 15:33:40 +02:00
2019-11-18 17:08:20 -08:00
2020-07-31 18:39:31 +02:00
2020-06-22 09:30:56 +02:00
2020-08-19 08:15:59 +02:00
2019-07-25 18:00:41 -07:00
2020-04-21 09:04:53 +02:00
2020-07-22 09:32:46 +02:00
2019-10-28 13:33:41 -07:00
2020-08-26 10:41:02 +02:00
2020-07-22 09:33:17 +02:00
2020-09-03 11:26:39 +02:00
2019-05-30 11:29:52 -07:00
2020-06-17 16:40:32 +02:00
2020-01-04 19:18:58 +01:00
2020-04-23 10:36:45 +02:00
2020-06-03 08:21:38 +02:00
2020-01-09 10:20:06 +01:00
2020-04-21 09:04:44 +02:00
2020-03-18 07:17:44 +01:00
2019-09-26 08:56:17 +02:00
2020-09-03 11:26:40 +02:00
2020-09-03 11:26:39 +02:00
2019-07-29 10:26:14 -07:00
2019-09-27 10:27:14 +02:00
2020-08-05 09:59:44 +02:00
2020-07-22 09:32:47 +02:00
2019-06-23 13:24:17 -07:00
2019-06-17 20:20:36 -07:00
2020-07-22 09:32:47 +02:00
2020-08-21 13:05:26 +02:00
2019-05-30 11:26:41 -07:00
2019-12-18 16:08:42 +01:00
2019-09-19 18:04:40 -07:00
2020-08-26 10:40:59 +02:00
2020-05-20 08:20:08 +02:00
2020-07-22 09:32:46 +02:00
2020-04-29 16:33:08 +02:00
2020-08-19 08:16:22 +02:00
2019-06-19 17:09:55 +02:00
2020-08-11 15:33:41 +02:00
2020-08-19 08:16:22 +02:00
2019-10-28 13:33:41 -07:00
2019-12-04 22:30:54 +01:00
2020-07-31 18:39:30 +02:00
2020-08-05 09:59:44 +02:00
2020-01-12 12:21:33 +01:00
2019-10-24 14:53:48 -07:00
2020-08-11 15:33:40 +02:00
2020-07-22 09:32:48 +02:00
2020-07-31 18:39:31 +02:00
2020-03-18 07:17:59 +01:00
2019-06-22 08:59:24 -04:00
2020-08-26 10:40:55 +02:00
2019-05-30 11:26:32 -07:00
2020-06-03 08:21:03 +02:00
2020-08-19 08:16:23 +02:00
2020-01-17 19:48:52 +01:00
2020-07-29 10:18:31 +02:00
2019-08-10 15:25:47 -07:00
2020-08-11 15:33:38 +02:00
2020-08-05 09:59:44 +02:00
2020-06-24 17:50:44 +02:00
2020-08-05 09:59:44 +02:00
2020-08-21 13:05:25 +02:00
2020-04-01 11:02:18 +02:00
2020-08-19 08:16:22 +02:00
2019-05-21 10:50:45 +02:00