From c7f7b6d7e2f46753381de51e4b0b00211a1a6b5f Mon Sep 17 00:00:00 2001 From: Robert Noland Date: Fri, 29 Aug 2008 12:29:50 -0400 Subject: [FreeBSD] Fix a couple of locking problems. --- bsd-core/drm_drv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bsd-core/drm_drv.c b/bsd-core/drm_drv.c index 32b284e1..47c212e2 100644 --- a/bsd-core/drm_drv.c +++ b/bsd-core/drm_drv.c @@ -460,7 +460,9 @@ static int drm_lastclose(struct drm_device *dev) dev->magiclist[i].head = dev->magiclist[i].tail = NULL; } + DRM_UNLOCK(); drm_drawable_free_all(dev); + DRM_LOCK(); /* Clear AGP information */ if ( dev->agp ) { @@ -655,8 +657,11 @@ static void drm_unload(struct drm_device *dev) dev->agp = NULL; } - if (dev->driver.unload != NULL) + if (dev->driver.unload != NULL) { + DRM_LOCK(); dev->driver.unload(dev); + DRM_UNLOCK(); + } delete_unrhdr(dev->drw_unrhdr); -- cgit v1.2.3