aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-02-25 14:28:24 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-02-25 14:28:24 -0500
commit8fed43684174b68f04d01d1210fd00536af790df (patch)
treedf8d5f87c68526267d0ae320173814ed3f417fd5 /include/linux
parentd3dd7107f4d843d0f01d0f77d49a7c5449130577 (diff)
ide: fix refcounting in device drivers
During host driver module removal del_gendisk() results in a final put on drive->gendev and freeing the drive by drive_release_dev(). Convert device drivers from using struct kref to use struct device so device driver's object holds reference on ->gendev and prevents drive from prematurely going away. Also fix ->remove methods to not erroneously drop reference on a host driver by using only put_device() instead of ide*_put(). Reported-by: Stanislaw Gruszka <stf_xl@wp.pl> Tested-by: Stanislaw Gruszka <stf_xl@wp.pl> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ide.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 194da5a4b0d6..fe235b65207e 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -663,7 +663,7 @@ typedef struct ide_drive_s ide_drive_t;
663#define to_ide_device(dev) container_of(dev, ide_drive_t, gendev) 663#define to_ide_device(dev) container_of(dev, ide_drive_t, gendev)
664 664
665#define to_ide_drv(obj, cont_type) \ 665#define to_ide_drv(obj, cont_type) \
666 container_of(obj, struct cont_type, kref) 666 container_of(obj, struct cont_type, dev)
667 667
668#define ide_drv_g(disk, cont_type) \ 668#define ide_drv_g(disk, cont_type) \
669 container_of((disk)->private_data, struct cont_type, driver) 669 container_of((disk)->private_data, struct cont_type, driver)