svn commit: r325887 - in head/sys/cddl: compat/opensolaris/kern contrib/opensolaris/uts/intel/dtrace

Mark Johnston markj at FreeBSD.org
Thu Nov 16 07:25:14 UTC 2017


Author: markj
Date: Thu Nov 16 07:25:12 2017
New Revision: 325887
URL: https://svnweb.freebsd.org/changeset/base/325887

Log:
  Avoid holding the process in uread() and uwrite().
  
  In general, higher-level code will atomically verify that the process
  is not exiting and hold the process. In one case, we were using uwrite()
  to copy a probed instruction to a per-thread scratch space block, but
  copyout() can be used for this purpose instead; this change effectively
  reverts r227291.
  
  MFC after:	1 week

Modified:
  head/sys/cddl/compat/opensolaris/kern/opensolaris_proc.c
  head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c

Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_proc.c
==============================================================================
--- head/sys/cddl/compat/opensolaris/kern/opensolaris_proc.c	Thu Nov 16 07:14:29 2017	(r325886)
+++ head/sys/cddl/compat/opensolaris/kern/opensolaris_proc.c	Thu Nov 16 07:25:12 2017	(r325887)
@@ -35,9 +35,7 @@ uread(proc_t *p, void *kaddr, size_t len, uintptr_t ua
 {
 	ssize_t n;
 
-	PHOLD(p);
 	n = proc_readmem(curthread, p, uaddr, kaddr, len);
-	PRELE(p);
 	if (n != len)
 		return (ENOMEM);
 	return (0);
@@ -48,9 +46,7 @@ uwrite(proc_t *p, void *kaddr, size_t len, uintptr_t u
 {
 	ssize_t n;
 
-	PHOLD(p);
 	n = proc_writemem(curthread, p, uaddr, kaddr, len);
-	PRELE(p);
 	if (n != len)
 		return (ENOMEM);
 	return (0);

Modified: head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c	Thu Nov 16 07:14:29 2017	(r325886)
+++ head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c	Thu Nov 16 07:25:12 2017	(r325887)
@@ -1715,11 +1715,7 @@ fasttrap_pid_probe(struct reg *rp)
 
 		ASSERT(i <= sizeof (scratch));
 
-#ifdef illumos
 		if (fasttrap_copyout(scratch, (char *)addr, i)) {
-#else
-		if (uwrite(p, scratch, i, addr)) {
-#endif
 			fasttrap_sigtrap(p, curthread, pc);
 			new_pc = pc;
 			break;


More information about the svn-src-all mailing list