Cleanup macros for distinguishing mandatory locks
[linux-2.6-block.git] / fs / locks.c
index 43dbc7f566fa97f829ae4e1448aa4a8fd5ba64df..9a3fe0d8285b178403aa76ce2d34358c7ec6c9d6 100644 (file)
@@ -1119,7 +1119,7 @@ int locks_mandatory_area(int read_write, struct inode *inode,
                         * If we've been sleeping someone might have
                         * changed the permissions behind our back.
                         */
-                       if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID)
+                       if (__mandatory_lock(inode))
                                continue;
                }
 
@@ -1761,9 +1761,7 @@ int fcntl_setlk(unsigned int fd, struct file *filp, unsigned int cmd,
        /* Don't allow mandatory locks on files that may be memory mapped
         * and shared.
         */
-       if (IS_MANDLOCK(inode) &&
-           (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID &&
-           mapping_writably_mapped(filp->f_mapping)) {
+       if (mandatory_lock(inode) && mapping_writably_mapped(filp->f_mapping)) {
                error = -EAGAIN;
                goto out;
        }
@@ -1887,9 +1885,7 @@ int fcntl_setlk64(unsigned int fd, struct file *filp, unsigned int cmd,
        /* Don't allow mandatory locks on files that may be memory mapped
         * and shared.
         */
-       if (IS_MANDLOCK(inode) &&
-           (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID &&
-           mapping_writably_mapped(filp->f_mapping)) {
+       if (mandatory_lock(inode) && mapping_writably_mapped(filp->f_mapping)) {
                error = -EAGAIN;
                goto out;
        }
@@ -2083,9 +2079,7 @@ static void lock_get_status(char* out, struct file_lock *fl, int id, char *pfx)
                out += sprintf(out, "%6s %s ",
                             (fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ",
                             (inode == NULL) ? "*NOINODE*" :
-                            (IS_MANDLOCK(inode) &&
-                             (inode->i_mode & (S_IXGRP | S_ISGID)) == S_ISGID) ?
-                            "MANDATORY" : "ADVISORY ");
+                            mandatory_lock(inode) ? "MANDATORY" : "ADVISORY ");
        } else if (IS_FLOCK(fl)) {
                if (fl->fl_type & LOCK_MAND) {
                        out += sprintf(out, "FLOCK  MSNFS     ");