diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-13 22:51:01 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-13 22:51:01 +0400 |
commit | 26cf46be954a2dd391d32eeaf7d07c3a953dcc5a (patch) | |
tree | 6445ebf0328e3227178f378c97be6b083cad087b /fs | |
parent | 47a150edc2ae734c0f4bf50aa19499e23b9a46f8 (diff) | |
download | linux-26cf46be954a2dd391d32eeaf7d07c3a953dcc5a.tar.xz |
vfs: micro-optimize acl_permission_check()
It's a hot function, and we're better off not mixing types in the mask
calculations. The compiler just ends up mixing 16-bit and 32-bit
operations, for no good reason.
So do everything in 'unsigned int' rather than mixing 'unsigned int'
masking with a 'umode_t' (16-bit) mode variable.
This, together with the parent commit (47a150edc2ae: "Cache user_ns in
struct cred") makes acl_permission_check() much nicer.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/namei.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/namei.c b/fs/namei.c index 54fc993e3027..e3c4f112ebf7 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -179,7 +179,7 @@ EXPORT_SYMBOL(putname); static int acl_permission_check(struct inode *inode, int mask, unsigned int flags, int (*check_acl)(struct inode *inode, int mask, unsigned int flags)) { - umode_t mode = inode->i_mode; + unsigned int mode = inode->i_mode; mask &= MAY_READ | MAY_WRITE | MAY_EXEC; |