|
@@ -402,6 +402,7 @@ struct inodes_stat_t {
|
|
|
#include <linux/atomic.h>
|
|
|
#include <linux/shrinker.h>
|
|
|
#include <linux/migrate_mode.h>
|
|
|
+#include <linux/uidgid.h>
|
|
|
|
|
|
#include <asm/byteorder.h>
|
|
|
|
|
@@ -469,8 +470,8 @@ typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
|
|
|
struct iattr {
|
|
|
unsigned int ia_valid;
|
|
|
umode_t ia_mode;
|
|
|
- uid_t ia_uid;
|
|
|
- gid_t ia_gid;
|
|
|
+ kuid_t ia_uid;
|
|
|
+ kgid_t ia_gid;
|
|
|
loff_t ia_size;
|
|
|
struct timespec ia_atime;
|
|
|
struct timespec ia_mtime;
|
|
@@ -761,8 +762,8 @@ struct posix_acl;
|
|
|
struct inode {
|
|
|
umode_t i_mode;
|
|
|
unsigned short i_opflags;
|
|
|
- uid_t i_uid;
|
|
|
- gid_t i_gid;
|
|
|
+ kuid_t i_uid;
|
|
|
+ kgid_t i_gid;
|
|
|
unsigned int i_flags;
|
|
|
|
|
|
#ifdef CONFIG_FS_POSIX_ACL
|
|
@@ -927,6 +928,31 @@ static inline void i_size_write(struct inode *inode, loff_t i_size)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+/* Helper functions so that in most cases filesystems will
|
|
|
+ * not need to deal directly with kuid_t and kgid_t and can
|
|
|
+ * instead deal with the raw numeric values that are stored
|
|
|
+ * in the filesystem.
|
|
|
+ */
|
|
|
+static inline uid_t i_uid_read(const struct inode *inode)
|
|
|
+{
|
|
|
+ return from_kuid(&init_user_ns, inode->i_uid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline gid_t i_gid_read(const struct inode *inode)
|
|
|
+{
|
|
|
+ return from_kgid(&init_user_ns, inode->i_gid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void i_uid_write(struct inode *inode, uid_t uid)
|
|
|
+{
|
|
|
+ inode->i_uid = make_kuid(&init_user_ns, uid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void i_gid_write(struct inode *inode, gid_t gid)
|
|
|
+{
|
|
|
+ inode->i_gid = make_kgid(&init_user_ns, gid);
|
|
|
+}
|
|
|
+
|
|
|
static inline unsigned iminor(const struct inode *inode)
|
|
|
{
|
|
|
return MINOR(inode->i_rdev);
|
|
@@ -943,7 +969,7 @@ struct fown_struct {
|
|
|
rwlock_t lock; /* protects pid, uid, euid fields */
|
|
|
struct pid *pid; /* pid or -pgrp where SIGIO should be sent */
|
|
|
enum pid_type pid_type; /* Kind of process group SIGIO should be sent to */
|
|
|
- uid_t uid, euid; /* uid/euid of process setting the owner */
|
|
|
+ kuid_t uid, euid; /* uid/euid of process setting the owner */
|
|
|
int signum; /* posix.1b rt signal to be delivered on IO */
|
|
|
};
|
|
|
|