[ofa-general] [PATCH 1/2] IB/core: handle race between elements in qork queues after event
Roland Dreier
rdreier at cisco.com
Mon May 19 15:12:15 PDT 2008
By the way:
> + struct ib_sa_sm_ah *sm_ah;
> +
> + spin_lock_irqsave(&port->ah_lock, flags);
> + sm_ah = port->sm_ah;
> + port->sm_ah = NULL;
> + spin_unlock_irqrestore(&port->ah_lock, flags);
> +
> + if (sm_ah)
> + kref_put(&sm_ah->ref, free_sm_ah);
Is there some reason why this can't be simpler like:
spin_lock_irqsave(&port->ah_lock, flags);
if (port->sm_ah)
kref_put(&port->sm_ah->ref, free_sm_ah);
port->sm_ah = NULL;
spin_unlock_irqrestore(&port->ah_lock, flags);
I guess the same cleanup applies to update_sm_ah(), except after your
patch I don't see any way that update_sm_ah() could be called with sm_ah
anything but NULL, so we could drop the old_ah stuff completely there.
- R.
More information about the general
mailing list