[FreeBSD] Fix a couple of locking problems.
authorRobert Noland <rnoland@2hip.net>
Fri, 29 Aug 2008 16:29:50 +0000 (12:29 -0400)
committerRobert Noland <rnoland@2hip.net>
Fri, 29 Aug 2008 19:46:05 +0000 (15:46 -0400)
bsd-core/drm_drv.c

index 32b284e..47c212e 100644 (file)
@@ -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);