components/trousers/patches/tspi_tsp_policy.c.patch
author James Chang <james.c.chang@Oracle.COM>
Tue, 10 Feb 2015 16:44:23 -0800
branchs11-update
changeset 3763 3b1d75f94ef2
parent 791 4b6378a2fe0a
permissions -rw-r--r--
19078473 ejabberd version 2.1.13 needs a TPNO at the appropriate juncture 3 of 11

--- src/tspi/tsp_policy.c	2010-05-01 19:39:11.000000000 -0700
+++ src/tspi/tsp_policy.c	2012-04-20 18:10:16.757128000 -0700
@@ -86,15 +86,13 @@
 int
 pin_mem(void *addr, size_t len)
 {
-	/* only root can lock pages into RAM */
-	if (getuid() != (uid_t)0) {
-		LogWarn("Not pinning secrets in memory due to insufficient perms.");
-		return 0;
-	}
-
 	len += (uintptr_t)addr & PGOFFSET;
 	addr = (void *)((uintptr_t)addr & PGMASK);
 	if (mlock(addr, len) == -1) {
+		if (errno == EPERM) {
+			LogWarn("Not pinning secrets in memory due to insufficient perms.");
+			return 0;
+		}
 		LogError("mlock: %s", strerror(errno));
 		return 1;
 	}
@@ -105,14 +103,12 @@
 int
 unpin_mem(void *addr, size_t len)
 {
-	/* only root can lock pages into RAM */
-	if (getuid() != (uid_t)0) {
-		return 0;
-	}
-
 	len += (uintptr_t)addr & PGOFFSET;
 	addr = (void *)((uintptr_t)addr & PGMASK);
 	if (munlock(addr, len) == -1) {
+		if (errno == EPERM) {
+			return 0;
+		}
 		LogError("mlock: %s", strerror(errno));
 		return 1;
 	}