aboutsummaryrefslogtreecommitdiffstats
path: root/fs/locks.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2012-08-02 15:46:30 -0400
committerJ. Bruce Fields <bfields@redhat.com>2012-08-20 18:39:42 -0400
commit0ee5c6d632324a4b278cb0b29eb8effce4c8a358 (patch)
tree45d5e778a46277a8d2742facee76c2cf2d649f09 /fs/locks.c
parentd10f27a750312ed5638c876e4bd6aa83664cccd8 (diff)
vfs: don't treat fl_type as a bitmap
The rules for fl_type are rather convoluted. Typically it's treated as holding specific values, except in the case of LOCK_MAND, in which case it can be or'ed with LOCK_READ|LOCK_WRITE. On some arches F_WRLCK == 2 and F_UNLCK == 3, so and'ing with F_WRLCK will also catch the F_UNLCK case. It's unlikely in either case here that we'd ever see F_UNLCK since those shouldn't end up on any lists, but it's still best to be consistent. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/locks.c')
-rw-r--r--fs/locks.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/locks.c b/fs/locks.c
index 7e81bfc75164..669911e4af9d 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1289,7 +1289,7 @@ EXPORT_SYMBOL(__break_lease);
1289void lease_get_mtime(struct inode *inode, struct timespec *time) 1289void lease_get_mtime(struct inode *inode, struct timespec *time)
1290{ 1290{
1291 struct file_lock *flock = inode->i_flock; 1291 struct file_lock *flock = inode->i_flock;
1292 if (flock && IS_LEASE(flock) && (flock->fl_type & F_WRLCK)) 1292 if (flock && IS_LEASE(flock) && (flock->fl_type == F_WRLCK))
1293 *time = current_fs_time(inode->i_sb); 1293 *time = current_fs_time(inode->i_sb);
1294 else 1294 else
1295 *time = inode->i_mtime; 1295 *time = inode->i_mtime;
@@ -2187,8 +2187,8 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
2187 } else { 2187 } else {
2188 seq_printf(f, "%s ", 2188 seq_printf(f, "%s ",
2189 (lease_breaking(fl)) 2189 (lease_breaking(fl))
2190 ? (fl->fl_type & F_UNLCK) ? "UNLCK" : "READ " 2190 ? (fl->fl_type == F_UNLCK) ? "UNLCK" : "READ "
2191 : (fl->fl_type & F_WRLCK) ? "WRITE" : "READ "); 2191 : (fl->fl_type == F_WRLCK) ? "WRITE" : "READ ");
2192 } 2192 }
2193 if (inode) { 2193 if (inode) {
2194#ifdef WE_CAN_BREAK_LSLK_NOW 2194#ifdef WE_CAN_BREAK_LSLK_NOW