csio_scsim_cleanup_io_lnode always called with spin_lock_irq held. Please refer: csio_attr.c:624: csio_scsim_cleanup_io_lnode(csio_hw_to_scsim(hw), ln); csio_attr.c:649: csio_scsim_cleanup_io_lnode(csio_hw_to_scsim(hw), ln); -----Original Message----- From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi-owner@xxxxxxxxxxxxxxx] On Behalf Of Anish Bhatt Sent: Thursday, September 03, 2015 7:07 AM To: Nicholas Krause; JBottomley@xxxxxxxx Cc: hare@xxxxxxx; michaelc@xxxxxxxxxxx; davem@xxxxxxxxxxxxx; Hariprasad S; linux-scsi@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx Subject: RE: [PATCH] csiostor:Fix locking issues in the function csio_scsim_cleanup_io_lnode > -----Original Message----- > From: Nicholas Krause [mailto:xerofoify@xxxxxxxxx] > Sent: Wednesday, September 2, 2015 10:36 AM > To: JBottomley@xxxxxxxx > Cc: hare@xxxxxxx; michaelc@xxxxxxxxxxx; davem@xxxxxxxxxxxxx; Anish > Bhatt; Hariprasad S; linux-scsi@xxxxxxxxxxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx > Subject: [PATCH] csiostor:Fix locking issues in the function > csio_scsim_cleanup_io_lnode > > This fixes locking issues in the function csio_scsim_cleanup_io_lnode > by locking around the call to the function csio_csci_gather_active_ios > with the function pair spin_lock_irq/spin_unlock_irq as any function > calling this particular function must do in order to avoid concurrent > threads of execution on the passed structure pointer of type csio_hw > as this structure pointer can be shared across mutliple threads in the kernel. > > Signed-off-by: Nicholas Krause <xerofoify@xxxxxxxxx> > --- > drivers/scsi/csiostor/csio_scsi.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/scsi/csiostor/csio_scsi.c > b/drivers/scsi/csiostor/csio_scsi.c > index 2c4562d..c318855 100644 > --- a/drivers/scsi/csiostor/csio_scsi.c > +++ b/drivers/scsi/csiostor/csio_scsi.c > @@ -1327,7 +1327,9 @@ csio_scsim_cleanup_io_lnode(struct csio_scsim > *scm, struct csio_lnode *ln) > sld.level = CSIO_LEV_LNODE; > sld.lnode = ln; > INIT_LIST_HEAD(&ln->cmpl_q); > + spin_lock_irq(&hw->lock); > csio_scsi_gather_active_ios(scm, &sld, &ln->cmpl_q); > + spin_unlock_irq(&hw->lock); > > /* No I/Os pending on this lnode */ > if (list_empty(&ln->cmpl_q)) > -- > 2.1.4 Acked-By: Anish Bhatt <anish@xxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html