• Baowen Zheng's avatar
    flow_offload: fix suspicious RCU usage when offloading tc action · 963178a0
    Baowen Zheng authored
    Fix suspicious rcu_dereference_protected() usage when offloading tc action.
    
    We should hold tcfa_lock to offload tc action in action initiation.
    
    Without these changes, the following warning will be observed:
    
    WARNING: suspicious RCU usage
    5.16.0-rc5-net-next-01504-g7d1f236dcffa-dirty #50 Tainted: G          I
    -----------------------------
    include/net/tc_act/tc_tunnel_key.h:33 suspicious rcu_dereference_protected() usage!
    1 lock held by tc/12108:
    CPU: 4 PID: 12108 Comm: tc Tainted: G
    Hardware name: Dell Inc. PowerEdge R740/07WCGN, BIOS 1.6.11 11/20/2018
    Call Trace:
    <TASK>
    dump_stack_lvl+0x49/0x5e
    dump_stack+0x10/0x12
    lockdep_rcu_suspicious+0xed/0xf8
    tcf_tunnel_key_offload_act_setup+0x1de/0x300 [act_tunnel_key]
    tcf_action_offload_add_ex+0xc0/0x1f0
    tcf_action_init+0x26a/0x2f0
    tcf_action_add+0xa9/0x1f0
    tc_ctl_action+0xfb/0x170
    rtnetlink_rcv_msg+0x169/0x510
    ? sched_clock+0x9/0x10
    ? rtnl_newlink+0x70/0x70
    netlink_rcv_skb+0x55/0x100
    rtnetlink_rcv+0x15/0x20
    netlink_unicast+0x1a8/0x270
    netlink_sendmsg+0x245/0x490
    sock_sendmsg+0x65/0x70
    ____sys_sendmsg+0x219/0x260
    ? __import_iovec+0x2c/0x150
    ___sys_sendmsg+0xb7/0x100
    ? __lock_acquire+0x3d5/0x1f40
    ? __this_cpu_preempt_check+0x13/0x20
    ? lock_is_held_type+0xe4/0x140
    ? sched_clock+0x9/0x10
    ? ktime_get_coarse_real_ts64+0xbe/0xd0
    ? __this_cpu_preempt_check+0x13/0x20
    ? lockdep_hardirqs_on+0x7e/0x100
    ? ktime_get_coarse_real_ts64+0xbe/0xd0
    ? trace_hardirqs_on+0x2a/0xf0
    __sys_sendmsg+0x5a/0xa0
    ? syscall_trace_enter.constprop.0+0x1dd/0x220
    __x64_sys_sendmsg+0x1f/0x30
    do_syscall_64+0x3b/0x90
    entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f4db7bb7a60
    
    Fixes: 8cbfe939
    
     ("flow_offload: allow user to offload tc action to net device")
    Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarBaowen Zheng <baowen.zheng@corigine.com>
    Signed-off-by: default avatarLouis Peens <louis.peens@corigine.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    963178a0
act_api.c 50.1 KB