From: Stephen Rothwell This patch stops an oops caused by certain ioctls being performed on the virtual cdrom. In particular, the eject and tray close operations were affected. --- 25-akpm/drivers/cdrom/viocd.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff -puN drivers/cdrom/viocd.c~ppc64-iseries-virtual-cd-fix drivers/cdrom/viocd.c --- 25/drivers/cdrom/viocd.c~ppc64-iseries-virtual-cd-fix 2004-03-23 02:05:25.378245416 -0800 +++ 25-akpm/drivers/cdrom/viocd.c 2004-03-23 02:05:25.380245112 -0800 @@ -338,8 +338,9 @@ static void do_viocd_request(request_que struct request *req; while ((rwreq == 0) && ((req = elv_next_request(q)) != NULL)) { - /* check for any kind of error */ - if (send_request(req) < 0) { + if (!blk_fs_request(req)) + end_request(req, 0); + else if (send_request(req) < 0) { printk(VIOCD_KERN_WARNING "unable to send message to OS/400!"); end_request(req, 0); _