Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/bsd/drm2/drm open_count is protected by drm_glo...
details: https://anonhg.NetBSD.org/src/rev/5ad9cc25fa98
branches: trunk
changeset: 992514:5ad9cc25fa98
user: riastradh <riastradh%NetBSD.org@localhost>
date: Mon Aug 27 06:51:29 2018 +0000
description:
open_count is protected by drm_global_mutex; count_lock is no more.
diffstat:
sys/external/bsd/drm2/drm/drm_cdevsw.c | 20 ++++++++++----------
1 files changed, 10 insertions(+), 10 deletions(-)
diffs (81 lines):
diff -r e56092fe45ff -r 5ad9cc25fa98 sys/external/bsd/drm2/drm/drm_cdevsw.c
--- a/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:51:17 2018 +0000
+++ b/sys/external/bsd/drm2/drm/drm_cdevsw.c Mon Aug 27 06:51:29 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $ */
+/* $NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -58,6 +58,7 @@
#include <linux/pm.h>
#include <drm/drmP.h>
+#include <drm/drm_internal.h>
#include "../dist/drm/drm_legacy.h"
static dev_type_open(drm_open);
@@ -139,15 +140,15 @@
goto fail1;
}
- spin_lock(&dev->count_lock);
+ mutex_lock(&drm_global_mutex);
if (dev->open_count == INT_MAX) {
- spin_unlock(&dev->count_lock);
+ mutex_unlock(&drm_global_mutex);
error = EBUSY;
goto fail1;
}
firstopen = (dev->open_count == 0);
dev->open_count++;
- spin_unlock(&dev->count_lock);
+ mutex_lock(&drm_global_mutex);
if (firstopen) {
/* XXX errno Linux->NetBSD */
@@ -174,11 +175,11 @@
fail3: kmem_free(file, sizeof(*file));
fd_abort(curproc, fp, fd);
-fail2: spin_lock(&dev->count_lock);
+fail2: mutex_lock(&drm_global_mutex);
KASSERT(0 < dev->open_count);
--dev->open_count;
lastclose = (dev->open_count == 0);
- spin_unlock(&dev->count_lock);
+ mutex_unlock(&drm_global_mutex);
if (lastclose)
(void)drm_lastclose(dev);
fail1: drm_minor_release(dminor);
@@ -197,11 +198,11 @@
drm_close_file(file);
kmem_free(file, sizeof(*file));
- spin_lock(&dev->count_lock);
+ mutex_lock(&drm_global_mutex);
KASSERT(0 < dev->open_count);
--dev->open_count;
lastclose = (dev->open_count == 0);
- spin_unlock(&dev->count_lock);
+ mutex_unlock(&drm_global_mutex);
if (lastclose)
(void)drm_lastclose(dev);
@@ -255,7 +256,6 @@
drm_legacy_sg_cleanup(dev);
drm_legacy_vma_flush(dev);
drm_legacy_dma_takedown(dev);
-
mutex_unlock(&dev->struct_mutex);
drm_legacy_dev_reinit(dev);
Home |
Main Index |
Thread Index |
Old Index