mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-25 16:11:45 +00:00
kernfs: allow creating kernfs objects with arbitrary uid/gid
This change allows creating kernfs files and directories with arbitrary uid/gid instead of always using GLOBAL_ROOT_UID/GID by extending kernfs_create_dir_ns() and kernfs_create_file_ns() with uid/gid arguments. The "simple" kernfs_create_file() and kernfs_create_dir() are left alone and always create objects belonging to the global root. When creating symlinks ownership (uid/gid) is taken from the target kernfs object. Co-Developed-by: Tyler Hicks <tyhicks@canonical.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Tyler Hicks <tyhicks@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7c4ec749a3
commit
488dee96bb
10 changed files with 76 additions and 21 deletions
|
@ -90,6 +90,7 @@ int kernfs_iop_setattr(struct dentry *dentry, struct iattr *iattr);
|
|||
int kernfs_iop_getattr(const struct path *path, struct kstat *stat,
|
||||
u32 request_mask, unsigned int query_flags);
|
||||
ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size);
|
||||
int __kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr);
|
||||
|
||||
/*
|
||||
* dir.c
|
||||
|
@ -104,6 +105,7 @@ void kernfs_put_active(struct kernfs_node *kn);
|
|||
int kernfs_add_one(struct kernfs_node *kn);
|
||||
struct kernfs_node *kernfs_new_node(struct kernfs_node *parent,
|
||||
const char *name, umode_t mode,
|
||||
kuid_t uid, kgid_t gid,
|
||||
unsigned flags);
|
||||
struct kernfs_node *kernfs_find_and_get_node_by_ino(struct kernfs_root *root,
|
||||
unsigned int ino);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue