--- linux/drivers/cdrom/cdrom.c 2004-12-28 14:49:56.000000000 +0300 +++ linux/drivers/cdrom/cdrom.c 2004-12-28 14:55:09.228038640 +0300 @@ -1076,6 +1076,8 @@ } cdinfo(CD_OPEN, "the tray is now closed.\n"); } + /* the door should be closed now, check for the disc */ + ret = cdo->drive_status(cdi, CDSL_CURRENT); if (ret!=CDS_DISC_OK) { ret = -ENOMEDIUM; goto clean_up_and_return; --- linux/drivers/ide/ide-cd.c 2004-12-28 09:15:40.000000000 +0300 +++ linux/drivers/ide/ide-cd.c 2004-12-28 14:46:44.119826760 +0300 @@ -2744,9 +2744,9 @@ */ if (sense.sense_key == NOT_READY) { if (sense.asc == 0x3a) { - if (sense.ascq == 0 || sense.ascq == 1) + if (sense.ascq == 1) return CDS_NO_DISC; - else if (sense.ascq == 2) + else if (sense.ascq == 0 || sense.ascq == 2) return CDS_TRAY_OPEN; } }