Messages in this thread | | | Subject | Re: [PATCH] Fix reference counting for failed SCSI devices | From | James Bottomley <> | Date | Wed, 25 May 2005 07:27:23 -0500 |
| |
On Wed, 2005-05-25 at 08:50 +0200, Hannes Reinecke wrote: > >>+ class_device_put(&sdev->sdev_classdev); > > > > This is unnecessary since the class device is simply occupying a private > > area in the scsi_device. As long as its never made visible to the > > system, its refcount is irrelevant > > > It's not. Whenever you try to rmmod the adapter it becomes highly > relevant. If it doesn't crash you've at least generated a memleak as the > class device is never freed. > (And these are quite a few for Wide-SCSI Double-channel adapters ...)
? Look at the code; you're not doing a put on a pointer to the sdev_classdev, you're doing a put on a reference to it.
It's defined in scsi_device.h:
struct scsi_device { ... struct class_device sdev_classdev; ... };
so it's contained within the scsi_device. Freeing the scsi_device frees the classdev (and the gendev).
James
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |