diff --git a/src/drv/gpstime/Makefile b/src/drv/gpstime/Makefile
index 8139d2d76b2d6e8e84cd79de924cc459cdbe40aa..ad71dbc77f4686daa925ae5217816ddeed70d848 100644
--- a/src/drv/gpstime/Makefile
+++ b/src/drv/gpstime/Makefile
@@ -26,6 +26,8 @@ INSTDIR		:= /lib/modules/$(KVER)/extra
 
 SYMVERSDIR	:= /var/cache/$(MODULENAME)
 
+SUDO_USER?= controls
+
 obj-m += $(MODULENAME).o
 $(MODULENAME)-y := $(MODULENAME)_core.o 
 $(MODULENAME)-y += ../../include/drv/spectracomGPS.o
@@ -57,7 +59,7 @@ install:
 	    rm -f /dev/$(MODULENAME) ; \
 	fi
 	mknod /dev/$(MODULENAME) c `grep $(MODULENAME) /proc/devices|awk '{print $$1}'` 0
-	chown controls /dev/$(MODULENAME)
+	chown $(SUDO_USER) /dev/$(MODULENAME)
 	# save Module.symvers if possible
 	mkdir -p $(SYMVERSDIR) || true
 	if [ -w $(SYMVERSDIR) ]; then cp Module.symvers $(SYMVERSDIR); fi
diff --git a/src/drv/mbuf/Makefile b/src/drv/mbuf/Makefile
index 254e96047b2757690cf7889301b9df5742996950..cd57f7d8d811a6413fa7d68534ebcf85b8792412 100644
--- a/src/drv/mbuf/Makefile
+++ b/src/drv/mbuf/Makefile
@@ -24,6 +24,8 @@ INSTDIR		:= /lib/modules/$(KVER)/extra
 
 SYMVERSDIR	:= /var/cache/$(MODULENAME)
 
+SUDO_USER?= controls
+
 ifeq ($(KERNELRELEASE),)
 #all:	$(MODULENAME)_test
 all:
@@ -50,7 +52,7 @@ install:
 	    rm -f /dev/$(MODULENAME) ; \
 	fi
 	mknod /dev/$(MODULENAME) c `grep $(MODULENAME) /proc/devices|awk '{print $$1}'` 0
-	chown controls /dev/$(MODULENAME)
+	chown $(SUDO_USER) /dev/$(MODULENAME)
 	# save Module.symvers if possible
 	mkdir -p $(SYMVERSDIR) || true
 	if [ -w $(SYMVERSDIR) ]; then cp Module.symvers $(SYMVERSDIR); fi
diff --git a/src/epics/util/lib/createUserModuleBuildEnv.pm b/src/epics/util/lib/createUserModuleBuildEnv.pm
index eb93f690b7ef224eb0a3b690f67ea21365f47f50..64eb29d814287071bd6e3632cc8973fb51d382eb 100644
--- a/src/epics/util/lib/createUserModuleBuildEnv.pm
+++ b/src/epics/util/lib/createUserModuleBuildEnv.pm
@@ -28,7 +28,7 @@ my ($makefileDir) = @_;
         print OUTM "set(XMIT_DOLPHIN_TIME YES)\n";
     }
 
-    print OUTM "list(APPEND CFLAGS \"-O2\")\n";
+    print OUTM "list(APPEND CFLAGS \"-O2 -fPIC\")\n";
     print OUTM "list(APPEND CFLAGS \"$::servoflag\")\n";
 
     if ($::iopModel > -1) {  #************ SETUP FOR IOP ***************
diff --git a/src/gds/awgtpman/testpoint.c b/src/gds/awgtpman/testpoint.c
index 487ffd267f4357ad696b583d70b0af6f23263545..09d3a2df980f03b6cebd492abc28cabee78dbbe5 100644
--- a/src/gds/awgtpman/testpoint.c
+++ b/src/gds/awgtpman/testpoint.c
@@ -1078,7 +1078,6 @@ int testAwgTpInterfaceVersion(int node)
         return node_version[ node ];
     }
 
-    testpoint_t     tp[ 128 ];
     resultQueryTP_r result;
     memset (&result, 0, sizeof (resultQueryTP_r));
 
@@ -1095,6 +1094,8 @@ int testAwgTpInterfaceVersion(int node)
         return 0;
     }
 
+    // Test if TP_ASC_TP_INTERFACE is accessible
+    // if so, we must be older version 3, otherwise, something newer.
     if ((querytp_1 (tpNode[node].id, node, TP_ASC_TP_INTERFACE, 128, 0,
                     0, &result, clnt) == RPC_SUCCESS) && (result.status >= 0)) {
         printf("found version 3 or older test point interface\n");
@@ -1106,6 +1107,7 @@ int testAwgTpInterfaceVersion(int node)
         node_version[node] = 4;
     }
 
+    xdr_free ((xdrproc_t)xdr_resultQueryTP_r, (char*) &result);
     clnt_destroy (clnt);
     return node_version[node];
 }
\ No newline at end of file