summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/open.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/open.c b/fs/open.c
index 932e5a6de63b..a8a5f843e3cf 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1578,11 +1578,14 @@ SYSCALL_DEFINE1(close, unsigned int, fd)
*/
__fput_sync(file);
+ if (likely(retval == 0))
+ return 0;
+
/* can't restart close syscall because file table entry was cleared */
- if (unlikely(retval == -ERESTARTSYS ||
- retval == -ERESTARTNOINTR ||
- retval == -ERESTARTNOHAND ||
- retval == -ERESTART_RESTARTBLOCK))
+ if (retval == -ERESTARTSYS ||
+ retval == -ERESTARTNOINTR ||
+ retval == -ERESTARTNOHAND ||
+ retval == -ERESTART_RESTARTBLOCK)
retval = -EINTR;
return retval;