The tests for QUEUE_FLAG_REENTER seem unnecessary. And check for get_device() is added. Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx> --- --- o/linux-2.6.36-rc4/drivers/scsi/scsi_transport_fc.c 2010-09-13 07:07:38.000000000 +0800 +++ m/linux-2.6.36-rc4/drivers/scsi/scsi_transport_fc.c 2010-09-21 22:05:38.000000000 +0800 @@ -3766,16 +3766,11 @@ fc_bsg_goose_queue(struct fc_rport *rpor if (!rport->rqst_q) return; - get_device(&rport->dev); + if (! get_device(&rport->dev)) + return; spin_lock_irqsave(rport->rqst_q->queue_lock, flags); - flagset = test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags) && - !test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags); - if (flagset) - queue_flag_set(QUEUE_FLAG_REENTER, rport->rqst_q); __blk_run_queue(rport->rqst_q); - if (flagset) - queue_flag_clear(QUEUE_FLAG_REENTER, rport->rqst_q); spin_unlock_irqrestore(rport->rqst_q->queue_lock, flags); put_device(&rport->dev); -- 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