Module Name: src Committed By: riastradh Date: Thu Apr 3 05:48:02 UTC 2014
Modified Files: src/sys/external/bsd/drm2/dist/drm: drm_bufs.c src/sys/external/bsd/drm2/drm: drm_fops.c Log Message: Fix up removal of _DRM_SHM mappings and the hardware lock. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_fops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/drm_bufs.c diff -u src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/dist/drm/drm_bufs.c Thu Apr 3 05:48:02 2014 @@ -496,7 +496,7 @@ int drm_rmmap_locked(struct drm_device * } break; case _DRM_SHM: - if (master) { + if (master && (map->flags & _DRM_CONTAINS_LOCK)) { spin_lock(&master->lock.spinlock); /* * If we successfully removed this mapping, Index: src/sys/external/bsd/drm2/drm/drm_fops.c diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.2 src/sys/external/bsd/drm2/drm/drm_fops.c:1.3 --- src/sys/external/bsd/drm2/drm/drm_fops.c:1.2 Tue Mar 18 18:20:42 2014 +++ src/sys/external/bsd/drm2/drm/drm_fops.c Thu Apr 3 05:48:02 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_fops.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $ */ +/* $NetBSD: drm_fops.c,v 1.3 2014/04/03 05:48:02 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.3 2014/04/03 05:48:02 riastradh Exp $"); #include <drm/drmP.h> @@ -315,7 +315,6 @@ drm_close_file_master(struct drm_file *f mutex_lock(&dev->struct_mutex); if (file->is_master) { - struct drm_master *const master = file->master; struct drm_file *other_file; list_for_each_entry(other_file, &dev->filelist, lhead) { @@ -328,18 +327,6 @@ drm_close_file_master(struct drm_file *f other_file->authenticated = 0; } - spin_lock(&master->lock.spinlock); - if (master->lock.hw_lock) { - /* XXX There is copypasta of this in drm_bufs.c. */ - if (dev->sigdata.lock == master->lock.hw_lock) - dev->sigdata.lock = NULL; - master->lock.hw_lock = NULL; - master->lock.file_priv = NULL; - DRM_SPIN_WAKEUP_ALL(&master->lock.lock_queue, - &master->lock.spinlock); - } - spin_unlock(&master->lock.spinlock); - if (file->minor->master == file->master) { if (dev->driver->master_drop) (*dev->driver->master_drop)(dev, file, true);