Lines Matching refs:sk
56 static inline int aead_sndbuf(struct sock *sk) in aead_sndbuf() argument
58 struct alg_sock *ask = alg_sk(sk); in aead_sndbuf()
61 return max_t(int, max_t(int, sk->sk_sndbuf & PAGE_MASK, PAGE_SIZE) - in aead_sndbuf()
65 static inline bool aead_writable(struct sock *sk) in aead_writable() argument
67 return PAGE_SIZE <= aead_sndbuf(sk); in aead_writable()
77 static void aead_put_sgl(struct sock *sk) in aead_put_sgl() argument
79 struct alg_sock *ask = alg_sk(sk); in aead_put_sgl()
98 static void aead_wmem_wakeup(struct sock *sk) in aead_wmem_wakeup() argument
102 if (!aead_writable(sk)) in aead_wmem_wakeup()
106 wq = rcu_dereference(sk->sk_wq); in aead_wmem_wakeup()
111 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); in aead_wmem_wakeup()
115 static int aead_wait_for_data(struct sock *sk, unsigned flags) in aead_wait_for_data() argument
117 struct alg_sock *ask = alg_sk(sk); in aead_wait_for_data()
126 set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); in aead_wait_for_data()
131 prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); in aead_wait_for_data()
133 if (sk_wait_event(sk, &timeout, !ctx->more)) { in aead_wait_for_data()
138 finish_wait(sk_sleep(sk), &wait); in aead_wait_for_data()
140 clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags); in aead_wait_for_data()
145 static void aead_data_wakeup(struct sock *sk) in aead_data_wakeup() argument
147 struct alg_sock *ask = alg_sk(sk); in aead_data_wakeup()
157 wq = rcu_dereference(sk->sk_wq); in aead_data_wakeup()
162 sk_wake_async(sk, SOCK_WAKE_SPACE, POLL_OUT); in aead_data_wakeup()
168 struct sock *sk = sock->sk; in aead_sendmsg() local
169 struct alg_sock *ask = alg_sk(sk); in aead_sendmsg()
201 lock_sock(sk); in aead_sendmsg()
238 if (!aead_writable(sk)) { in aead_sendmsg()
240 aead_put_sgl(sk); in aead_sendmsg()
246 len = min_t(unsigned long, size, aead_sndbuf(sk)); in aead_sendmsg()
251 aead_put_sgl(sk); in aead_sendmsg()
287 aead_put_sgl(sk); in aead_sendmsg()
292 aead_data_wakeup(sk); in aead_sendmsg()
293 release_sock(sk); in aead_sendmsg()
301 struct sock *sk = sock->sk; in aead_sendpage() local
302 struct alg_sock *ask = alg_sk(sk); in aead_sendpage()
313 lock_sock(sk); in aead_sendpage()
320 if (!aead_writable(sk)) { in aead_sendpage()
322 aead_put_sgl(sk); in aead_sendpage()
339 aead_put_sgl(sk); in aead_sendpage()
344 aead_data_wakeup(sk); in aead_sendpage()
345 release_sock(sk); in aead_sendpage()
352 struct sock *sk = sock->sk; in aead_recvmsg() local
353 struct alg_sock *ask = alg_sk(sk); in aead_recvmsg()
372 lock_sock(sk); in aead_recvmsg()
390 err = aead_wait_for_data(sk, flags); in aead_recvmsg()
504 aead_put_sgl(sk); in aead_recvmsg()
508 aead_put_sgl(sk); in aead_recvmsg()
516 aead_wmem_wakeup(sk); in aead_recvmsg()
517 release_sock(sk); in aead_recvmsg()
525 struct sock *sk = sock->sk; in aead_poll() local
526 struct alg_sock *ask = alg_sk(sk); in aead_poll()
530 sock_poll_wait(file, sk_sleep(sk), wait); in aead_poll()
536 if (aead_writable(sk)) in aead_poll()
584 static void aead_sock_destruct(struct sock *sk) in aead_sock_destruct() argument
586 struct alg_sock *ask = alg_sk(sk); in aead_sock_destruct()
591 aead_put_sgl(sk); in aead_sock_destruct()
592 sock_kzfree_s(sk, ctx->iv, ivlen); in aead_sock_destruct()
593 sock_kfree_s(sk, ctx, ctx->len); in aead_sock_destruct()
594 af_alg_release_parent(sk); in aead_sock_destruct()
597 static int aead_accept_parent(void *private, struct sock *sk) in aead_accept_parent() argument
600 struct alg_sock *ask = alg_sk(sk); in aead_accept_parent()
604 ctx = sock_kmalloc(sk, len, GFP_KERNEL); in aead_accept_parent()
609 ctx->iv = sock_kmalloc(sk, ivlen, GFP_KERNEL); in aead_accept_parent()
611 sock_kfree_s(sk, ctx, len); in aead_accept_parent()
632 sk->sk_destruct = aead_sock_destruct; in aead_accept_parent()