diff -urN oldtree/fs/open.c newtree/fs/open.c
--- oldtree/fs/open.c	2006-08-18 15:01:22.000000000 -0400
+++ newtree/fs/open.c	2006-08-20 04:27:28.508158500 -0400
@@ -1199,7 +1199,13 @@
 	retval = filp_close(filp, files);
 
 	/* can't restart close syscall because file table entry was cleared */
-	return (retval == -ERESTARTSYS) ? -EINTR : retval;
+	if (unlikely(retval == -ERESTARTSYS ||
+		     retval == -ERESTARTNOINTR ||
+		     retval == -ERESTARTNOHAND ||
+		     retval == -ERESTART_RESTARTBLOCK))
+		retval = -EINTR;
+
+	return retval;
 
 out_unlock:
 	spin_unlock(&files->file_lock);
