On Mon, May 22, 2023 at 10:56:52AM -0500, Shiraz Saleem wrote: > diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c > index ab5cdf7..52084651 100644 > --- a/drivers/infiniband/hw/irdma/verbs.c > +++ b/drivers/infiniband/hw/irdma/verbs.c > @@ -1097,6 +1097,24 @@ static int irdma_query_pkey(struct ib_device *ibdev, u32 port, u16 index, > return 0; > } > > +static u8 irdma_roce_get_vlan_prio(struct net_device __rcu *ndev_rcu, u8 prio) > +{ > + struct net_device *ndev; > + > + rcu_read_lock(); > + ndev = rcu_dereference(ndev_rcu); Well that can't be right You have to call rcu_derference on the actual original load to get the pointer, not on a function argument. Jason