Lines Matching refs:groups
404 WARN_ON(nlk_sk(sk)->groups); in netlink_sock_destruct()
540 for (i = 0; i < NLGRPLONGS(tbl->groups); i++) { in netlink_update_listeners()
544 mask |= nlk_sk(sk)->groups[i]; in netlink_update_listeners()
653 void (*release)(struct sock *sock, unsigned long *groups); in netlink_create()
710 kfree(nlk->groups); in deferred_put_nlk_sk()
711 nlk->groups = NULL; in deferred_put_nlk_sk()
736 nlk->netlink_release(sk, nlk->groups); in netlink_release()
745 if (test_bit(i, nlk->groups)) in netlink_release()
927 unsigned int groups; in netlink_realloc_groups() local
933 groups = nl_table[sk->sk_protocol].groups; in netlink_realloc_groups()
939 if (nlk->ngroups >= groups) in netlink_realloc_groups()
942 new_groups = krealloc(nlk->groups, NLGRPSZ(groups), GFP_ATOMIC); in netlink_realloc_groups()
948 NLGRPSZ(groups) - NLGRPSZ(nlk->ngroups)); in netlink_realloc_groups()
950 nlk->groups = new_groups; in netlink_realloc_groups()
951 nlk->ngroups = groups; in netlink_realloc_groups()
957 static void netlink_undo_bind(int group, long unsigned int groups, in netlink_undo_bind() argument
967 if (test_bit(undo, &groups)) in netlink_undo_bind()
979 unsigned long groups; in netlink_bind() local
987 groups = nladdr->nl_groups; in netlink_bind()
990 if (groups) { in netlink_bind()
999 groups &= (1UL << nlk->ngroups) - 1; in netlink_bind()
1011 if (nlk->netlink_bind && groups) { in netlink_bind()
1016 if (!test_bit(group, &groups)) in netlink_bind()
1021 netlink_undo_bind(group, groups, sk); in netlink_bind()
1035 netlink_undo_bind(BITS_PER_TYPE(u32), groups, sk); in netlink_bind()
1040 if (!groups && (nlk->groups == NULL || !(u32)nlk->groups[0])) in netlink_bind()
1046 hweight32(groups) - in netlink_bind()
1047 hweight32(nlk->groups[0])); in netlink_bind()
1048 nlk->groups[0] = (nlk->groups[0] & ~0xffffffffUL) | groups; in netlink_bind()
1124 nladdr->nl_groups = nlk->groups ? nlk->groups[0] : 0; in netlink_getname()
1375 if (listeners && group - 1 < nl_table[sk->sk_protocol].groups) in netlink_has_listeners()
1434 !test_bit(p->group - 1, nlk->groups)) in do_one_broadcast()
1583 !test_bit(p->group - 1, nlk->groups)) in do_one_set_err()
1637 old = test_bit(group - 1, nlk->groups); in netlink_update_socket_mc()
1639 __assign_bit(group - 1, nlk->groups, new); in netlink_update_socket_mc()
1756 if (put_user((u32)(nlk->groups[idx] >> shift), in netlink_getsockopt()
2010 unsigned int groups; in __netlink_kernel_create() local
2025 if (!cfg || cfg->groups < 32) in __netlink_kernel_create()
2026 groups = 32; in __netlink_kernel_create()
2028 groups = cfg->groups; in __netlink_kernel_create()
2030 listeners = kzalloc(sizeof(*listeners) + NLGRPSZ(groups), GFP_KERNEL); in __netlink_kernel_create()
2046 nl_table[unit].groups = groups; in __netlink_kernel_create()
2084 int __netlink_change_ngroups(struct sock *sk, unsigned int groups) in __netlink_change_ngroups() argument
2089 if (groups < 32) in __netlink_change_ngroups()
2090 groups = 32; in __netlink_change_ngroups()
2092 if (NLGRPSZ(tbl->groups) < NLGRPSZ(groups)) { in __netlink_change_ngroups()
2093 new = kzalloc(sizeof(*new) + NLGRPSZ(groups), GFP_ATOMIC); in __netlink_change_ngroups()
2097 memcpy(new->masks, old->masks, NLGRPSZ(tbl->groups)); in __netlink_change_ngroups()
2102 tbl->groups = groups; in __netlink_change_ngroups()
2119 int netlink_change_ngroups(struct sock *sk, unsigned int groups) in netlink_change_ngroups() argument
2124 err = __netlink_change_ngroups(sk, groups); in netlink_change_ngroups()
2709 nlk->groups ? (u32)nlk->groups[0] : 0, in netlink_native_seq_show()
2850 int groups = 32; in netlink_add_usersock_entry() local
2852 listeners = kzalloc(sizeof(*listeners) + NLGRPSZ(groups), GFP_KERNEL); in netlink_add_usersock_entry()
2858 nl_table[NETLINK_USERSOCK].groups = groups; in netlink_add_usersock_entry()