Lines Matching refs:state
467 init_state(struct posix_acl_state *state, int cnt) in init_state() argument
471 memset(state, 0, sizeof(struct posix_acl_state)); in init_state()
472 state->empty = 1; in init_state()
480 state->users = kzalloc(alloc, GFP_KERNEL); in init_state()
481 if (!state->users) in init_state()
483 state->groups = kzalloc(alloc, GFP_KERNEL); in init_state()
484 if (!state->groups) { in init_state()
485 kfree(state->users); in init_state()
492 free_state(struct posix_acl_state *state) { in free_state() argument
493 kfree(state->users); in free_state()
494 kfree(state->groups); in free_state()
497 static inline void add_to_mask(struct posix_acl_state *state, struct posix_ace_state *astate) in add_to_mask() argument
499 state->mask.allow |= astate->allow; in add_to_mask()
503 posix_state_to_acl(struct posix_acl_state *state, unsigned int flags) in posix_state_to_acl() argument
515 if (state->empty && (flags & NFS4_ACL_TYPE_DEFAULT)) in posix_state_to_acl()
523 if (!state->users->n && !state->groups->n) in posix_state_to_acl()
526 nace = 4 + state->users->n + state->groups->n; in posix_state_to_acl()
533 low_mode_from_nfs4(state->owner.allow, &pace->e_perm, flags); in posix_state_to_acl()
535 for (i=0; i < state->users->n; i++) { in posix_state_to_acl()
538 low_mode_from_nfs4(state->users->aces[i].perms.allow, in posix_state_to_acl()
540 pace->e_uid = state->users->aces[i].uid; in posix_state_to_acl()
541 add_to_mask(state, &state->users->aces[i].perms); in posix_state_to_acl()
546 low_mode_from_nfs4(state->group.allow, &pace->e_perm, flags); in posix_state_to_acl()
547 add_to_mask(state, &state->group); in posix_state_to_acl()
549 for (i=0; i < state->groups->n; i++) { in posix_state_to_acl()
552 low_mode_from_nfs4(state->groups->aces[i].perms.allow, in posix_state_to_acl()
554 pace->e_gid = state->groups->aces[i].gid; in posix_state_to_acl()
555 add_to_mask(state, &state->groups->aces[i].perms); in posix_state_to_acl()
558 if (state->users->n || state->groups->n) { in posix_state_to_acl()
561 low_mode_from_nfs4(state->mask.allow, &pace->e_perm, flags); in posix_state_to_acl()
566 low_mode_from_nfs4(state->other.allow, &pace->e_perm, flags); in posix_state_to_acl()
583 static int find_uid(struct posix_acl_state *state, kuid_t uid) in find_uid() argument
585 struct posix_ace_state_array *a = state->users; in find_uid()
594 a->aces[i].perms.allow = state->everyone.allow; in find_uid()
595 a->aces[i].perms.deny = state->everyone.deny; in find_uid()
600 static int find_gid(struct posix_acl_state *state, kgid_t gid) in find_gid() argument
602 struct posix_ace_state_array *a = state->groups; in find_gid()
611 a->aces[i].perms.allow = state->everyone.allow; in find_gid()
612 a->aces[i].perms.deny = state->everyone.deny; in find_gid()
633 static void process_one_v4_ace(struct posix_acl_state *state, in process_one_v4_ace() argument
639 state->empty = 0; in process_one_v4_ace()
644 allow_bits(&state->owner, mask); in process_one_v4_ace()
646 deny_bits(&state->owner, mask); in process_one_v4_ace()
650 i = find_uid(state, ace->who_uid); in process_one_v4_ace()
652 allow_bits(&state->users->aces[i].perms, mask); in process_one_v4_ace()
654 deny_bits(&state->users->aces[i].perms, mask); in process_one_v4_ace()
655 mask = state->users->aces[i].perms.deny; in process_one_v4_ace()
656 deny_bits(&state->owner, mask); in process_one_v4_ace()
661 allow_bits(&state->group, mask); in process_one_v4_ace()
663 deny_bits(&state->group, mask); in process_one_v4_ace()
664 mask = state->group.deny; in process_one_v4_ace()
665 deny_bits(&state->owner, mask); in process_one_v4_ace()
666 deny_bits(&state->everyone, mask); in process_one_v4_ace()
667 deny_bits_array(state->users, mask); in process_one_v4_ace()
668 deny_bits_array(state->groups, mask); in process_one_v4_ace()
672 i = find_gid(state, ace->who_gid); in process_one_v4_ace()
674 allow_bits(&state->groups->aces[i].perms, mask); in process_one_v4_ace()
676 deny_bits(&state->groups->aces[i].perms, mask); in process_one_v4_ace()
677 mask = state->groups->aces[i].perms.deny; in process_one_v4_ace()
678 deny_bits(&state->owner, mask); in process_one_v4_ace()
679 deny_bits(&state->group, mask); in process_one_v4_ace()
680 deny_bits(&state->everyone, mask); in process_one_v4_ace()
681 deny_bits_array(state->users, mask); in process_one_v4_ace()
682 deny_bits_array(state->groups, mask); in process_one_v4_ace()
687 allow_bits(&state->owner, mask); in process_one_v4_ace()
688 allow_bits(&state->group, mask); in process_one_v4_ace()
689 allow_bits(&state->other, mask); in process_one_v4_ace()
690 allow_bits(&state->everyone, mask); in process_one_v4_ace()
691 allow_bits_array(state->users, mask); in process_one_v4_ace()
692 allow_bits_array(state->groups, mask); in process_one_v4_ace()
694 deny_bits(&state->owner, mask); in process_one_v4_ace()
695 deny_bits(&state->group, mask); in process_one_v4_ace()
696 deny_bits(&state->other, mask); in process_one_v4_ace()
697 deny_bits(&state->everyone, mask); in process_one_v4_ace()
698 deny_bits_array(state->users, mask); in process_one_v4_ace()
699 deny_bits_array(state->groups, mask); in process_one_v4_ace()