On 04/10/2014 01:51 PM, Christoph Hellwig wrote: >> static int >> ch_release(struct inode *inode, struct file *file) >> { >> scsi_changer *ch = file->private_data; >> >> scsi_device_put(ch->device); >> + ch->device = NULL; >> file->private_data = NULL; >> + kref_put(&ch->ref, ch_destroy); > > Any reason you need to put the scsi_device here already? Defering > this would give you much eaiser life time rules, and no need to > deal with a NULL ch->device ever. > Sure. But this would require a far more in-depth analysis of the lifetime of the ch object, and most likely a far more intrusive patch. You're welcome to do so :-) This patch is just a minimal fix; I didn't dare to change too much of the internals. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@xxxxxxx +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html