Lines Matching refs:sk
124 if (sock->sk) { in af_alg_release()
125 sock_put(sock->sk); in af_alg_release()
126 sock->sk = NULL; in af_alg_release()
132 void af_alg_release_parent(struct sock *sk) in af_alg_release_parent() argument
134 struct alg_sock *ask = alg_sk(sk); in af_alg_release_parent()
137 sk = ask->parent; in af_alg_release_parent()
138 ask = alg_sk(sk); in af_alg_release_parent()
144 sock_put(sk); in af_alg_release_parent()
151 struct sock *sk = sock->sk; in alg_bind() local
152 struct alg_sock *ask = alg_sk(sk); in alg_bind()
191 lock_sock(sk); in alg_bind()
201 release_sock(sk); in alg_bind()
208 static int alg_setkey(struct sock *sk, sockptr_t ukey, unsigned int keylen) in alg_setkey() argument
210 struct alg_sock *ask = alg_sk(sk); in alg_setkey()
215 key = sock_kmalloc(sk, keylen, GFP_KERNEL); in alg_setkey()
226 sock_kzfree_s(sk, key, keylen); in alg_setkey()
327 key_data = sock_kmalloc(&ask->sk, key_datalen, GFP_KERNEL); in alg_setkey_by_key_serial()
341 sock_kzfree_s(&ask->sk, key_data, key_datalen); in alg_setkey_by_key_serial()
360 struct sock *sk = sock->sk; in alg_setsockopt() local
361 struct alg_sock *ask = alg_sk(sk); in alg_setsockopt()
365 lock_sock(sk); in alg_setsockopt()
386 err = alg_setkey(sk, optval, optlen); in alg_setsockopt()
405 release_sock(sk); in alg_setsockopt()
410 int af_alg_accept(struct sock *sk, struct socket *newsock, in af_alg_accept() argument
413 struct alg_sock *ask = alg_sk(sk); in af_alg_accept()
419 lock_sock(sk); in af_alg_accept()
426 sk2 = sk_alloc(sock_net(sk), PF_ALG, GFP_KERNEL, &alg_proto, arg->kern); in af_alg_accept()
433 security_sk_clone(sk, sk2); in af_alg_accept()
450 sock_hold(sk); in af_alg_accept()
455 alg_sk(sk2)->parent = sk; in af_alg_accept()
466 release_sock(sk); in af_alg_accept()
475 return af_alg_accept(sock->sk, newsock, arg); in alg_accept()
498 static void alg_sock_destruct(struct sock *sk) in alg_sock_destruct() argument
500 struct alg_sock *ask = alg_sk(sk); in alg_sock_destruct()
508 struct sock *sk; in alg_create() local
517 sk = sk_alloc(net, PF_ALG, GFP_KERNEL, &alg_proto, kern); in alg_create()
518 if (!sk) in alg_create()
522 sock_init_data(sock, sk); in alg_create()
524 sk->sk_destruct = alg_sock_destruct; in alg_create()
605 static int af_alg_alloc_tsgl(struct sock *sk) in af_alg_alloc_tsgl() argument
607 struct alg_sock *ask = alg_sk(sk); in af_alg_alloc_tsgl()
617 sgl = sock_kmalloc(sk, in af_alg_alloc_tsgl()
646 unsigned int af_alg_count_tsgl(struct sock *sk, size_t bytes, size_t offset) in af_alg_count_tsgl() argument
648 const struct alg_sock *ask = alg_sk(sk); in af_alg_count_tsgl()
702 void af_alg_pull_tsgl(struct sock *sk, size_t used, struct scatterlist *dst, in af_alg_pull_tsgl() argument
705 struct alg_sock *ask = alg_sk(sk); in af_alg_pull_tsgl()
756 sock_kfree_s(sk, sgl, struct_size(sgl, sg, MAX_SGL_ENTS + 1)); in af_alg_pull_tsgl()
772 struct sock *sk = areq->sk; in af_alg_free_areq_sgls() local
773 struct alg_sock *ask = alg_sk(sk); in af_alg_free_areq_sgls()
785 sock_kfree_s(sk, rsgl, sizeof(*rsgl)); in af_alg_free_areq_sgls()
796 sock_kfree_s(sk, tsgl, areq->tsgl_entries * sizeof(*tsgl)); in af_alg_free_areq_sgls()
807 static int af_alg_wait_for_wmem(struct sock *sk, unsigned int flags) in af_alg_wait_for_wmem() argument
816 sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk); in af_alg_wait_for_wmem()
818 add_wait_queue(sk_sleep(sk), &wait); in af_alg_wait_for_wmem()
823 if (sk_wait_event(sk, &timeout, af_alg_writable(sk), &wait)) { in af_alg_wait_for_wmem()
828 remove_wait_queue(sk_sleep(sk), &wait); in af_alg_wait_for_wmem()
838 void af_alg_wmem_wakeup(struct sock *sk) in af_alg_wmem_wakeup() argument
842 if (!af_alg_writable(sk)) in af_alg_wmem_wakeup()
846 wq = rcu_dereference(sk->sk_wq); in af_alg_wmem_wakeup()
851 sk_wake_async_rcu(sk, SOCK_WAKE_WAITD, POLL_IN); in af_alg_wmem_wakeup()
864 int af_alg_wait_for_data(struct sock *sk, unsigned flags, unsigned min) in af_alg_wait_for_data() argument
867 struct alg_sock *ask = alg_sk(sk); in af_alg_wait_for_data()
875 sk_set_bit(SOCKWQ_ASYNC_WAITDATA, sk); in af_alg_wait_for_data()
877 add_wait_queue(sk_sleep(sk), &wait); in af_alg_wait_for_data()
882 if (sk_wait_event(sk, &timeout, in af_alg_wait_for_data()
890 remove_wait_queue(sk_sleep(sk), &wait); in af_alg_wait_for_data()
892 sk_clear_bit(SOCKWQ_ASYNC_WAITDATA, sk); in af_alg_wait_for_data()
903 static void af_alg_data_wakeup(struct sock *sk) in af_alg_data_wakeup() argument
905 struct alg_sock *ask = alg_sk(sk); in af_alg_data_wakeup()
913 wq = rcu_dereference(sk->sk_wq); in af_alg_data_wakeup()
918 sk_wake_async_rcu(sk, SOCK_WAKE_SPACE, POLL_OUT); in af_alg_data_wakeup()
941 struct sock *sk = sock->sk; in af_alg_sendmsg() local
942 struct alg_sock *ask = alg_sk(sk); in af_alg_sendmsg()
972 lock_sock(sk); in af_alg_sendmsg()
1022 if (!af_alg_writable(sk)) { in af_alg_sendmsg()
1023 err = af_alg_wait_for_wmem(sk, msg->msg_flags); in af_alg_sendmsg()
1029 len = min_t(unsigned long, len, af_alg_sndbuf(sk)); in af_alg_sendmsg()
1031 err = af_alg_alloc_tsgl(sk); in af_alg_sendmsg()
1106 af_alg_data_wakeup(sk); in af_alg_sendmsg()
1107 release_sock(sk); in af_alg_sendmsg()
1119 struct sock *sk = areq->sk; in af_alg_free_resources() local
1123 sock_kfree_s(sk, areq, areq->areqlen); in af_alg_free_resources()
1125 ctx = alg_sk(sk)->private; in af_alg_free_resources()
1145 struct sock *sk = areq->sk; in af_alg_async_cb() local
1153 sock_put(sk); in af_alg_async_cb()
1168 struct sock *sk = sock->sk; in af_alg_poll() local
1169 struct alg_sock *ask = alg_sk(sk); in af_alg_poll()
1179 if (af_alg_writable(sk)) in af_alg_poll()
1193 struct af_alg_async_req *af_alg_alloc_areq(struct sock *sk, in af_alg_alloc_areq() argument
1196 struct af_alg_ctx *ctx = alg_sk(sk)->private; in af_alg_alloc_areq()
1203 areq = sock_kmalloc(sk, areqlen, GFP_KERNEL); in af_alg_alloc_areq()
1210 areq->sk = sk; in af_alg_alloc_areq()
1233 int af_alg_get_rsgl(struct sock *sk, struct msghdr *msg, int flags, in af_alg_get_rsgl() argument
1237 struct alg_sock *ask = alg_sk(sk); in af_alg_get_rsgl()
1247 if (!af_alg_readable(sk)) in af_alg_get_rsgl()
1256 rsgl = sock_kmalloc(sk, sizeof(*rsgl), GFP_KERNEL); in af_alg_get_rsgl()