diff options
author | Jeff Layton <jlayton@redhat.com> | 2012-08-02 15:46:30 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-08-20 18:39:42 -0400 |
commit | 0ee5c6d632324a4b278cb0b29eb8effce4c8a358 (patch) | |
tree | 45d5e778a46277a8d2742facee76c2cf2d649f09 | |
parent | d10f27a750312ed5638c876e4bd6aa83664cccd8 (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>
-rw-r--r-- | fs/locks.c | 6 |
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); | |||
1289 | void lease_get_mtime(struct inode *inode, struct timespec *time) | 1289 | void 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 |