Eric Dumazet
f8cec30541
erspan: do not use skb_mac_header() in ndo_start_xmit()
[ Upstream commit 8e50ed774554f93d55426039b27b1e38d7fa64d8 ]
Drivers should not assume skb_mac_header(skb) == skb->data in their
ndo_start_xmit().
Use skb_network_offset() and skb_transport_offset() which
better describe what is needed in erspan_fb_xmit() and
ip6erspan_tunnel_xmit()
syzbot reported:
WARNING: CPU: 0 PID: 5083 at include/linux/skbuff.h:2873 skb_mac_header include/linux/skbuff.h:2873 [inline]
WARNING: CPU: 0 PID: 5083 at include/linux/skbuff.h:2873 ip6erspan_tunnel_xmit+0x1d9c/0x2d90 net/ipv6/ip6_gre.c:962
Modules linked in:
CPU: 0 PID: 5083 Comm: syz-executor406 Not tainted 6.3.0-rc2-syzkaller-00866-gd4671cb96fa3 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/02/2023
RIP: 0010:skb_mac_header include/linux/skbuff.h:2873 [inline]
RIP: 0010:ip6erspan_tunnel_xmit+0x1d9c/0x2d90 net/ipv6/ip6_gre.c:962
Code: 04 02 41 01 de 84 c0 74 08 3c 03 0f 8e 1c 0a 00 00 45 89 b4 24 c8 00 00 00 c6 85 77 fe ff ff 01 e9 33 e7 ff ff e8 b4 27 a1 f8 <0f> 0b e9 b6 e7 ff ff e8 a8 27 a1 f8 49 8d bf f0 0c 00 00 48 b8 00
RSP: 0018:ffffc90003b2f830 EFLAGS: 00010293
RAX: 0000000000000000 RBX: 000000000000ffff RCX: 0000000000000000
RDX: ffff888021273a80 RSI: ffffffff88e1bd4c RDI: 0000000000000003
RBP: ffffc90003b2f9d8 R08: 0000000000000003 R09: 000000000000ffff
R10: 000000000000ffff R11: 0000000000000000 R12: ffff88802b28da00
R13: 00000000000000d0 R14: ffff88807e25b6d0 R15: ffff888023408000
FS: 0000555556a61300(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055e5b11eb6e8 CR3: 0000000027c1b000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
__netdev_start_xmit include/linux/netdevice.h:4900 [inline]
netdev_start_xmit include/linux/netdevice.h:4914 [inline]
__dev_direct_xmit+0x504/0x730 net/core/dev.c:4300
dev_direct_xmit include/linux/netdevice.h:3088 [inline]
packet_xmit+0x20a/0x390 net/packet/af_packet.c:285
packet_snd net/packet/af_packet.c:3075 [inline]
packet_sendmsg+0x31a0/0x5150 net/packet/af_packet.c:3107
sock_sendmsg_nosec net/socket.c:724 [inline]
sock_sendmsg+0xde/0x190 net/socket.c:747
__sys_sendto+0x23a/0x340 net/socket.c:2142
__do_sys_sendto net/socket.c:2154 [inline]
__se_sys_sendto net/socket.c:2150 [inline]
__x64_sys_sendto+0xe1/0x1b0 net/socket.c:2150
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f123aaa1039
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 b1 14 00 00 90 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 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc15d12058 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f123aaa1039
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003
RBP: 0000000000000000 R08: 0000000020000040 R09: 0000000000000014
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f123aa648c0
R13: 431bde82d7b634db R14: 0000000000000000 R15: 0000000000000000
Fixes: 1baf5ebf89
("erspan: auto detect truncated packets.")
Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230320163427.8096-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-04-05 11:23:35 +02:00
..
2020-08-10 12:06:44 -07:00
2023-03-17 08:45:11 +01:00
2023-01-04 11:39:24 +01:00
2021-04-14 08:42:05 +02:00
2022-04-13 21:00:57 +02:00
2020-09-25 13:58:01 -07:00
2022-07-21 21:20:08 +02:00
2022-10-30 09:41:19 +01:00
2022-09-28 11:10:35 +02:00
2022-12-02 17:39:58 +01:00
2022-04-27 13:53:48 +02:00
2023-03-22 13:30:00 +01:00
2020-03-29 22:30:57 -07:00
2019-10-04 11:10:56 -07:00
2021-12-08 09:03:26 +01:00
2023-02-01 08:23:25 +01:00
2022-12-02 17:40:01 +01:00
2020-10-02 19:11:11 -07:00
2021-01-12 20:18:12 +01:00
2020-08-03 15:29:44 -07:00
2022-07-29 17:19:12 +02:00
2022-08-03 12:00:46 +02:00
2023-03-11 16:40:19 +01:00
2021-12-22 09:30:53 +01:00
2022-01-27 10:54:33 +01:00
2023-03-11 16:39:50 +01:00
2023-02-01 08:23:15 +01:00
2022-07-21 21:20:07 +02:00
2022-07-29 17:19:12 +02:00
2022-01-27 10:54:33 +01:00
2023-04-05 11:23:35 +02:00
2022-12-02 17:39:58 +01:00
2020-08-25 06:28:02 -07:00
2022-08-31 17:15:19 +02:00
2022-08-31 17:15:20 +02:00
2022-07-07 17:52:19 +02:00
2023-03-22 13:29:58 +01:00
2021-03-17 17:06:12 +01:00
2020-07-09 12:55:37 +02:00
2021-06-18 10:00:05 +02:00
2020-06-30 12:29:39 -07:00
2019-10-04 11:10:56 -07:00
2022-02-16 12:54:25 +01:00
2022-12-02 17:40:05 +01:00
2020-07-10 13:54:00 -07:00
2023-02-01 08:23:24 +01:00
2020-10-30 12:57:39 +01:00
2019-05-21 10:50:45 +02:00
2022-11-03 23:57:54 +09:00
2022-06-09 10:21:09 +02:00
2021-11-18 14:04:08 +01:00
2019-05-30 11:26:32 -07:00
2020-03-12 22:34:48 -07:00
2022-06-09 10:21:09 +02:00
2022-07-29 17:19:12 +02:00
2023-01-14 10:16:51 +01:00
2022-11-10 18:14:26 +01:00
2021-08-18 08:59:13 +02:00
2020-03-16 18:26:54 -07:00
2023-02-15 17:22:10 +01:00
2022-11-25 17:45:55 +01:00
2021-05-14 09:50:46 +02:00
2021-12-01 09:19:06 +01:00
2019-05-30 11:26:32 -07:00
2018-10-10 22:26:00 -07:00
2020-02-27 18:50:19 -08:00
2022-07-29 17:19:18 +02:00
2020-07-06 13:23:03 -07:00
2020-07-06 13:23:03 -07:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2022-11-03 23:57:52 +09:00
2022-12-02 17:40:01 +01:00
2019-05-21 10:50:45 +02:00
2022-08-03 12:00:45 +02:00
2023-03-11 16:40:13 +01:00
2019-05-21 10:50:45 +02:00
2021-08-12 13:22:05 +02:00
2023-03-22 13:29:57 +01:00
2022-05-09 09:05:03 +02:00
2022-07-29 17:19:21 +02:00
2020-08-24 17:31:20 -07:00
2022-07-29 17:19:21 +02:00
2023-01-24 07:20:01 +01:00
2020-10-13 17:11:52 -07:00
2017-11-02 11:10:55 +01:00
2020-07-06 13:23:03 -07:00
2019-05-21 10:50:45 +02:00
2020-03-16 18:26:55 -07:00
2023-02-01 08:23:16 +01:00
2020-07-09 12:51:36 +02:00
2021-07-28 14:35:37 +02:00
2020-03-12 22:34:48 -07:00
2020-07-24 15:41:54 -07:00
2021-08-12 13:22:05 +02:00
2023-01-14 10:15:43 +01:00
2022-03-02 11:42:51 +01:00
2020-07-10 13:54:00 -07:00
2022-10-30 09:41:19 +01:00
2020-07-19 18:16:41 -07:00
2020-05-06 09:40:08 +02:00
2020-05-11 15:12:27 +02:00
2019-12-24 22:28:54 -08:00
2022-06-14 18:32:40 +02:00
2020-05-06 09:40:08 +02:00
2020-10-09 12:29:48 +02:00