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 eb5cd4c3bbf..7a79fbe9f53 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) return -EINVAL; /* No mandatory locks over NFS */ - if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID) + if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID && + fl->fl_type != F_UNLCK) return -ENOLCK; if (IS_GETLK(cmd)) diff --git a/include/linux/preempt.h b/include/linux/preempt.h index d9a2f5254a5..5769d14d1e6 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -48,6 +48,7 @@ do { \ #define preempt_enable() \ do { \ preempt_enable_no_resched(); \ + barrier(); \ preempt_check_resched(); \ } while (0) |