Lines Matching refs:state
455 init_state(struct posix_acl_state *state, int cnt) in init_state() argument
459 memset(state, 0, sizeof(struct posix_acl_state)); in init_state()
460 state->empty = 1; in init_state()
468 state->users = kzalloc(alloc, GFP_KERNEL); in init_state()
469 if (!state->users) in init_state()
471 state->groups = kzalloc(alloc, GFP_KERNEL); in init_state()
472 if (!state->groups) { in init_state()
473 kfree(state->users); in init_state()
480 free_state(struct posix_acl_state *state) { in free_state() argument
481 kfree(state->users); in free_state()
482 kfree(state->groups); in free_state()
485 static inline void add_to_mask(struct posix_acl_state *state, struct posix_ace_state *astate) in add_to_mask() argument
487 state->mask.allow |= astate->allow; in add_to_mask()
491 posix_state_to_acl(struct posix_acl_state *state, unsigned int flags) in posix_state_to_acl() argument
503 if (state->empty && (flags & NFS4_ACL_TYPE_DEFAULT)) in posix_state_to_acl()
511 if (!state->users->n && !state->groups->n) in posix_state_to_acl()
514 nace = 4 + state->users->n + state->groups->n; in posix_state_to_acl()
521 low_mode_from_nfs4(state->owner.allow, &pace->e_perm, flags); in posix_state_to_acl()
523 for (i=0; i < state->users->n; i++) { in posix_state_to_acl()
526 low_mode_from_nfs4(state->users->aces[i].perms.allow, in posix_state_to_acl()
528 pace->e_uid = state->users->aces[i].uid; in posix_state_to_acl()
529 add_to_mask(state, &state->users->aces[i].perms); in posix_state_to_acl()
534 low_mode_from_nfs4(state->group.allow, &pace->e_perm, flags); in posix_state_to_acl()
535 add_to_mask(state, &state->group); in posix_state_to_acl()
537 for (i=0; i < state->groups->n; i++) { in posix_state_to_acl()
540 low_mode_from_nfs4(state->groups->aces[i].perms.allow, in posix_state_to_acl()
542 pace->e_gid = state->groups->aces[i].gid; in posix_state_to_acl()
543 add_to_mask(state, &state->groups->aces[i].perms); in posix_state_to_acl()
546 if (state->users->n || state->groups->n) { in posix_state_to_acl()
549 low_mode_from_nfs4(state->mask.allow, &pace->e_perm, flags); in posix_state_to_acl()
554 low_mode_from_nfs4(state->other.allow, &pace->e_perm, flags); in posix_state_to_acl()
571 static int find_uid(struct posix_acl_state *state, kuid_t uid) in find_uid() argument
573 struct posix_ace_state_array *a = state->users; in find_uid()
582 a->aces[i].perms.allow = state->everyone.allow; in find_uid()
583 a->aces[i].perms.deny = state->everyone.deny; in find_uid()
588 static int find_gid(struct posix_acl_state *state, kgid_t gid) in find_gid() argument
590 struct posix_ace_state_array *a = state->groups; in find_gid()
599 a->aces[i].perms.allow = state->everyone.allow; in find_gid()
600 a->aces[i].perms.deny = state->everyone.deny; in find_gid()
621 static void process_one_v4_ace(struct posix_acl_state *state, in process_one_v4_ace() argument
627 state->empty = 0; in process_one_v4_ace()
632 allow_bits(&state->owner, mask); in process_one_v4_ace()
634 deny_bits(&state->owner, mask); in process_one_v4_ace()
638 i = find_uid(state, ace->who_uid); in process_one_v4_ace()
640 allow_bits(&state->users->aces[i].perms, mask); in process_one_v4_ace()
642 deny_bits(&state->users->aces[i].perms, mask); in process_one_v4_ace()
643 mask = state->users->aces[i].perms.deny; in process_one_v4_ace()
644 deny_bits(&state->owner, mask); in process_one_v4_ace()
649 allow_bits(&state->group, mask); in process_one_v4_ace()
651 deny_bits(&state->group, mask); in process_one_v4_ace()
652 mask = state->group.deny; in process_one_v4_ace()
653 deny_bits(&state->owner, mask); in process_one_v4_ace()
654 deny_bits(&state->everyone, mask); in process_one_v4_ace()
655 deny_bits_array(state->users, mask); in process_one_v4_ace()
656 deny_bits_array(state->groups, mask); in process_one_v4_ace()
660 i = find_gid(state, ace->who_gid); in process_one_v4_ace()
662 allow_bits(&state->groups->aces[i].perms, mask); in process_one_v4_ace()
664 deny_bits(&state->groups->aces[i].perms, mask); in process_one_v4_ace()
665 mask = state->groups->aces[i].perms.deny; in process_one_v4_ace()
666 deny_bits(&state->owner, mask); in process_one_v4_ace()
667 deny_bits(&state->group, mask); in process_one_v4_ace()
668 deny_bits(&state->everyone, mask); in process_one_v4_ace()
669 deny_bits_array(state->users, mask); in process_one_v4_ace()
670 deny_bits_array(state->groups, mask); in process_one_v4_ace()
675 allow_bits(&state->owner, mask); in process_one_v4_ace()
676 allow_bits(&state->group, mask); in process_one_v4_ace()
677 allow_bits(&state->other, mask); in process_one_v4_ace()
678 allow_bits(&state->everyone, mask); in process_one_v4_ace()
679 allow_bits_array(state->users, mask); in process_one_v4_ace()
680 allow_bits_array(state->groups, mask); in process_one_v4_ace()
682 deny_bits(&state->owner, mask); in process_one_v4_ace()
683 deny_bits(&state->group, mask); in process_one_v4_ace()
684 deny_bits(&state->other, mask); in process_one_v4_ace()
685 deny_bits(&state->everyone, mask); in process_one_v4_ace()
686 deny_bits_array(state->users, mask); in process_one_v4_ace()
687 deny_bits_array(state->groups, mask); in process_one_v4_ace()