Re: linux kernel panic when ejecting ieee1394 ipod

Patrick Mansfield
2005-12-08T17:34:57Z

On Thu, Dec 08, 2005 at 03:44:42AM +0100, Stefan Richter wrote:

> What if you replace WRITE by READ in
> drivers/scsi/scsi_ioctl.c::scsi_cmd_ioctl()::case CDROMEJECT ?

You must mean block/scsi_ioctl.c? i.e.:

diff -uprN -X /home/patman/dontdiff linux-2.6.15-rc5-git1/block/scsi_ioctl.c mod- linux-2.6.15-rc5-git1/block/scsi_ioctl.c
--- /home/linux/views/linux-2.6.15-rc5-git1/block/scsi_ioctl.c 2005-12-03 22:51:54.000000000 -0800
+++ linux-2.6.15-rc5-git1/block/scsi_ioctl.c 2005-12-08 09:31:52.000000000 -0800
@@ -566,7 +566,7 @@ int scsi_cmd_ioctl(struct file *file, st
case CDROMCLOSETRAY:
close = 1;
case CDROMEJECT:
- rq = blk_get_request(q, WRITE, __GFP_WAIT);
+ rq = blk_get_request(q, READ, __GFP_WAIT);
rq->flags |= REQ_BLOCK_PC;
rq->data = NULL;
rq->data_len = 0;

> And BTW, can/should this latter case block be converted to use
> scsi_execute() or scsi_execute_req()?

And then scsi_cmd_ioctl() already uses blk layer REQ_BLOCK_PC.

-- Patrick Mansfield