From 3d77461ecd7fb92bb888f69478e3518b3c947ce3 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 7 Aug 2006 20:07:43 +1000 Subject: drm: cleanup old compat code and DRM fns from Linux only code This patch removes some of the old compatibility macros from the DRM, and removes use of DRM wrappers from Linux specific code. Signed-off-by: Dave Airlie --- drivers/char/drm/drm_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/char/drm/drm_drv.c') diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c index 3c0b882a8e7..3da72f7364f 100644 --- a/drivers/char/drm/drm_drv.c +++ b/drivers/char/drm/drm_drv.c @@ -118,7 +118,7 @@ static drm_ioctl_desc_t drm_ioctls[] = { [DRM_IOCTL_NR(DRM_IOCTL_WAIT_VBLANK)] = {drm_wait_vblank, 0}, }; -#define DRIVER_IOCTL_COUNT DRM_ARRAY_SIZE( drm_ioctls ) +#define DRIVER_IOCTL_COUNT ARRAY_SIZE( drm_ioctls ) /** * Take down the DRM device. -- cgit v1.2.3 From 8669cbc5e651bf4effa20e8c244a5a7d67da6fe9 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Mon, 7 Aug 2006 22:22:10 +1000 Subject: drm: move drm authentication to new generic hash table. Fix drm_remove_magic potential memory leak / corruption. Move drm authentication token hashing to new generic hash table implementation. Signed-off-by: Dave Airlie --- drivers/char/drm/drm_drv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'drivers/char/drm/drm_drv.c') diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c index 3da72f7364f..f9ecc8414b8 100644 --- a/drivers/char/drm/drm_drv.c +++ b/drivers/char/drm/drm_drv.c @@ -155,12 +155,10 @@ int drm_lastclose(drm_device_t * dev) del_timer(&dev->timer); /* Clear pid list */ - for (i = 0; i < DRM_HASH_SIZE; i++) { - for (pt = dev->magiclist[i].head; pt; pt = next) { - next = pt->next; - drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC); - } - dev->magiclist[i].head = dev->magiclist[i].tail = NULL; + list_for_each_entry_safe(pt, next, &dev->magicfree, head) { + list_del(&pt->head); + drm_ht_remove_item(&dev->magiclist, &pt->hash_item); + drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC); } /* Clear AGP information */ -- cgit v1.2.3 From 0a0c721dc5d0de011e5d363cd454c60c66ca00ec Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Wed, 16 Aug 2006 09:21:56 +1000 Subject: drm: avoid kernel oops in some error paths calling drm_lastclose Signed-off-by: Dave Airlie --- drivers/char/drm/drm_drv.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'drivers/char/drm/drm_drv.c') diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c index f9ecc8414b8..654b95cdd9a 100644 --- a/drivers/char/drm/drm_drv.c +++ b/drivers/char/drm/drm_drv.c @@ -155,10 +155,12 @@ int drm_lastclose(drm_device_t * dev) del_timer(&dev->timer); /* Clear pid list */ - list_for_each_entry_safe(pt, next, &dev->magicfree, head) { - list_del(&pt->head); - drm_ht_remove_item(&dev->magiclist, &pt->hash_item); - drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC); + if (dev->magicfree.next) { + list_for_each_entry_safe(pt, next, &dev->magicfree, head) { + list_del(&pt->head); + drm_ht_remove_item(&dev->magiclist, &pt->hash_item); + drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC); + } } /* Clear AGP information */ -- cgit v1.2.3 From 1f4eccfdb2a5f8b2751aea8cf2d6b00401c156e0 Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Fri, 18 Aug 2006 16:37:10 +1000 Subject: drm: remove hash tables on drm exit Signed-off-by: Dave Airlie --- drivers/char/drm/drm_drv.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'drivers/char/drm/drm_drv.c') diff --git a/drivers/char/drm/drm_drv.c b/drivers/char/drm/drm_drv.c index 654b95cdd9a..b366c5b1bd1 100644 --- a/drivers/char/drm/drm_drv.c +++ b/drivers/char/drm/drm_drv.c @@ -161,6 +161,7 @@ int drm_lastclose(drm_device_t * dev) drm_ht_remove_item(&dev->magiclist, &pt->hash_item); drm_free(pt, sizeof(*pt), DRM_MEM_MAGIC); } + drm_ht_remove(&dev->magiclist); } /* Clear AGP information */ @@ -299,6 +300,7 @@ static void drm_cleanup(drm_device_t * dev) if (dev->maplist) { drm_free(dev->maplist, sizeof(*dev->maplist), DRM_MEM_MAPS); dev->maplist = NULL; + drm_ht_remove(&dev->map_hash); } drm_ctxbitmap_cleanup(dev); -- cgit v1.2.3