Re: [PATCH] IB/ipoib: No need to hold the lock while printing the warning

From: Jason Gunthorpe
Date: Mon Dec 11 2023 - 08:25:30 EST


On Mon, Dec 11, 2023 at 03:22:17PM +0200, Leon Romanovsky wrote:

> Please fill some text in commit message.

Yes, explain *why* you are doing this

> > diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> > index 5b3154503bf4..ae2c05806dcc 100644
> > --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> > +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
> > @@ -536,17 +536,17 @@ static int ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast)
> > multicast = ib_sa_join_multicast(&ipoib_sa_client, priv->ca, priv->port,
> > &rec, comp_mask, GFP_KERNEL,
> > ipoib_mcast_join_complete, mcast);
> > - spin_lock_irq(&priv->lock);
> > if (IS_ERR(multicast)) {
> > ret = PTR_ERR(multicast);
> > ipoib_warn(priv, "ib_sa_join_multicast failed, status %d\n", ret);
> > + spin_lock_irq(&priv->lock);
> > /* Requeue this join task with a backoff delay */
> > __ipoib_mcast_schedule_join_thread(priv, mcast, 1);
> > clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags);
> > spin_unlock_irq(&priv->lock);
> > complete(&mcast->done);
> > - spin_lock_irq(&priv->lock);

It is super weird to unlock just around complete.

Jason