diff options
Diffstat (limited to 'include/linux/uidgid.h')
| -rw-r--r-- | include/linux/uidgid.h | 55 |
1 files changed, 28 insertions, 27 deletions
diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h index 8e522cbcef29..2dc767e08f54 100644 --- a/include/linux/uidgid.h +++ b/include/linux/uidgid.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_UIDGID_H #define _LINUX_UIDGID_H @@ -11,26 +12,17 @@ * to detect when we overlook these differences. * */ -#include <linux/types.h> +#include <linux/uidgid_types.h> #include <linux/highuid.h> struct user_namespace; extern struct user_namespace init_user_ns; - -#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS - -typedef struct { - uid_t val; -} kuid_t; - - -typedef struct { - gid_t val; -} kgid_t; +struct uid_gid_map; #define KUIDT_INIT(value) (kuid_t){ value } #define KGIDT_INIT(value) (kgid_t){ value } +#ifdef CONFIG_MULTIUSER static inline uid_t __kuid_val(kuid_t uid) { return uid.val; @@ -40,25 +32,16 @@ static inline gid_t __kgid_val(kgid_t gid) { return gid.val; } - #else - -typedef uid_t kuid_t; -typedef gid_t kgid_t; - static inline uid_t __kuid_val(kuid_t uid) { - return uid; + return 0; } static inline gid_t __kgid_val(kgid_t gid) { - return gid; + return 0; } - -#define KUIDT_INIT(value) ((kuid_t) value ) -#define KGIDT_INIT(value) ((kgid_t) value ) - #endif #define GLOBAL_ROOT_UID KUIDT_INIT(0) @@ -119,12 +102,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 @@ -147,6 +130,10 @@ static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) return from_kgid(ns, gid) != (gid_t) -1; } +u32 map_id_down(struct uid_gid_map *map, u32 id); +u32 map_id_up(struct uid_gid_map *map, u32 id); +u32 map_id_range_up(struct uid_gid_map *map, u32 id, u32 count); + #else static inline kuid_t make_kuid(struct user_namespace *from, uid_t uid) @@ -187,14 +174,28 @@ static inline gid_t from_kgid_munged(struct user_namespace *to, kgid_t kgid) static inline bool kuid_has_mapping(struct user_namespace *ns, kuid_t uid) { - return true; + return uid_valid(uid); } static inline bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) { - return true; + return gid_valid(gid); +} + +static inline u32 map_id_down(struct uid_gid_map *map, u32 id) +{ + return id; } +static inline u32 map_id_range_up(struct uid_gid_map *map, u32 id, u32 count) +{ + return id; +} + +static inline u32 map_id_up(struct uid_gid_map *map, u32 id) +{ + return id; +} #endif /* CONFIG_USER_NS */ #endif /* _LINUX_UIDGID_H */ |
