• Jason Xing's avatar
    i40e: fix the panic when running bpf in xdpdrv mode · 4e39a072
    Jason Xing authored
    Fix this panic by adding more rules to calculate the value of @rss_size_max
    which could be used in allocating the queues when bpf is loaded, which,
    however, could cause the failure and then trigger the NULL pointer of
    vsi->rx_rings. Prio to this fix, the machine doesn't care about how many
    cpus are online and then allocates 256 queues on the machine with 32 cpus
    online actually.
    
    Once the load of bpf begins, the log will go like this "failed to get
    tracking for 256 queues for VSI 0 err -12" and this "setup of MAIN VSI
    failed".
    
    Thus, I attach the key information of the crash-log here.
    
    BUG: unable to handle kernel NULL pointer dereference at
    0000000000000000
    RIP: 0010:i40e_xdp+0xdd/0x1b0 [i40e]
    Call Trace:
    [2160294.717292]  ? i40e_reconfig_rss_queues+0x170/0x170 [i40e]
    [2160294.717666]  dev_xdp_install+0x4f/0x70
    [2160294.718036]  dev_change_xdp_fd+0x11f/0x230
    [2160294.718380]  ? dev_disable_lro+0xe0/0xe0
    [2160294.718705]  do_setlink+0xac7/0xe70
    [2160294.719035]  ? __nla_parse+0xed/0x120
    [2160294.719365]  rtnl_newlink+0x73b/0x860
    
    Fixes: 41c445ff ("i40e: main driver core")
    Co-developed-by: default avatarShujin Li <lishujin@kuaishou.com>
    Signed-off-by: default avatarShujin Li <lishujin@kuaishou.com>
    Signed-off-by: default avatarJason Xing <xingwanli@kuaishou.com>
    Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4e39a072
i40e_main.c 450 KB