On Mon, Sep 10, 2012 at 12:45:51PM +0200, Oliver Neukum wrote: > 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? This piece of code of sr_resume is intended for ZPODD devices, for normal devices it will simply return as the powered_off flag will never be set for them. And for ZPODD devices, the door shouldn't be in locked state here since for it to enter power off state, "no medium inside" has to be satisfied and when there is no medium inside, we do not lock its door. > 2. sr_tray_move allocates memory with GFP_KERNEL. This smells of a deadlock. Sorry, don't get this. Can you please elaborate? Thanks, Aaron -- 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