Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Aug 2017 21:18:51 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org
Subject:   svn commit: r448501 - in branches/2017Q3/emulators/open-vm-tools: . files
Message-ID:  <201708212118.v7LLIpH0015541@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb (src,doc committer)
Date: Mon Aug 21 21:18:51 2017
New Revision: 448501
URL: https://svnweb.freebsd.org/changeset/ports/448501

Log:
  MFH: r448159
  
  Don't leak lock from os_kmem_alloc().
  
  The current port patches for os_kmem_alloc() add VM object locking.
  However, the lock is not unlocked in the success case because the
  unlock code is inside of an if body instead of after the if statement.
  
  Approved by:	ports-secteam (feld)

Modified:
  branches/2017Q3/emulators/open-vm-tools/Makefile
  branches/2017Q3/emulators/open-vm-tools/files/patch-modules_freebsd_vmmemctl_os.c
Directory Properties:
  branches/2017Q3/   (props changed)

Modified: branches/2017Q3/emulators/open-vm-tools/Makefile
==============================================================================
--- branches/2017Q3/emulators/open-vm-tools/Makefile	Mon Aug 21 21:12:26 2017	(r448500)
+++ branches/2017Q3/emulators/open-vm-tools/Makefile	Mon Aug 21 21:18:51 2017	(r448501)
@@ -4,6 +4,7 @@
 PORTNAME=		open-vm-tools
 PORTVERSION=		${RELEASE_VER}
 PORTEPOCH=		2
+PORTREVISION=		1
 CATEGORIES=		emulators
 
 MAINTAINER=		swills@FreeBSD.org

Modified: branches/2017Q3/emulators/open-vm-tools/files/patch-modules_freebsd_vmmemctl_os.c
==============================================================================
--- branches/2017Q3/emulators/open-vm-tools/files/patch-modules_freebsd_vmmemctl_os.c	Mon Aug 21 21:12:26 2017	(r448500)
+++ branches/2017Q3/emulators/open-vm-tools/files/patch-modules_freebsd_vmmemctl_os.c	Mon Aug 21 21:18:51 2017	(r448501)
@@ -1,5 +1,5 @@
---- modules/freebsd/vmmemctl/os.c.orig	2017-02-24 22:15:37 UTC
-+++ modules/freebsd/vmmemctl/os.c
+--- modules/freebsd/vmmemctl/os.c.orig	2017-02-24 14:15:37.000000000 -0800
++++ modules/freebsd/vmmemctl/os.c	2017-08-15 13:54:03.813152000 -0700
 @@ -37,9 +37,11 @@
  #include <sys/param.h>
  #include <sys/systm.h>
@@ -50,13 +50,10 @@
  
 -   if ( !vm_page_lookup(state->vmobject, page->pindex) ) {
 -      return;
--   }
 +//   if ( !vm_page_lookup(state->vmobject, page->pindex) ) {
 +//      return;
 +//   }
- 
--   os_pmap_putindex(pmap, page->pindex);
--   vm_page_free(page);
++
 +//   os_pmap_putindex(pmap, page->pindex);
 +//   vm_page_free(page);
 +#if __FreeBSD_version > 1000029
@@ -77,7 +74,10 @@
 +#else
 +       vm_page_unlock_queues();
 +#endif
-+   }
+    }
+-
+-   os_pmap_putindex(pmap, page->pindex);
+-   vm_page_free(page);
 +#if __FreeBSD_version > 1000029
 +   VM_OBJECT_WUNLOCK(state->vmobject);
 +#else
@@ -106,18 +106,18 @@
        return NULL;
     }
  
-@@ -504,6 +550,11 @@ os_kmem_alloc(int alloc_normal_failed) /
- 
+@@ -505,6 +551,11 @@ os_kmem_alloc(int alloc_normal_failed) /
     if (!page) {
        os_pmap_putindex(pmap, pindex);
+    }
 +#if __FreeBSD_version > 1000029
 +   VM_OBJECT_WUNLOCK(state->vmobject);
 +#else
 +   VM_OBJECT_UNLOCK(state->vmobject);
 +#endif
-    }
  
     return page;
+ }
 @@ -847,7 +898,7 @@ vmmemctl_sysctl(SYSCTL_HANDLER_ARGS)
  static void
  vmmemctl_init_sysctl(void)



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