On Mon, Feb 23, 2026 at 10:52:13AM +0100, Larysa Zaremba wrote:

...

> diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h 
> b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
> index eada53c57fcf..67d10e6e9910 100644
> --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
> +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
> @@ -82,20 +82,22 @@ struct ixgbevf_ring {
>       struct net_device *netdev;
>       struct bpf_prog *xdp_prog;

...

> diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c 
> b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c

...

> @@ -784,11 +865,19 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector 
> *q_vector,
>       unsigned int total_rx_bytes = 0, total_rx_packets = 0;
>       struct ixgbevf_adapter *adapter = q_vector->adapter;
>       u16 cleaned_count = ixgbevf_desc_unused(rx_ring);
> +     LIBETH_XDP_ONSTACK_BULK(xdp_tx_bulk);
>       LIBETH_XDP_ONSTACK_BUFF(xdp);
> +     u32 cached_ntu;
>       bool xdp_xmit = false;
>       int xdp_res = 0;
>  
>       libeth_xdp_init_buff(xdp, &rx_ring->xdp_stash, &rx_ring->xdp_rxq);
> +     libeth_xdp_tx_init_bulk(&xdp_tx_bulk, rx_ring->xdp_prog,
> +                             adapter->netdev, adapter->xdp_ring,
> +                             adapter->num_xdp_queues);

Hi Larysa,

Sparse flags that libeth_xdp_tx_init_bulk() expects xdp_prog to be managed
using __rcu, but that is not the case for rx_ring->xdp_prog.

  .../ixgbevf_main.c:875:9: error: incompatible types in comparison expression 
(different address spaces):
  .../ixgbevf_main.c:875:9:    struct bpf_prog [noderef] __rcu *
  .../ixgbevf_main.c:875:9:    struct bpf_prog *

...

Reply via email to