Module Name: src Committed By: maya Date: Sat Nov 19 17:19:59 UTC 2016
Modified Files: src/sys/external/bsd/drm2/drm: drm_vma_manager.c Log Message: Lock the manager and not just the node for inserting/removing nodes should fix/help PR kern/50349: radeondrmkms vt-switching crash ok riastradh To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_vma_manager.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/drm/drm_vma_manager.c diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.5 --- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 Tue Apr 19 02:52:29 2016 +++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c Sat Nov 19 17:19:59 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $ */ +/* $NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $"); #include <sys/kmem.h> #include <sys/rbtree.h> @@ -180,10 +180,10 @@ drm_vma_offset_add(struct drm_vma_offset node->von_startpage = startpage; node->von_npages = npages; - rw_enter(&node->von_lock, RW_WRITER); + rw_enter(&mgr->vom_lock, RW_WRITER); collision = rb_tree_insert_node(&mgr->vom_nodes, node); KASSERT(collision == node); - rw_exit(&node->von_lock); + rw_exit(&mgr->vom_lock); return 0; } @@ -196,9 +196,9 @@ drm_vma_offset_remove(struct drm_vma_off if (node->von_npages == 0) return; - rw_enter(&node->von_lock, RW_WRITER); + rw_enter(&mgr->vom_lock, RW_WRITER); rb_tree_remove_node(&mgr->vom_nodes, node); - rw_exit(&node->von_lock); + rw_exit(&mgr->vom_lock); vmem_free(mgr->vom_vmem, node->von_startpage, node->von_npages);