projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
8c7a772
)
net: ip6_gre: fix possible NULL pointer dereference in ip6erspan_set_version
author
Lorenzo Bianconi
<
[email protected]
>
Wed, 20 Feb 2019 08:23:03 +0000
(09:23 +0100)
committer
David S. Miller
<
[email protected]
>
Fri, 22 Feb 2019 19:41:26 +0000
(11:41 -0800)
Fix a possible NULL pointer dereference in ip6erspan_set_version checking
nlattr data pointer
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] PREEMPT SMP KASAN
CPU: 1 PID: 7549 Comm: syz-executor432 Not tainted 5.0.0-rc6-next-
20190218
#37
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:ip6erspan_set_version+0x5c/0x350 net/ipv6/ip6_gre.c:1726
Code: 07 38 d0 7f 08 84 c0 0f 85 9f 02 00 00 49 8d bc 24 b0 00 00 00 c6 43
54 01 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f
85 9a 02 00 00 4d 8b ac 24 b0 00 00 00 4d 85 ed 0f
RSP: 0018:
ffff888089ed7168
EFLAGS:
00010202
RAX:
dffffc0000000000
RBX:
ffff8880869d6e58
RCX:
0000000000000000
RDX:
0000000000000016
RSI:
ffffffff862736b4
RDI:
00000000000000b0
RBP:
ffff888089ed7180
R08:
1ffff11010d3adcb
R09:
ffff8880869d6e58
R10:
ffffed1010d3add5
R11:
ffff8880869d6eaf
R12:
0000000000000000
R13:
ffffffff8931f8c0
R14:
ffffffff862825d0
R15:
ffff8880869d6e58
FS:
0000000000b3d880
(0000) GS:
ffff8880ae900000
(0000) knlGS:
0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
CR2:
0000000020000184
CR3:
0000000092cc5000
CR4:
00000000001406e0
DR0:
0000000000000000
DR1:
0000000000000000
DR2:
0000000000000000
DR3:
0000000000000000
DR6:
00000000fffe0ff0
DR7:
0000000000000400
Call Trace:
ip6erspan_newlink+0x66/0x7b0 net/ipv6/ip6_gre.c:2210
__rtnl_newlink+0x107b/0x16c0 net/core/rtnetlink.c:3176
rtnl_newlink+0x69/0xa0 net/core/rtnetlink.c:3234
rtnetlink_rcv_msg+0x465/0xb00 net/core/rtnetlink.c:5192
netlink_rcv_skb+0x17a/0x460 net/netlink/af_netlink.c:2485
rtnetlink_rcv+0x1d/0x30 net/core/rtnetlink.c:5210
netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
netlink_unicast+0x536/0x720 net/netlink/af_netlink.c:1336
netlink_sendmsg+0x8ae/0xd70 net/netlink/af_netlink.c:1925
sock_sendmsg_nosec net/socket.c:621 [inline]
sock_sendmsg+0xdd/0x130 net/socket.c:631
___sys_sendmsg+0x806/0x930 net/socket.c:2136
__sys_sendmsg+0x105/0x1d0 net/socket.c:2174
__do_sys_sendmsg net/socket.c:2183 [inline]
__se_sys_sendmsg net/socket.c:2181 [inline]
__x64_sys_sendmsg+0x78/0xb0 net/socket.c:2181
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x440159
Code: 18 89 d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7
48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
ff 0f 83 fb 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:
00007fffa69156e8
EFLAGS:
00000246
ORIG_RAX:
000000000000002e
RAX:
ffffffffffffffda
RBX:
00000000004002c8
RCX:
0000000000440159
RDX:
0000000000000000
RSI:
0000000020001340
RDI:
0000000000000003
RBP:
00000000006ca018
R08:
0000000000000001
R09:
00000000004002c8
R10:
0000000000000011
R11:
0000000000000246
R12:
00000000004019e0
R13:
0000000000401a70
R14:
0000000000000000
R15:
0000000000000000
Modules linked in:
---[ end trace
09f8a7d13b4faaa1
]---
RIP: 0010:ip6erspan_set_version+0x5c/0x350 net/ipv6/ip6_gre.c:1726
Code: 07 38 d0 7f 08 84 c0 0f 85 9f 02 00 00 49 8d bc 24 b0 00 00 00 c6 43
54 01 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f
85 9a 02 00 00 4d 8b ac 24 b0 00 00 00 4d 85 ed 0f
RSP: 0018:
ffff888089ed7168
EFLAGS:
00010202
RAX:
dffffc0000000000
RBX:
ffff8880869d6e58
RCX:
0000000000000000
RDX:
0000000000000016
RSI:
ffffffff862736b4
RDI:
00000000000000b0
RBP:
ffff888089ed7180
R08:
1ffff11010d3adcb
R09:
ffff8880869d6e58
R10:
ffffed1010d3add5
R11:
ffff8880869d6eaf
R12:
0000000000000000
R13:
ffffffff8931f8c0
R14:
ffffffff862825d0
R15:
ffff8880869d6e58
FS:
0000000000b3d880
(0000) GS:
ffff8880ae900000
(0000) knlGS:
0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
CR2:
0000000020000184
CR3:
0000000092cc5000
CR4:
00000000001406e0
DR0:
0000000000000000
DR1:
0000000000000000
DR2:
0000000000000000
DR3:
0000000000000000
DR6:
00000000fffe0ff0
DR7:
0000000000000400
Fixes: 4974d5f678ab ("net: ip6_gre: initialize erspan_ver just for erspan tunnels")
Reported-and-tested-by:
[email protected]
Signed-off-by: Lorenzo Bianconi <
[email protected]
>
Reviewed-by: Greg Rose <
[email protected]
>
Signed-off-by: David S. Miller <
[email protected]
>
net/ipv6/ip6_gre.c
patch
|
blob
|
history
diff --git
a/net/ipv6/ip6_gre.c
b/net/ipv6/ip6_gre.c
index 0fdd0109d131b8a3c1c9458795148d7661421c9b..26f25b6e2833994d50bd4b96e40c97c64ff23e34 100644
(file)
--- a/
net/ipv6/ip6_gre.c
+++ b/
net/ipv6/ip6_gre.c
@@
-1722,6
+1722,9
@@
static int ip6erspan_tap_validate(struct nlattr *tb[], struct nlattr *data[],
static void ip6erspan_set_version(struct nlattr *data[],
struct __ip6_tnl_parm *parms)
{
+ if (!data)
+ return;
+
parms->erspan_ver = 1;
if (data[IFLA_GRE_ERSPAN_VER])
parms->erspan_ver = nla_get_u8(data[IFLA_GRE_ERSPAN_VER]);