Re: Linux 3.0 oopses when pulling a USB CDROM

From: Andi Kleen
Date: Sat Jul 02 2011 - 14:11:52 EST


> The problem is that blk_peek_request() calls scsi_prep_fn(), which
> does this:
>
> struct scsi_device *sdev = q->queuedata;
> int ret = BLKPREP_KILL;
>
> if (req->cmd_type == REQ_TYPE_BLOCK_PC)
> ret = scsi_setup_blk_pc_cmnd(sdev, req);
> return scsi_prep_return(q, req, ret);
>
> It doesn't check to see if sdev is NULL, nor does
> scsi_setup_blk_pc_cmnd(). That accounts for this error:

I actually added a NULL check in scsi_setup_blk_pc_cmnd early on,
but that just caused RCU CPU stalls afterwards and then eventually
a hung system.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/