On 11/18/2010 03:06 AM, Mike Christie wrote: > On 11/17/2010 04:18 PM, Nicholas A. Bellinger wrote: >> prepd_fault: >> sc->scsi_done = NULL; > >> - done(sc); >> - spin_lock(host->host_lock); >> + sc->scsi_done(sc); >> return 0; > > This will NULL pointer. See a couple lines above where we NULL it. > iscsi_free_task checks if the scsi_done pointer is set and if it is it > will call scsi_done. > > It is a hack to prevent the normal completion path from calling > scsi_done. For the case where we return SCSI_MLQUEUE_TARGET_BUSY (the > prepd_reject case) we need something to prevent scsi_done from getting > called. > > For the return 0/prepd_fault case we can just call sc->scsi_done, but we > have to move some code around. > > I do not like how the code does the NULLing and testing. Let me work on > this and send a tested patch. Mike if you are on this. Do you think we need the _irqsave locking. I always thought that the network receive is not on the HW interrupt but on a completion thread. Could you verify? Thanks Boaz -- 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