* [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker
@ 2021-07-29 15:57 George Kennedy
2021-07-29 15:57 ` [PATCH 5.4.y 1/1] net_sched: check error pointer in tcf_dump_walker() George Kennedy
2021-07-29 16:49 ` [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker Sasha Levin
0 siblings, 2 replies; 3+ messages in thread
From: George Kennedy @ 2021-07-29 15:57 UTC (permalink / raw)
To: gregkh
Cc: george.kennedy, xiyou.wangcong, jhs, jiri, stable, dhaval.giani,
dan.carpenter, netdev
During Syzkaller reproducer testing on 5.4.y (5.4.121-rc1) the following warning occurred:
general protection fault in tcf_generic_walker
https://syzkaller.appspot.com//bug?id=a85a4c2d373f7f8ff9ac5ee351e60d3c042cc781
This missing upstream commit is needed to fix the crash in 5.4.y:
580e4273d7a883ececfefa692c1f96bdbacb99b5 net_sched: check error pointer in tcf_dump_walker()
debugfs: Directory 'sg0' with parent 'block' already present!
blktrace: debugfs_dir not present for sg0 so skipping
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] SMP KASAN NOPTI
CPU: 0 PID: 16603 Comm: syz-executor.7 Not tainted 5.4.135-rc1-syzk #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.el7 04/01/2014
RIP: 0010:tcf_dump_walker net/sched/act_api.c:236 [inline]
RIP: 0010:tcf_generic_walker+0x3ac/0xbd0 net/sched/act_api.c:340
Code: 31 ff 48 89 de e8 e4 92 b9 f5 48 85 db 74 44 e8 aa 91 b9 f5 49 8d 7c 24 30 48 b9 00 00 00 00 00 fc ff df 48 89 f8 48 c1 e8 03 <80> 3c 08 00 0f 85 06 07 00 00 49 8b 5c 24 30 48 2b 9d 18 ff ff ff
RSP: 0018:ffff888048f37240 EFLAGS: 00010212
RAX: 0000000000000004 RBX: 0000000100261497 RCX: dffffc0000000000
RDX: 00000000000006e0 RSI: ffffffff8bbbbc06 RDI: 0000000000000020
RBP: ffff888048f37388 R08: ffff888046e61740 R09: ffffed10091e6e3c
R10: ffffed10091e6e3b R11: ffff888048f371df R12: fffffffffffffff0
R13: 00000000ffffffff R14: 0000000000000000 R15: ffff8880665488c0
FS: 00007fdde8ed0700(0000) GS:ffff88810b200000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000001b2fb21000 CR3: 0000000050326000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff4ff0 DR7: 0000000000000600
Call Trace:
tunnel_key_walker+0x91/0xe0 net/sched/act_tunnel_key.c:577
tc_dump_action+0x748/0xf50 net/sched/act_api.c:1524
netlink_dump+0x53b/0xe80 net/netlink/af_netlink.c:2247
__netlink_dump_start+0x5a2/0x7d0 net/netlink/af_netlink.c:2355
netlink_dump_start include/linux/netlink.h:233 [inline]
rtnetlink_rcv_msg+0x707/0xb00 net/core/rtnetlink.c:5222
netlink_rcv_skb+0x178/0x490 net/netlink/af_netlink.c:2480
rtnetlink_rcv+0x21/0x30 net/core/rtnetlink.c:5277
netlink_unicast_kernel net/netlink/af_netlink.c:1305 [inline]
netlink_unicast+0x561/0x710 net/netlink/af_netlink.c:1331
netlink_sendmsg+0x8c9/0xda0 net/netlink/af_netlink.c:1920
sock_sendmsg_nosec net/socket.c:637 [inline]
sock_sendmsg+0x155/0x190 net/socket.c:657
____sys_sendmsg+0x738/0x8c0 net/socket.c:2284
___sys_sendmsg+0x10f/0x190 net/socket.c:2338
__sys_sendmsg+0x115/0x1f0 net/socket.c:2384
__do_sys_sendmsg net/socket.c:2393 [inline]
__se_sys_sendmsg net/socket.c:2391 [inline]
__x64_sys_sendmsg+0x7d/0xc0 net/socket.c:2391
do_syscall_64+0xe6/0x4d0 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x4595f9
Code: fc ff 48 81 c4 80 00 00 00 e9 f1 fe ff ff 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 0b 42 fc ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007fdde8ecfc48 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 000000000002e680 RCX: 00000000004595f9
RDX: 0000000000000000 RSI: 0000000020000200 RDI: 0000000000000004
RBP: 000000000077bf00 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 000000000077bf0c
R13: 0000000000021000 R14: 000000000077bf00 R15: 00007fdde8ed0700
Modules linked in:
Cong Wang (1):
net_sched: check error pointer in tcf_dump_walker()
net/sched/act_api.c | 2 ++
1 file changed, 2 insertions(+)
--
1.8.3.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 5.4.y 1/1] net_sched: check error pointer in tcf_dump_walker()
2021-07-29 15:57 [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker George Kennedy
@ 2021-07-29 15:57 ` George Kennedy
2021-07-29 16:49 ` [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker Sasha Levin
1 sibling, 0 replies; 3+ messages in thread
From: George Kennedy @ 2021-07-29 15:57 UTC (permalink / raw)
To: gregkh
Cc: george.kennedy, xiyou.wangcong, jhs, jiri, stable, dhaval.giani,
dan.carpenter, netdev
From: Cong Wang <xiyou.wangcong@gmail.com>
Although we take RTNL on dump path, it is possible to
skip RTNL on insertion path. So the following race condition
is possible:
rtnl_lock() // no rtnl lock
mutex_lock(&idrinfo->lock);
// insert ERR_PTR(-EBUSY)
mutex_unlock(&idrinfo->lock);
tc_dump_action()
rtnl_unlock()
So we have to skip those temporary -EBUSY entries on dump path
too.
Reported-and-tested-by: syzbot+b47bc4f247856fb4d9e1@syzkaller.appspotmail.com
Fixes: 0fedc63fadf0 ("net_sched: commit action insertions together")
Cc: Vlad Buslov <vladbu@mellanox.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 580e4273d7a883ececfefa692c1f96bdbacb99b5)
Signed-off-by: George Kennedy <george.kennedy@oracle.com>
---
net/sched/act_api.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/sched/act_api.c b/net/sched/act_api.c
index 17e5cd9..75132d0 100644
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -231,6 +231,8 @@ static int tcf_dump_walker(struct tcf_idrinfo *idrinfo, struct sk_buff *skb,
index++;
if (index < s_i)
continue;
+ if (IS_ERR(p))
+ continue;
if (jiffy_since &&
time_after(jiffy_since,
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker
2021-07-29 15:57 [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker George Kennedy
2021-07-29 15:57 ` [PATCH 5.4.y 1/1] net_sched: check error pointer in tcf_dump_walker() George Kennedy
@ 2021-07-29 16:49 ` Sasha Levin
1 sibling, 0 replies; 3+ messages in thread
From: Sasha Levin @ 2021-07-29 16:49 UTC (permalink / raw)
To: George Kennedy
Cc: gregkh, xiyou.wangcong, jhs, jiri, stable, dhaval.giani,
dan.carpenter, netdev
On Thu, Jul 29, 2021 at 10:57:33AM -0500, George Kennedy wrote:
>During Syzkaller reproducer testing on 5.4.y (5.4.121-rc1) the following warning occurred:
>
>general protection fault in tcf_generic_walker
>https://syzkaller.appspot.com//bug?id=a85a4c2d373f7f8ff9ac5ee351e60d3c042cc781
>
>This missing upstream commit is needed to fix the crash in 5.4.y:
>580e4273d7a883ececfefa692c1f96bdbacb99b5 net_sched: check error pointer in tcf_dump_walker()
I'll queue it up, thanks!
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-07-29 16:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-29 15:57 [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker George Kennedy
2021-07-29 15:57 ` [PATCH 5.4.y 1/1] net_sched: check error pointer in tcf_dump_walker() George Kennedy
2021-07-29 16:49 ` [PATCH 5.4.y 0/0] Missing commit 580e4273 causing: general protection fault in tcf_generic_walker Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).