Commit 68f03bd1 authored by Satish Kharat's avatar Satish Kharat Committed by Martin K. Petersen

scsi: fnic: use fnic_lock to guard fnic->state_flags

Need to use fnic_lock as well as host lock in that order to set state
flags.

[mkp: typos]
Signed-off-by: default avatarSatish Kharat <satishkh@cisco.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 5271d1ca
...@@ -180,20 +180,19 @@ void ...@@ -180,20 +180,19 @@ void
__fnic_set_state_flags(struct fnic *fnic, unsigned long st_flags, __fnic_set_state_flags(struct fnic *fnic, unsigned long st_flags,
unsigned long clearbits) unsigned long clearbits)
{ {
struct Scsi_Host *host = fnic->lport->host;
int sh_locked = spin_is_locked(host->host_lock);
unsigned long flags = 0; unsigned long flags = 0;
unsigned long host_lock_flags = 0;
if (!sh_locked) spin_lock_irqsave(&fnic->fnic_lock, flags);
spin_lock_irqsave(host->host_lock, flags); spin_lock_irqsave(fnic->lport->host->host_lock, host_lock_flags);
if (clearbits) if (clearbits)
fnic->state_flags &= ~st_flags; fnic->state_flags &= ~st_flags;
else else
fnic->state_flags |= st_flags; fnic->state_flags |= st_flags;
if (!sh_locked) spin_unlock_irqrestore(fnic->lport->host->host_lock, host_lock_flags);
spin_unlock_irqrestore(host->host_lock, flags); spin_unlock_irqrestore(&fnic->fnic_lock, flags);
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment