PERFORCE change 77437 for review

Peter Wemm peter at FreeBSD.org
Wed May 25 03:12:35 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=77437

Change 77437 by peter at peter_melody on 2005/05/25 03:12:29

	Fix a startup race with gdb execing something.  I think.

Affected files ...

.. //depot/projects/hammer/sys/kern/sys_process.c#27 edit

Differences ...

==== //depot/projects/hammer/sys/kern/sys_process.c#27 (text+ko) ====

@@ -440,7 +440,7 @@
 #define	PROC_READ(w, t, a)	wrap32 ? \
 	 proc_read_ ## w ## 32(t, a) : proc_read_ ## w (t, a)
 #define	PROC_WRITE(w, t, a)	wrap32 ? \
-	proc_write_ ## w ## 32(t, a) : proc_write_ ## w (t, a)
+	(safe ? proc_write_ ## w ## 32(t, a) : EINVAL ) : proc_write_ ## w (t, a)
 #else
 #define	PROC_READ(w, t, a)	proc_read_ ## w (t, a)
 #define	PROC_WRITE(w, t, a)	proc_write_ ## w (t, a)
@@ -460,7 +460,7 @@
 	lwpid_t tid = 0, *buf;
 	pid_t saved_pid = pid;
 #ifdef COMPAT_IA32
-	int wrap32 = 0;
+	int wrap32 = 0, safe = 0;
 #endif
 
 	curp = td->td_proc;
@@ -539,10 +539,8 @@
 
 #ifdef COMPAT_IA32
 	if (td->td_proc->p_sysent == &ia32_freebsd_sysvec) {
-		if (td2->td_proc->p_sysent != &ia32_freebsd_sysvec) {
-			error = EINVAL;
-			goto fail;
-		}
+		if (td2->td_proc->p_sysent == &ia32_freebsd_sysvec)
+			safe = 1;
 		wrap32 = 1;
 	}
 #endif


More information about the p4-projects mailing list