mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-02 03:52:33 +00:00
nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion
In struct nfs4_ace remove the member who and replace it with an anonymous union holding who_uid and who_gid. Allowing typesafe storage uids and gids. Add a helper pace_gt for sorting posix_acl_entries. In struct posix_user_ace_state to replace uid with a union of kuid_t uid and kgid_t gid. Remove all initializations of the deprecated posic_acl_entry e_id field. Which is not present when user namespaces are enabled. Split find_uid into two functions find_uid and find_gid that work in a typesafe manner. In nfs4xdr update nfsd4_encode_fattr to deal with the changes in struct nfs4_ace. Rewrite nfsd4_encode_name to take a kuid_t and a kgid_t instead of a generic id and flag if it is a group or a uid. Replace the group flag with a test for a valid gid. Modify nfsd4_encode_user to take a kuid_t and call the modifed nfsd4_encode_name. Modify nfsd4_encode_group to take a kgid_t and call the modified nfsd4_encode_name. Modify nfsd4_encode_aclname to take an ace instead of taking the fields of an ace broken out. This allows it to detect if the ace is for a user or a group and to pass the appropriate value while still being typesafe. Cc: "J. Bruce Fields" <bfields@fieldses.org> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
7c19723e99
commit
ab8e4aee0a
3 changed files with 76 additions and 34 deletions
|
@ -13,6 +13,7 @@
|
|||
#define _LINUX_NFS4_H
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <linux/uidgid.h>
|
||||
#include <uapi/linux/nfs4.h>
|
||||
|
||||
struct nfs4_ace {
|
||||
|
@ -20,7 +21,10 @@ struct nfs4_ace {
|
|||
uint32_t flag;
|
||||
uint32_t access_mask;
|
||||
int whotype;
|
||||
uid_t who;
|
||||
union {
|
||||
kuid_t who_uid;
|
||||
kgid_t who_gid;
|
||||
};
|
||||
};
|
||||
|
||||
struct nfs4_acl {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue