diff -urN -X dontdiff linux/arch/arm/kernel/sys_arm.c 2329-pipe/arch/arm/kernel/sys_arm.c
--- linux/arch/arm/kernel/sys_arm.c	Wed Nov 24 06:23:11 1999
+++ 2329-pipe/arch/arm/kernel/sys_arm.c	Wed Nov 24 14:25:53 1999
@@ -43,8 +43,11 @@
 	error = do_pipe(fd);
 	unlock_kernel();
 	if (!error) {
-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
+		if (copy_to_user(fildes, fd, 2*sizeof(int))) {
 			error = -EFAULT;
+			sys_close(fd[0]);
+			sys_close(fd[1]);
+		}		
 	}
 	return error;
 }
diff -urN -X dontdiff linux/arch/i386/kernel/sys_i386.c 2329-pipe/arch/i386/kernel/sys_i386.c
--- linux/arch/i386/kernel/sys_i386.c	Wed Nov  3 19:31:09 1999
+++ 2329-pipe/arch/i386/kernel/sys_i386.c	Wed Nov 24 14:24:58 1999
@@ -35,8 +35,11 @@
 	error = do_pipe(fd);
 	unlock_kernel();
 	if (!error) {
-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
+		if (copy_to_user(fildes, fd, 2*sizeof(int))) {
 			error = -EFAULT;
+			sys_close(fd[0]);
+			sys_close(fd[1]);
+		}		
 	}
 	return error;
 }
diff -urN -X dontdiff linux/arch/m68k/kernel/sys_m68k.c 2329-pipe/arch/m68k/kernel/sys_m68k.c
--- linux/arch/m68k/kernel/sys_m68k.c	Tue Jan 19 18:58:34 1999
+++ 2329-pipe/arch/m68k/kernel/sys_m68k.c	Wed Nov 24 14:26:19 1999
@@ -37,8 +37,11 @@
 	lock_kernel();
 	error = do_pipe(fd);
 	if (!error) {
-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
+		if (copy_to_user(fildes, fd, 2*sizeof(int))) {
 			error = -EFAULT;
+			sys_close(fd[0]);
+			sys_close(fd[1]);
+		}		
 	}
 	unlock_kernel();
 	return error;
diff -urN -X dontdiff linux/arch/ppc/kernel/syscalls.c 2329-pipe/arch/ppc/kernel/syscalls.c
--- linux/arch/ppc/kernel/syscalls.c	Wed Sep  8 18:59:07 1999
+++ 2329-pipe/arch/ppc/kernel/syscalls.c	Wed Nov 24 14:27:06 1999
@@ -188,8 +188,11 @@
 	error = do_pipe(fd);
 	unlock_kernel();
 	if (!error) {
-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
+		if (copy_to_user(fildes, fd, 2*sizeof(int))) {
 			error = -EFAULT;
+			sys_close(fd[0]);
+			sys_close(fd[1]);
+		}		
 	}
 	return error;
 }
diff -urN -X dontdiff linux/arch/sh/kernel/sys_sh.c 2329-pipe/arch/sh/kernel/sys_sh.c
--- linux/arch/sh/kernel/sys_sh.c	Sat Nov  6 18:40:31 1999
+++ 2329-pipe/arch/sh/kernel/sys_sh.c	Wed Nov 24 14:27:28 1999
@@ -37,8 +37,11 @@
 	error = do_pipe(fd);
 	unlock_kernel();
 	if (!error) {
-		if (copy_to_user(fildes, fd, 2*sizeof(int)))
+		if (copy_to_user(fildes, fd, 2*sizeof(int))) {
 			error = -EFAULT;
+			sys_close(fd[0]);
+			sys_close(fd[1]);
+		}		
 	}
 	return error;
 }
