diff options
author | Eric Paris <eparis@redhat.com> | 2012-04-04 19:46:46 +0200 |
---|---|---|
committer | Eric Paris <eparis@redhat.com> | 2012-04-09 18:22:57 +0200 |
commit | 92ae9e82d9a2c4b9b388d6a9e7a4b2ccb0b4452f (patch) | |
tree | c9fb517b25ff64f1a07abf62fa90512a48949fc4 | |
parent | SELinux: possible NULL deref in context_struct_to_string (diff) | |
download | linux-92ae9e82d9a2c4b9b388d6a9e7a4b2ccb0b4452f.tar.xz linux-92ae9e82d9a2c4b9b388d6a9e7a4b2ccb0b4452f.zip |
SELinux: remove needless sel_div function
I'm not really sure what the idea behind the sel_div function is, but it's
useless. Since a and b are both unsigned, it's impossible for a % b < 0.
That means that part of the function never does anything. Thus it's just a
normal /. Just do that instead. I don't even understand what that operation
was supposed to mean in the signed case however....
If it was signed:
sel_div(-2, 4) == ((-2 / 4) - ((-2 % 4) < 0))
((0) - ((-2) < 0))
((0) - (1))
(-1)
What actually happens:
sel_div(-2, 4) == ((18446744073709551614 / 4) - ((18446744073709551614 % 4) < 0))
((4611686018427387903) - ((2 < 0))
(4611686018427387903 - 0)
((unsigned int)4611686018427387903)
(4294967295)
Neither makes a whole ton of sense to me. So I'm getting rid of the
function entirely.
Signed-off-by: Eric Paris <eparis@redhat.com>
-rw-r--r-- | security/selinux/selinuxfs.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index f4b5a0baaec4..640feaa06c08 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -1533,11 +1533,6 @@ static int sel_make_initcon_files(struct dentry *dir) return 0; } -static inline unsigned int sel_div(unsigned long a, unsigned long b) -{ - return a / b - (a % b < 0); -} - static inline unsigned long sel_class_to_ino(u16 class) { return (class * (SEL_VEC_MAX + 1)) | SEL_CLASS_INO_OFFSET; @@ -1545,7 +1540,7 @@ static inline unsigned long sel_class_to_ino(u16 class) static inline u16 sel_ino_to_class(unsigned long ino) { - return sel_div(ino & SEL_INO_MASK, SEL_VEC_MAX + 1); + return (ino & SEL_INO_MASK) / (SEL_VEC_MAX + 1); } static inline unsigned long sel_perm_to_ino(u16 class, u32 perm) |