diff options
| -rw-r--r-- | fs/nfs/file.c | 3 | ||||
| -rw-r--r-- | include/linux/preempt.h | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index eb5cd4c3bbfd..7a79fbe9f539 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
| @@ -509,7 +509,8 @@ static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl) | |||
| 509 | return -EINVAL; | 509 | return -EINVAL; |
| 510 | 510 | ||
| 511 | /* No mandatory locks over NFS */ | 511 | /* No mandatory locks over NFS */ |
| 512 | if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID) | 512 | if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID && |
| 513 | fl->fl_type != F_UNLCK) | ||
| 513 | return -ENOLCK; | 514 | return -ENOLCK; |
| 514 | 515 | ||
| 515 | if (IS_GETLK(cmd)) | 516 | if (IS_GETLK(cmd)) |
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index d9a2f5254a51..5769d14d1e6a 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h | |||
| @@ -48,6 +48,7 @@ do { \ | |||
| 48 | #define preempt_enable() \ | 48 | #define preempt_enable() \ |
| 49 | do { \ | 49 | do { \ |
| 50 | preempt_enable_no_resched(); \ | 50 | preempt_enable_no_resched(); \ |
| 51 | barrier(); \ | ||
| 51 | preempt_check_resched(); \ | 52 | preempt_check_resched(); \ |
| 52 | } while (0) | 53 | } while (0) |
| 53 | 54 | ||
