On Fri, Feb 03, 2017 at 02:40:44PM -0800, Himanshu Madhani wrote: > - spin_lock_irqsave(&ha->vport_slock, flags); > - while (atomic_read(&vha->vref_count)) { > - spin_unlock_irqrestore(&ha->vport_slock, flags); > - > + while (count-- && atomic_read(&vha->vref_count)) > msleep(500); Please add a wait queue to skeep on while waiting for vref_count to drop to zero.