Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Jun 2020 16:54:00 +0000 (UTC)
From:      Conrad Meyer <cem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r362784 - head/sys/vm
Message-ID:  <202006291654.05TGs0qK060433@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cem
Date: Mon Jun 29 16:54:00 2020
New Revision: 362784
URL: https://svnweb.freebsd.org/changeset/base/362784

Log:
  vm: Add missing WITNESS warnings for M_WAITOK allocation
  
  vm_map_clip_{end,start} and lookup_clip_start allocate memory M_WAITOK
  for !system_map vm_maps.  Add WITNESS warning annotation for !system_map
  callers who may be holding non-sleepable locks.
  
  Reviewed by:	markj
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D25283

Modified:
  head/sys/vm/vm_map.c

Modified: head/sys/vm/vm_map.c
==============================================================================
--- head/sys/vm/vm_map.c	Mon Jun 29 15:15:14 2020	(r362783)
+++ head/sys/vm/vm_map.c	Mon Jun 29 16:54:00 2020	(r362784)
@@ -2379,6 +2379,11 @@ vm_map_clip_start(vm_map_t map, vm_map_entry_t entry, 
 {
 	vm_map_entry_t new_entry;
 
+	if (!map->system_map)
+		WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
+		    "%s: map %p entry %p start 0x%jx", __func__, map, entry,
+		    (uintmax_t)start);
+
 	if (start <= entry->start)
 		return;
 
@@ -2409,6 +2414,11 @@ vm_map_lookup_clip_start(vm_map_t map, vm_offset_t sta
 {
 	vm_map_entry_t entry;
 
+	if (!map->system_map)
+		WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
+		    "%s: map %p start 0x%jx prev %p", __func__, map,
+		    (uintmax_t)start, prev_entry);
+
 	if (vm_map_lookup_entry(map, start, prev_entry)) {
 		entry = *prev_entry;
 		vm_map_clip_start(map, entry, start);
@@ -2430,6 +2440,11 @@ vm_map_clip_end(vm_map_t map, vm_map_entry_t entry, vm
 {
 	vm_map_entry_t new_entry;
 
+	if (!map->system_map)
+		WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL,
+		    "%s: map %p entry %p end 0x%jx", __func__, map, entry,
+		    (uintmax_t)end);
+
 	if (end >= entry->end)
 		return;
 
@@ -3725,6 +3740,7 @@ vm_map_delete(vm_map_t map, vm_offset_t start, vm_offs
 	vm_map_entry_t entry, next_entry;
 
 	VM_MAP_ASSERT_LOCKED(map);
+
 	if (start == end)
 		return (KERN_SUCCESS);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202006291654.05TGs0qK060433>