• Jesse Brandeburg's avatar
    ixgbe: XDP: fix checker warning from rcu pointer · 3fe1d0a4
    Jesse Brandeburg authored
    The ixgbe driver uses an older style failure mode when initializing the
    XDP program and the queues. It causes some warnings when running C=2
    checking builds (and it's the last one in the ethernet/intel tree).
    
    $ make W=1 C=2 M=`pwd`/drivers/net/ethernet/intel modules
    .../ixgbe_main.c:10301:25: error: incompatible types in comparison expression (different address spaces):
    .../ixgbe_main.c:10301:25:    struct bpf_prog [noderef] __rcu *
    .../ixgbe_main.c:10301:25:    struct bpf_prog *
    
    Fix the problem by removing the line that tried to re-xchg "the old_prog
    pointer" if there was an error, to make this driver act like the other
    drivers which return the error code without "pointer restoration."
    
    Also, update the "copy the pointer" logic to use WRITE_ONCE as many/all
    the other drivers do, which required making a change in two separate
    functions that write the xdp_prog variable in the ring.
    
    The code here was modeled after the code in i40e/i40e_xdp_setup().
    
    NOTE: Compile-tested only.
    
    CC: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    CC: Magnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Acked-by: default avatarMaciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com> (A Contingent Worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    3fe1d0a4
ixgbe_main.c 317 KB