Yue Haibing
30e0191b16
ip6mr: Fix skb_under_panic in ip6mr_cache_report()
...
skbuff: skb_under_panic: text:ffffffff88771f69 len:56 put:-4
head:ffff88805f86a800 data:ffff887f5f86a850 tail:0x88 end:0x2c0 dev:pim6reg
------------[ cut here ]------------
kernel BUG at net/core/skbuff.c:192!
invalid opcode: 0000 [#1 ] PREEMPT SMP KASAN
CPU: 2 PID: 22968 Comm: kworker/2:11 Not tainted 6.5.0-rc3-00044-g0a8db05b571a #236
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Workqueue: ipv6_addrconf addrconf_dad_work
RIP: 0010:skb_panic+0x152/0x1d0
Call Trace:
<TASK>
skb_push+0xc4/0xe0
ip6mr_cache_report+0xd69/0x19b0
reg_vif_xmit+0x406/0x690
dev_hard_start_xmit+0x17e/0x6e0
__dev_queue_xmit+0x2d6a/0x3d20
vlan_dev_hard_start_xmit+0x3ab/0x5c0
dev_hard_start_xmit+0x17e/0x6e0
__dev_queue_xmit+0x2d6a/0x3d20
neigh_connected_output+0x3ed/0x570
ip6_finish_output2+0x5b5/0x1950
ip6_finish_output+0x693/0x11c0
ip6_output+0x24b/0x880
NF_HOOK.constprop.0+0xfd/0x530
ndisc_send_skb+0x9db/0x1400
ndisc_send_rs+0x12a/0x6c0
addrconf_dad_completed+0x3c9/0xea0
addrconf_dad_work+0x849/0x1420
process_one_work+0xa22/0x16e0
worker_thread+0x679/0x10c0
ret_from_fork+0x28/0x60
ret_from_fork_asm+0x11/0x20
When setup a vlan device on dev pim6reg, DAD ns packet may sent on reg_vif_xmit().
reg_vif_xmit()
ip6mr_cache_report()
skb_push(skb, -skb_network_offset(pkt));//skb_network_offset(pkt) is 4
And skb_push declared as:
void *skb_push(struct sk_buff *skb, unsigned int len);
skb->data -= len;
//0xffff88805f86a84c - 0xfffffffc = 0xffff887f5f86a850
skb->data is set to 0xffff887f5f86a850, which is invalid mem addr, lead to skb_push() fails.
Fixes: 14fb64e1f449 ("[IPV6] MROUTE: Support PIM-SM (SSM).")
Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2023-08-02 10:35:21 +01:00
..
2023-03-01 08:48:46 +00:00
2023-05-16 20:46:30 -07:00
2022-06-09 21:52:55 -07:00
2023-07-24 15:51:21 -07:00
2022-11-07 12:26:15 +00:00
2023-06-24 15:50:13 -07:00
2023-02-13 18:35:15 +08:00
2021-03-04 15:26:57 -08:00
2023-02-09 22:49:04 -08:00
2023-06-22 18:40:38 -07:00
2023-02-13 18:35:15 +08:00
2023-05-24 08:43:39 +01:00
2023-06-19 11:32:58 -07:00
2022-02-08 20:41:34 -08:00
2023-07-08 10:08:54 +01:00
2023-03-17 08:25:05 +00:00
2022-09-20 10:21:49 -07:00
2022-02-04 20:24:45 -08:00
2022-08-29 12:47:15 +01:00
2023-05-11 18:07:05 -07:00
2023-03-21 21:32:18 -07:00
2023-07-19 12:25:58 +01:00
2021-02-23 11:29:52 -08:00
2023-03-22 21:50:23 +01:00
2023-06-10 00:11:41 -07:00
2023-06-16 11:45:16 -07:00
2023-03-15 00:04:04 -07:00
2022-11-16 12:48:44 +00:00
2023-08-02 10:35:21 +01:00
2022-09-29 07:18:00 +02:00
2023-04-14 11:09:27 +01:00
2022-07-15 16:43:59 +08:00
2021-09-28 13:13:40 +01:00
2021-04-27 14:02:06 -07:00
2023-03-17 08:56:37 +00:00
2022-09-29 07:18:01 +02:00
2023-03-15 00:37:32 -07:00
2022-05-16 13:03:29 +02:00
2022-11-18 02:15:22 +01:00
2023-07-29 18:13:41 +01:00
2023-01-26 10:52:18 +01:00
2023-07-29 18:13:41 +01:00
2023-05-16 20:46:30 -07:00
2023-07-29 18:13:41 +01:00
2023-01-06 19:28:01 -08:00
2023-06-19 11:32:58 -07:00
2022-06-28 21:23:30 -07:00
2023-05-17 09:05:47 +01:00
2023-02-16 13:18:06 +01:00
2022-09-08 18:38:30 +02:00
2023-04-28 09:48:14 +01:00
2022-07-18 12:21:54 +01:00
2022-05-03 10:15:06 +02:00
2023-07-29 18:13:41 +01:00
2023-05-31 09:50:17 +01:00
2022-10-12 17:50:37 -07:00
2023-07-29 17:10:27 +01:00
2023-07-29 18:13:41 +01:00
2023-06-15 15:08:58 -07:00
2023-06-09 08:16:34 +02:00
2022-03-01 12:08:40 +01:00
2023-04-21 20:26:56 -07:00
2022-09-29 07:18:00 +02:00