All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baowen Zheng <baowen.zheng@corigine.com>
To: Eric Dumazet <eric.dumazet@gmail.com>,
	Simon Horman <simon.horman@corigine.com>,
	David Miller <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Claudiu Manoil <claudiu.manoil@nxp.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Ido Schimmel <idosch@nvidia.com>,
	Jamal Hadi Salim <jhs@mojatatu.com>,
	Jiri Pirko <jiri@resnulli.us>, Leon Romanovsky <leon@kernel.org>,
	Michael Chan <michael.chan@broadcom.com>,
	Oz Shlomo <ozsh@nvidia.com>, Petr Machata <petrm@nvidia.com>,
	Roi Dayan <roid@nvidia.com>, Saeed Mahameed <saeedm@nvidia.com>,
	Vivien Didelot <vivien.didelot@gmail.com>,
	Vlad Buslov <vladbu@nvidia.com>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	Louis Peens <louis.peens@corigine.com>,
	"UNGLinuxDriver@microchip.com" <UNGLinuxDriver@microchip.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	oss-drivers <oss-drivers@corigine.com>
Subject: RE: [PATCH v8 net-next 06/13] flow_offload: allow user to offload tc action to net device
Date: Mon, 20 Dec 2021 09:32:23 +0000	[thread overview]
Message-ID: <DM5PR1301MB21723F73786883C7FEC0D1CFE77B9@DM5PR1301MB2172.namprd13.prod.outlook.com> (raw)
In-Reply-To: <3d678d71-cc44-1824-7b9b-c12482078be6@gmail.com>

Hi Eric, thanks for bring this to us. We will make some verification and fix this ASAP.
Could you please make some description on how to trigger this issue? 

On December 20, 2021 4:48 PM, Eric Dumazet wrote:
>On 12/17/21 10:16 AM, Simon Horman wrote:
>> From: Baowen Zheng <baowen.zheng@corigine.com>
>>
>> Use flow_indr_dev_register/flow_indr_dev_setup_offload to offload tc
>> action.
>>
>> We need to call tc_cleanup_flow_action to clean up tc action entry
>> since in tc_setup_action, some actions may hold dev refcnt, especially
>> the mirror action.
>>
>> Signed-off-by: Baowen Zheng <baowen.zheng@corigine.com>
>> Signed-off-by: Louis Peens <louis.peens@corigine.com>
>> Signed-off-by: Simon Horman <simon.horman@corigine.com>
>> ---
>
>
>Hi there.
>
>
>I think this is causing the following syzbot splat, please take a look, thanks !
>
>
>WARNING: suspicious RCU usage
>5.16.0-rc5-syzkaller #0 Not tainted
>-----------------------------
>include/net/tc_act/tc_tunnel_key.h:33 suspicious
>rcu_dereference_protected() usage!
>
>other info that might help us debug this:
>
>
>rcu_scheduler_active = 2, debug_locks = 1
>1 lock held by syz-executor393/3602:
>  #0: ffffffff8d313968 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock
>net/core/rtnetlink.c:72 [inline]
>  #0: ffffffff8d313968 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock
>net/core/rtnetlink.c:72 [inline] net/core/rtnetlink.c:5567
>  #0: ffffffff8d313968 (rtnl_mutex){+.+.}-{3:3}, at:
>rtnetlink_rcv_msg+0x3be/0xb80 net/core/rtnetlink.c:5567
>net/core/rtnetlink.c:5567
>
>stack backtrace:
>CPU: 1 PID: 3602 Comm: syz-executor393 Not tainted 5.16.0-rc5-syzkaller #0
>Hardware name: Google Google Compute Engine/Google Compute Engine,
>BIOS
>Google 01/01/2011
>Call Trace:
>  <TASK>
>  __dump_stack lib/dump_stack.c:88 [inline]
>  __dump_stack lib/dump_stack.c:88 [inline] lib/dump_stack.c:106
>  dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 lib/dump_stack.c:106
>  is_tcf_tunnel_set include/net/tc_act/tc_tunnel_key.h:33 [inline]
>  is_tcf_tunnel_set include/net/tc_act/tc_tunnel_key.h:33 [inline]
>net/sched/act_tunnel_key.c:832
>  tcf_tunnel_key_offload_act_setup+0x4f2/0xa20
>net/sched/act_tunnel_key.c:832 net/sched/act_tunnel_key.c:832
>  offload_action_init net/sched/act_api.c:194 [inline]
>  offload_action_init net/sched/act_api.c:194 [inline]
>net/sched/act_api.c:263
>  tcf_action_offload_add_ex+0x279/0x550 net/sched/act_api.c:263
>net/sched/act_api.c:263
>  tcf_action_offload_add net/sched/act_api.c:294 [inline]
>  tcf_action_offload_add net/sched/act_api.c:294 [inline]
>net/sched/act_api.c:1439
>  tcf_action_init+0x601/0x860 net/sched/act_api.c:1439
>net/sched/act_api.c:1439
>  tcf_action_add+0xf9/0x480 net/sched/act_api.c:1940
>net/sched/act_api.c:1940
>  tc_ctl_action+0x346/0x470 net/sched/act_api.c:1999
>net/sched/act_api.c:1999
>  rtnetlink_rcv_msg+0x413/0xb80 net/core/rtnetlink.c:5570
>net/core/rtnetlink.c:5570
>  netlink_rcv_skb+0x153/0x420 net/netlink/af_netlink.c:2492
>net/netlink/af_netlink.c:2492
>  netlink_unicast_kernel net/netlink/af_netlink.c:1315 [inline]
>  netlink_unicast_kernel net/netlink/af_netlink.c:1315 [inline]
>net/netlink/af_netlink.c:1341
>  netlink_unicast+0x533/0x7d0 net/netlink/af_netlink.c:1341
>net/netlink/af_netlink.c:1341
>  netlink_sendmsg+0x904/0xdf0 net/netlink/af_netlink.c:1917
>net/netlink/af_netlink.c:1917
>  sock_sendmsg_nosec net/socket.c:704 [inline]
>  sock_sendmsg_nosec net/socket.c:704 [inline] net/socket.c:724
>  sock_sendmsg+0xcf/0x120 net/socket.c:724 net/socket.c:724
>  ____sys_sendmsg+0x6e8/0x810 net/socket.c:2409 net/socket.c:2409
>  ___sys_sendmsg+0xf3/0x170 net/socket.c:2463 net/socket.c:2463
>  __sys_sendmsg+0xe5/0x1b0 net/socket.c:2492 net/socket.c:2492
>  do_syscall_x64 arch/x86/entry/common.c:50 [inline]
>  do_syscall_x64 arch/x86/entry/common.c:50 [inline]
>arch/x86/entry/common.c:80
>  do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
>arch/x86/entry/common.c:80
>  entry_SYSCALL_64_after_hwframe+0x44/0xae
>RIP: 0033:0x7f896932b2a9
>Code: 28 c3 e8 2a 14 00 00 66 2e 0f 1f 84 00 00 00 00 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 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
>RSP: 002b:00007ffeff6cc4d8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
>RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f896932b2a9
>RDX: 0000000000000000 RSI: 0000000020000300 RDI: 0000000000000003
>
>
>
>>   include/linux/netdevice.h  |  1 +
>>   include/net/flow_offload.h | 17 +++++++
>>   include/net/pkt_cls.h      |  5 ++
>>   net/core/flow_offload.c    | 42 +++++++++++++----
>>   net/sched/act_api.c        | 93
>++++++++++++++++++++++++++++++++++++++
>>   net/sched/act_csum.c       |  4 +-
>>   net/sched/act_ct.c         |  4 +-
>>   net/sched/act_gact.c       | 13 +++++-
>>   net/sched/act_gate.c       |  4 +-
>>   net/sched/act_mirred.c     | 13 +++++-
>>   net/sched/act_mpls.c       | 16 ++++++-
>>   net/sched/act_police.c     |  4 +-
>>   net/sched/act_sample.c     |  4 +-
>>   net/sched/act_skbedit.c    | 11 ++++-
>>   net/sched/act_tunnel_key.c |  9 +++-
>>   net/sched/act_vlan.c       | 16 ++++++-
>>   net/sched/cls_api.c        | 21 +++++++--
>>   17 files changed, 254 insertions(+), 23 deletions(-)
>>
>> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
>> index a419718612c6..8b0bdeb4734e 100644
>> --- a/include/linux/netdevice.h
>> +++ b/include/linux/netdevice.h
>> @@ -920,6 +920,7 @@ enum tc_setup_type {
>>   	TC_SETUP_QDISC_TBF,
>>   	TC_SETUP_QDISC_FIFO,
>>   	TC_SETUP_QDISC_HTB,
>> +	TC_SETUP_ACT,
>>   };
>>
>>   /* These structures hold the attributes of bpf state that are being passed
>> diff --git a/include/net/flow_offload.h b/include/net/flow_offload.h
>> index 2271da5aa8ee..5b8c54eb7a6b 100644
>> --- a/include/net/flow_offload.h
>> +++ b/include/net/flow_offload.h
>> @@ -551,6 +551,23 @@ struct flow_cls_offload {
>>   	u32 classid;
>>   };
>>
>> +enum offload_act_command  {
>> +	FLOW_ACT_REPLACE,
>> +	FLOW_ACT_DESTROY,
>> +	FLOW_ACT_STATS,
>> +};
>> +
>> +struct flow_offload_action {
>> +	struct netlink_ext_ack *extack; /* NULL in FLOW_ACT_STATS
>process*/
>> +	enum offload_act_command  command;
>> +	enum flow_action_id id;
>> +	u32 index;
>> +	struct flow_stats stats;
>> +	struct flow_action action;
>> +};
>> +
[..]

  reply	other threads:[~2021-12-20  9:32 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 18:16 [PATCH v8 net-next 00/13] allow user to offload tc action to net device Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 01/13] flow_offload: fill flags to action structure Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 02/13] flow_offload: reject to offload tc actions in offload drivers Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 03/13] flow_offload: add index to flow_action_entry structure Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 04/13] flow_offload: rename offload functions with offload instead of flow Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 05/13] flow_offload: add ops to tc_action_ops for flow action setup Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 06/13] flow_offload: allow user to offload tc action to net device Simon Horman
2021-12-20  8:48   ` Eric Dumazet
2021-12-20  9:32     ` Baowen Zheng [this message]
2021-12-23  6:34   ` [flow_offload] 28798f55fe: WARNING:suspicious_RCU_usage kernel test robot
2021-12-23  6:34     ` kernel test robot
2021-12-23  6:42     ` Baowen Zheng
2021-12-23  6:42     ` Baowen Zheng
2021-12-23  6:42       ` Baowen Zheng
2021-12-17 18:16 ` [PATCH v8 net-next 07/13] flow_offload: add skip_hw and skip_sw to control if offload the action Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 08/13] flow_offload: rename exts stats update functions with hw Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 09/13] flow_offload: add process to update action stats from hardware Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 10/13] net: sched: save full flags for tc action Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 11/13] flow_offload: add reoffload process to update hw_count Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 12/13] flow_offload: validate flags of filter and actions Simon Horman
2021-12-17 18:16 ` [PATCH v8 net-next 13/13] selftests: tc-testing: add action offload selftest for action and filter Simon Horman
2021-12-19 14:30 ` [PATCH v8 net-next 00/13] allow user to offload tc action to net device patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM5PR1301MB21723F73786883C7FEC0D1CFE77B9@DM5PR1301MB2172.namprd13.prod.outlook.com \
    --to=baowen.zheng@corigine.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=claudiu.manoil@nxp.com \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=f.fainelli@gmail.com \
    --cc=idosch@nvidia.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=louis.peens@corigine.com \
    --cc=michael.chan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=oss-drivers@corigine.com \
    --cc=ozsh@nvidia.com \
    --cc=petrm@nvidia.com \
    --cc=roid@nvidia.com \
    --cc=saeedm@nvidia.com \
    --cc=simon.horman@corigine.com \
    --cc=vivien.didelot@gmail.com \
    --cc=vladbu@nvidia.com \
    --cc=vladimir.oltean@nxp.com \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.