On Tuesday 21 April 2015, Dan Carpenter wrote:
> Hello Ondrej Zary,
>
> The patch 1b0224b0ec60: "aha1542: rework locking" from Feb 6, 2015,
> leads to the following static checker warning:
>
> drivers/scsi/aha1542.c:448 aha1542_queuecommand()
> error: scheduling with locks held: 'spin_lock:host_lock'
>
> drivers/scsi/aha1542.c
> 400 /* Use the outgoing mailboxes in a round-robin fashion,
> because this
> 401 is how the host adapter will scan for them */
> 402
> 403 spin_lock_irqsave(sh->host_lock, flags);
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Holding lock.
>
> 404 mbo = aha1542->aha1542_last_mbo_used + 1;
> 405 if (mbo >= AHA1542_MAILBOXES)
> 406 mbo = 0;
> 407
>
> [ snip ]
>
> 442 if (bufflen) {
> 443 struct scatterlist *sg;
> 444 struct chain *cptr;
> 445 int i, sg_count = scsi_sg_count(cmd);
> 446
> 447 ccb[mbo].op = 2; /* SCSI Initiator Command
> w/scatter-gather */
> 448 cmd->host_scribble = kmalloc(sizeof(*cptr)*sg_count,
> 449 GFP_KERNEL |
> GFP_DMA);
> ^^^^^^^^^^
> Sleeping allocation.
Thanks, I missed that as it was already wrong before (since at least when
DEF_SCSI_QCMD was introduced). And it worked despite that.
Should I just change that to GFP_ATOMIC?
--
Ondrej Zary
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html