On Monday 10 September 2012 17:16:22 Aaron Lu wrote: > +static int sr_resume(struct device *dev) > +{ > + struct scsi_cd *cd; > + struct scsi_sense_hdr sshdr; > + > + cd = dev_get_drvdata(dev); > + > + if (!cd->device->powered_off) > + return 0; > + > + /* get the disk ready */ > + scsi_test_unit_ready(cd->device, SR_TIMEOUT, MAX_RETRIES, &sshdr); > + > + /* if user wakes up the ODD, eject the tray */ > + if (cd->device->need_eject) { > + cd->device->need_eject = 0; > + if (!(cd->cdi.mask & CDC_CLOSE_TRAY)) > + sr_tray_move(&cd->cdi, 1); 1. Even if the door is locked? 2. sr_tray_move allocates memory with GFP_KERNEL. This smells of a deadlock. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html