diff options
author | Josh Triplett <[email protected]> | 2015-05-14 15:17:01 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2015-05-14 17:55:51 -0700 |
commit | 929aa5b250bfc59aca492d3213c7f3a53e2a5247 (patch) | |
tree | b469ce806d9096e71fc3b1ef47fb08a2627d4655 | |
parent | 499611ed451508a42d1d7d1faff10177827755d5 (diff) |
uidgid: make uid_valid and gid_valid work with !CONFIG_MULTIUSER
{u,g}id_valid call {u,g}id_eq, which calls __k{u,g}id_val on both
arguments and compares. With !CONFIG_MULTIUSER, __k{u,g}id_val return a
constant 0, which makes {u,g}id_valid always return false. Change
{u,g}id_valid to compare their argument against -1 instead. That produces
identical results in the normal CONFIG_MULTIUSER=y case, but with
!CONFIG_MULTIUSER will make {u,g}id_valid constant-fold into "return
true;" rather than "return false;".
This fixes uses of devpts without CONFIG_MULTIUSER.
Signed-off-by: Josh Triplett <[email protected]>
Reported-by: Fengguang Wu <[email protected]>,
Cc: Peter Hurley <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | include/linux/uidgid.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h index 0ee05da38899..03835522dfcb 100644 --- a/include/linux/uidgid.h +++ b/include/linux/uidgid.h @@ -109,12 +109,12 @@ static inline bool gid_lte(kgid_t left, kgid_t right) static inline bool uid_valid(kuid_t uid) { - return !uid_eq(uid, INVALID_UID); + return __kuid_val(uid) != (uid_t) -1; } static inline bool gid_valid(kgid_t gid) { - return !gid_eq(gid, INVALID_GID); + return __kgid_val(gid) != (gid_t) -1; } #ifdef CONFIG_USER_NS |