• Eric W. Biederman's avatar
    nfsd: Handle kuids and kgids in the nfs4acl to posix_acl conversion · ab8e4aee
    Eric W. Biederman authored
    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: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    ab8e4aee
nfs4xdr.c 89.9 KB