diff options
Diffstat (limited to 'drivers/scsi/scsi_debug.c')
| -rw-r--r-- | drivers/scsi/scsi_debug.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index c607755cce00..ff78ef702f22 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -7519,12 +7519,13 @@ static int sdebug_blk_mq_poll(struct Scsi_Host *shost, unsigned int queue_num)  	struct sdebug_defer *sd_dp;  	sqp = sdebug_q_arr + queue_num; -	qc_idx = find_first_bit(sqp->in_use_bm, sdebug_max_queue); -	if (qc_idx >= sdebug_max_queue) -		return 0;  	spin_lock_irqsave(&sqp->qc_lock, iflags); +	qc_idx = find_first_bit(sqp->in_use_bm, sdebug_max_queue); +	if (qc_idx >= sdebug_max_queue) +		goto unlock; +  	for (first = true; first || qc_idx + 1 < sdebug_max_queue; )   {  		if (first) {  			first = false; @@ -7589,6 +7590,7 @@ static int sdebug_blk_mq_poll(struct Scsi_Host *shost, unsigned int queue_num)  			break;  	} +unlock:  	spin_unlock_irqrestore(&sqp->qc_lock, iflags);  	if (num_entries > 0) |