Lines Matching +full:default +full:- +full:trim
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2017 - 2018 Covalent IO, Inc. http://covalent.io */
15 if (msg->sg.end > msg->sg.start && in sk_msg_try_coalesce_ok()
16 elem_first_coalesce < msg->sg.end) in sk_msg_try_coalesce_ok()
19 if (msg->sg.end < msg->sg.start && in sk_msg_try_coalesce_ok()
20 (elem_first_coalesce > msg->sg.start || in sk_msg_try_coalesce_ok()
21 elem_first_coalesce < msg->sg.end)) in sk_msg_try_coalesce_ok()
31 u32 osize = msg->sg.size; in sk_msg_alloc()
34 len -= msg->sg.size; in sk_msg_alloc()
41 ret = -ENOMEM; in sk_msg_alloc()
45 orig_offset = pfrag->offset; in sk_msg_alloc()
46 use = min_t(int, len, pfrag->size - orig_offset); in sk_msg_alloc()
48 ret = -ENOMEM; in sk_msg_alloc()
52 i = msg->sg.end; in sk_msg_alloc()
54 sge = &msg->sg.data[i]; in sk_msg_alloc()
57 sg_page(sge) == pfrag->page && in sk_msg_alloc()
58 sge->offset + sge->length == orig_offset) { in sk_msg_alloc()
59 sge->length += use; in sk_msg_alloc()
62 ret = -ENOSPC; in sk_msg_alloc()
66 sge = &msg->sg.data[msg->sg.end]; in sk_msg_alloc()
68 sg_set_page(sge, pfrag->page, use, orig_offset); in sk_msg_alloc()
69 get_page(pfrag->page); in sk_msg_alloc()
74 msg->sg.size += use; in sk_msg_alloc()
75 pfrag->offset += use; in sk_msg_alloc()
76 len -= use; in sk_msg_alloc()
90 int i = src->sg.start; in sk_msg_clone()
96 if (sge->length > off) in sk_msg_clone()
98 off -= sge->length; in sk_msg_clone()
100 if (i == src->sg.end && off) in sk_msg_clone()
101 return -ENOSPC; in sk_msg_clone()
106 sge_len = sge->length - off; in sk_msg_clone()
110 if (dst->sg.end) in sk_msg_clone()
111 sgd = sk_msg_elem(dst, dst->sg.end - 1); in sk_msg_clone()
115 (sg_virt(sge) + off == sg_virt(sgd) + sgd->length)) { in sk_msg_clone()
116 sgd->length += sge_len; in sk_msg_clone()
117 dst->sg.size += sge_len; in sk_msg_clone()
119 sge_off = sge->offset + off; in sk_msg_clone()
122 return -ENOSPC; in sk_msg_clone()
126 len -= sge_len; in sk_msg_clone()
129 if (i == src->sg.end && len) in sk_msg_clone()
130 return -ENOSPC; in sk_msg_clone()
140 int i = msg->sg.start; in sk_msg_return_zero()
145 if (bytes < sge->length) { in sk_msg_return_zero()
146 sge->length -= bytes; in sk_msg_return_zero()
147 sge->offset += bytes; in sk_msg_return_zero()
152 sk_mem_uncharge(sk, sge->length); in sk_msg_return_zero()
153 bytes -= sge->length; in sk_msg_return_zero()
154 sge->length = 0; in sk_msg_return_zero()
155 sge->offset = 0; in sk_msg_return_zero()
157 } while (bytes && i != msg->sg.end); in sk_msg_return_zero()
158 msg->sg.start = i; in sk_msg_return_zero()
164 int i = msg->sg.start; in sk_msg_return()
167 struct scatterlist *sge = &msg->sg.data[i]; in sk_msg_return()
168 int uncharge = (bytes < sge->length) ? bytes : sge->length; in sk_msg_return()
171 bytes -= uncharge; in sk_msg_return()
173 } while (i != msg->sg.end); in sk_msg_return()
181 u32 len = sge->length; in sk_msg_free_elem()
184 if (!msg->skb) { in sk_msg_free_elem()
199 while (msg->sg.size) { in __sk_msg_free()
200 msg->sg.size -= sge->length; in __sk_msg_free()
203 sk_msg_check_to_free(msg, i, msg->sg.size); in __sk_msg_free()
206 consume_skb(msg->skb); in __sk_msg_free()
213 return __sk_msg_free(sk, msg, msg->sg.start, false); in sk_msg_free_nocharge()
219 return __sk_msg_free(sk, msg, msg->sg.start, true); in sk_msg_free()
227 u32 i = msg->sg.start; in __sk_msg_free_partial()
231 if (!sge->length) in __sk_msg_free_partial()
233 if (bytes < sge->length) { in __sk_msg_free_partial()
236 sge->length -= bytes; in __sk_msg_free_partial()
237 sge->offset += bytes; in __sk_msg_free_partial()
238 msg->sg.size -= bytes; in __sk_msg_free_partial()
242 msg->sg.size -= sge->length; in __sk_msg_free_partial()
243 bytes -= sge->length; in __sk_msg_free_partial()
248 msg->sg.start = i; in __sk_msg_free_partial()
265 int trim = msg->sg.size - len; in sk_msg_trim() local
266 u32 i = msg->sg.end; in sk_msg_trim()
268 if (trim <= 0) { in sk_msg_trim()
269 WARN_ON(trim < 0); in sk_msg_trim()
274 msg->sg.size = len; in sk_msg_trim()
275 while (msg->sg.data[i].length && in sk_msg_trim()
276 trim >= msg->sg.data[i].length) { in sk_msg_trim()
277 trim -= msg->sg.data[i].length; in sk_msg_trim()
280 if (!trim) in sk_msg_trim()
284 msg->sg.data[i].length -= trim; in sk_msg_trim()
285 sk_mem_uncharge(sk, trim); in sk_msg_trim()
287 if (msg->sg.curr == i && msg->sg.copybreak > msg->sg.data[i].length) in sk_msg_trim()
288 msg->sg.copybreak = msg->sg.data[i].length; in sk_msg_trim()
291 msg->sg.end = i; in sk_msg_trim()
293 /* If we trim data a full sg elem before curr pointer update in sk_msg_trim()
299 if (!msg->sg.size) { in sk_msg_trim()
300 msg->sg.curr = msg->sg.start; in sk_msg_trim()
301 msg->sg.copybreak = 0; in sk_msg_trim()
302 } else if (sk_msg_iter_dist(msg->sg.start, msg->sg.curr) >= in sk_msg_trim()
303 sk_msg_iter_dist(msg->sg.start, msg->sg.end)) { in sk_msg_trim()
305 msg->sg.curr = i; in sk_msg_trim()
306 msg->sg.copybreak = msg->sg.data[i].length; in sk_msg_trim()
319 orig = msg->sg.size; in sk_msg_zerocopy_from_iter()
322 maxpages = to_max_pages - num_elems; in sk_msg_zerocopy_from_iter()
324 ret = -EFAULT; in sk_msg_zerocopy_from_iter()
331 ret = -EFAULT; in sk_msg_zerocopy_from_iter()
335 bytes -= copied; in sk_msg_zerocopy_from_iter()
336 msg->sg.size += copied; in sk_msg_zerocopy_from_iter()
339 use = min_t(int, copied, PAGE_SIZE - offset); in sk_msg_zerocopy_from_iter()
340 sg_set_page(&msg->sg.data[msg->sg.end], in sk_msg_zerocopy_from_iter()
342 sg_unmark_end(&msg->sg.data[msg->sg.end]); in sk_msg_zerocopy_from_iter()
346 copied -= use; in sk_msg_zerocopy_from_iter()
355 msg->sg.copybreak = 0; in sk_msg_zerocopy_from_iter()
356 msg->sg.curr = msg->sg.end; in sk_msg_zerocopy_from_iter()
359 /* Revert iov_iter updates, msg will need to use 'trim' later if it in sk_msg_zerocopy_from_iter()
363 iov_iter_revert(from, msg->sg.size - orig); in sk_msg_zerocopy_from_iter()
371 int ret = -ENOSPC, i = msg->sg.curr; in sk_msg_memcopy_from_iter()
378 /* This is possible if a trim operation shrunk the buffer */ in sk_msg_memcopy_from_iter()
379 if (msg->sg.copybreak >= sge->length) { in sk_msg_memcopy_from_iter()
380 msg->sg.copybreak = 0; in sk_msg_memcopy_from_iter()
382 if (i == msg->sg.end) in sk_msg_memcopy_from_iter()
387 buf_size = sge->length - msg->sg.copybreak; in sk_msg_memcopy_from_iter()
389 to = sg_virt(sge) + msg->sg.copybreak; in sk_msg_memcopy_from_iter()
390 msg->sg.copybreak += copy; in sk_msg_memcopy_from_iter()
391 if (sk->sk_route_caps & NETIF_F_NOCACHE_COPY) in sk_msg_memcopy_from_iter()
396 ret = -EFAULT; in sk_msg_memcopy_from_iter()
399 bytes -= copy; in sk_msg_memcopy_from_iter()
403 msg->sg.copybreak = 0; in sk_msg_memcopy_from_iter()
405 } while (i != msg->sg.end); in sk_msg_memcopy_from_iter()
407 msg->sg.curr = i; in sk_msg_memcopy_from_iter()
412 /* Receive sk_msg from psock->ingress_msg to @msg. */
416 struct iov_iter *iter = &msg->msg_iter; in sk_msg_recvmsg()
428 i = msg_rx->sg.start; in sk_msg_recvmsg()
434 copy = sge->length; in sk_msg_recvmsg()
437 copy = len - copied; in sk_msg_recvmsg()
439 copy = copy_page_to_iter(page, sge->offset, copy, iter); in sk_msg_recvmsg()
441 copied = copied ? copied : -EFAULT; in sk_msg_recvmsg()
447 sge->offset += copy; in sk_msg_recvmsg()
448 sge->length -= copy; in sk_msg_recvmsg()
449 if (!msg_rx->skb) { in sk_msg_recvmsg()
451 atomic_sub(copy, &sk->sk_rmem_alloc); in sk_msg_recvmsg()
453 msg_rx->sg.size -= copy; in sk_msg_recvmsg()
455 if (!sge->length) { in sk_msg_recvmsg()
457 if (!msg_rx->skb) in sk_msg_recvmsg()
464 if (copy != sge->length) in sk_msg_recvmsg()
471 } while ((i != msg_rx->sg.end) && !sg_is_last(sge)); in sk_msg_recvmsg()
480 msg_rx->sg.start = i; in sk_msg_recvmsg()
481 if (!sge->length && (i == msg_rx->sg.end || sg_is_last(sge))) { in sk_msg_recvmsg()
500 empty = list_empty(&psock->ingress_msg); in sk_msg_is_readable()
513 sg_init_marker(msg->sg.data, NR_MSG_FRAG_IDS); in alloc_sk_msg()
520 if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf) in sk_psock_create_ingress_msg()
523 if (!sk_rmem_schedule(sk, skb, skb->truesize)) in sk_psock_create_ingress_msg()
537 num_sge = skb_to_sgvec(skb, msg->sg.data, off, len); in sk_psock_skb_ingress_enqueue()
545 return -EAGAIN; in sk_psock_skb_ingress_enqueue()
547 num_sge = skb_to_sgvec(skb, msg->sg.data, off, len); in sk_psock_skb_ingress_enqueue()
553 psock->ingress_bytes += len; in sk_psock_skb_ingress_enqueue()
556 msg->sg.start = 0; in sk_psock_skb_ingress_enqueue()
557 msg->sg.size = copied; in sk_psock_skb_ingress_enqueue()
558 msg->sg.end = num_sge; in sk_psock_skb_ingress_enqueue()
559 msg->skb = skb; in sk_psock_skb_ingress_enqueue()
572 struct sock *sk = psock->sk; in sk_psock_skb_ingress()
576 /* If we are receiving on the same sock skb->sk is already assigned, in sk_psock_skb_ingress()
580 if (unlikely(skb->sk == sk)) in sk_psock_skb_ingress()
584 return -EAGAIN; in sk_psock_skb_ingress()
607 struct sock *sk = psock->sk; in sk_psock_skb_ingress_self()
611 return -EAGAIN; in sk_psock_skb_ingress_self()
625 if (!sock_writeable(psock->sk)) in sk_psock_handle_skb()
626 return -EAGAIN; in sk_psock_handle_skb()
627 return skb_send_sock(psock->sk, skb, off, len); in sk_psock_handle_skb()
640 spin_lock_bh(&psock->ingress_lock); in sk_psock_skb_state()
642 state->len = len; in sk_psock_skb_state()
643 state->off = off; in sk_psock_skb_state()
645 spin_unlock_bh(&psock->ingress_lock); in sk_psock_skb_state()
652 struct sk_psock_work_state *state = &psock->work_state; in sk_psock_backlog()
658 mutex_lock(&psock->work_mutex); in sk_psock_backlog()
659 if (unlikely(state->len)) { in sk_psock_backlog()
660 len = state->len; in sk_psock_backlog()
661 off = state->off; in sk_psock_backlog()
664 while ((skb = skb_peek(&psock->ingress_skb))) { in sk_psock_backlog()
665 len = skb->len; in sk_psock_backlog()
670 off = stm->offset; in sk_psock_backlog()
671 len = stm->full_len; in sk_psock_backlog()
676 ret = -EIO; in sk_psock_backlog()
677 if (!sock_flag(psock->sk, SOCK_DEAD)) in sk_psock_backlog()
681 if (ret == -EAGAIN) { in sk_psock_backlog()
688 schedule_delayed_work(&psock->work, 1); in sk_psock_backlog()
692 sk_psock_report_error(psock, ret ? -ret : EPIPE); in sk_psock_backlog()
697 len -= ret; in sk_psock_backlog()
700 skb = skb_dequeue(&psock->ingress_skb); in sk_psock_backlog()
704 mutex_unlock(&psock->work_mutex); in sk_psock_backlog()
712 write_lock_bh(&sk->sk_callback_lock); in sk_psock_init()
715 psock = ERR_PTR(-EINVAL); in sk_psock_init()
719 if (sk->sk_user_data) { in sk_psock_init()
720 psock = ERR_PTR(-EBUSY); in sk_psock_init()
726 psock = ERR_PTR(-ENOMEM); in sk_psock_init()
730 prot = READ_ONCE(sk->sk_prot); in sk_psock_init()
731 psock->sk = sk; in sk_psock_init()
732 psock->eval = __SK_NONE; in sk_psock_init()
733 psock->sk_proto = prot; in sk_psock_init()
734 psock->saved_unhash = prot->unhash; in sk_psock_init()
735 psock->saved_destroy = prot->destroy; in sk_psock_init()
736 psock->saved_close = prot->close; in sk_psock_init()
737 psock->saved_write_space = sk->sk_write_space; in sk_psock_init()
739 INIT_LIST_HEAD(&psock->link); in sk_psock_init()
740 spin_lock_init(&psock->link_lock); in sk_psock_init()
742 INIT_DELAYED_WORK(&psock->work, sk_psock_backlog); in sk_psock_init()
743 mutex_init(&psock->work_mutex); in sk_psock_init()
744 INIT_LIST_HEAD(&psock->ingress_msg); in sk_psock_init()
745 spin_lock_init(&psock->ingress_lock); in sk_psock_init()
746 skb_queue_head_init(&psock->ingress_skb); in sk_psock_init()
749 refcount_set(&psock->refcnt, 1); in sk_psock_init()
757 write_unlock_bh(&sk->sk_callback_lock); in sk_psock_init()
766 spin_lock_bh(&psock->link_lock); in sk_psock_link_pop()
767 link = list_first_entry_or_null(&psock->link, struct sk_psock_link, in sk_psock_link_pop()
770 list_del(&link->list); in sk_psock_link_pop()
771 spin_unlock_bh(&psock->link_lock); in sk_psock_link_pop()
779 list_for_each_entry_safe(msg, tmp, &psock->ingress_msg, list) { in __sk_psock_purge_ingress_msg()
780 list_del(&msg->list); in __sk_psock_purge_ingress_msg()
781 if (!msg->skb) in __sk_psock_purge_ingress_msg()
782 atomic_sub(msg->sg.size, &psock->sk->sk_rmem_alloc); in __sk_psock_purge_ingress_msg()
783 sk_msg_free(psock->sk, msg); in __sk_psock_purge_ingress_msg()
792 while ((skb = skb_dequeue(&psock->ingress_skb)) != NULL) { in __sk_psock_zap_ingress()
794 sock_drop(psock->sk, skb); in __sk_psock_zap_ingress()
803 list_for_each_entry_safe(link, tmp, &psock->link, list) { in sk_psock_link_destroy()
804 list_del(&link->list); in sk_psock_link_destroy()
811 spin_lock_bh(&psock->ingress_lock); in sk_psock_stop()
814 spin_unlock_bh(&psock->ingress_lock); in sk_psock_stop()
827 cancel_delayed_work_sync(&psock->work); in sk_psock_destroy()
829 mutex_destroy(&psock->work_mutex); in sk_psock_destroy()
831 psock_progs_drop(&psock->progs); in sk_psock_destroy()
836 if (psock->sk_redir) in sk_psock_destroy()
837 sock_put(psock->sk_redir); in sk_psock_destroy()
838 if (psock->sk_pair) in sk_psock_destroy()
839 sock_put(psock->sk_pair); in sk_psock_destroy()
840 sock_put(psock->sk); in sk_psock_destroy()
846 write_lock_bh(&sk->sk_callback_lock); in sk_psock_drop()
849 if (psock->progs.stream_parser) in sk_psock_drop()
851 else if (psock->progs.stream_verdict || psock->progs.skb_verdict) in sk_psock_drop()
853 write_unlock_bh(&sk->sk_callback_lock); in sk_psock_drop()
857 INIT_RCU_WORK(&psock->rwork, sk_psock_destroy); in sk_psock_drop()
858 queue_rcu_work(system_wq, &psock->rwork); in sk_psock_drop()
868 default: in sk_psock_map_verd()
882 prog = READ_ONCE(psock->progs.msg_parser); in sk_psock_msg_verdict()
889 msg->sk = sk; in sk_psock_msg_verdict()
891 ret = sk_psock_map_verd(ret, msg->sk_redir); in sk_psock_msg_verdict()
892 psock->apply_bytes = msg->apply_bytes; in sk_psock_msg_verdict()
894 if (psock->sk_redir) { in sk_psock_msg_verdict()
895 sock_put(psock->sk_redir); in sk_psock_msg_verdict()
896 psock->sk_redir = NULL; in sk_psock_msg_verdict()
898 if (!msg->sk_redir) { in sk_psock_msg_verdict()
902 psock->redir_ingress = sk_msg_to_ingress(msg); in sk_psock_msg_verdict()
903 psock->sk_redir = msg->sk_redir; in sk_psock_msg_verdict()
904 sock_hold(psock->sk_redir); in sk_psock_msg_verdict()
923 sock_drop(from->sk, skb); in sk_psock_skb_redirect()
924 return -EIO; in sk_psock_skb_redirect()
933 sock_drop(from->sk, skb); in sk_psock_skb_redirect()
934 return -EIO; in sk_psock_skb_redirect()
936 spin_lock_bh(&psock_other->ingress_lock); in sk_psock_skb_redirect()
938 spin_unlock_bh(&psock_other->ingress_lock); in sk_psock_skb_redirect()
940 sock_drop(from->sk, skb); in sk_psock_skb_redirect()
941 return -EIO; in sk_psock_skb_redirect()
944 skb_queue_tail(&psock_other->ingress_skb, skb); in sk_psock_skb_redirect()
945 schedule_delayed_work(&psock_other->work, 0); in sk_psock_skb_redirect()
946 spin_unlock_bh(&psock_other->ingress_lock); in sk_psock_skb_redirect()
959 default: in sk_psock_tls_verdict_apply()
970 prog = READ_ONCE(psock->progs.stream_verdict); in sk_psock_tls_strp_read()
972 skb->sk = psock->sk; in sk_psock_tls_strp_read()
977 skb->sk = NULL; in sk_psock_tls_strp_read()
994 err = -EIO; in sk_psock_verdict_apply()
995 sk_other = psock->sk; in sk_psock_verdict_apply()
1008 if (skb_queue_empty(&psock->ingress_skb)) { in sk_psock_verdict_apply()
1009 len = skb->len; in sk_psock_verdict_apply()
1014 off = stm->offset; in sk_psock_verdict_apply()
1015 len = stm->full_len; in sk_psock_verdict_apply()
1020 spin_lock_bh(&psock->ingress_lock); in sk_psock_verdict_apply()
1022 skb_queue_tail(&psock->ingress_skb, skb); in sk_psock_verdict_apply()
1023 schedule_delayed_work(&psock->work, 0); in sk_psock_verdict_apply()
1026 spin_unlock_bh(&psock->ingress_lock); in sk_psock_verdict_apply()
1032 tcp_eat_skb(psock->sk, skb); in sk_psock_verdict_apply()
1036 default: in sk_psock_verdict_apply()
1039 tcp_eat_skb(psock->sk, skb); in sk_psock_verdict_apply()
1040 sock_drop(psock->sk, skb); in sk_psock_verdict_apply()
1055 schedule_delayed_work(&psock->work, 0); in sk_psock_write_space()
1056 write_space = psock->saved_write_space; in sk_psock_write_space()
1072 sk = strp->sk; in sk_psock_strp_read()
1078 prog = READ_ONCE(psock->progs.stream_verdict); in sk_psock_strp_read()
1080 skb->sk = sk; in sk_psock_strp_read()
1086 skb->sk = NULL; in sk_psock_strp_read()
1102 int ret = skb->len; in sk_psock_strp_parse()
1105 prog = READ_ONCE(psock->progs.stream_parser); in sk_psock_strp_parse()
1107 skb->sk = psock->sk; in sk_psock_strp_parse()
1109 skb->sk = NULL; in sk_psock_strp_parse()
1126 psock->saved_data_ready(sk); in sk_psock_strp_data_ready()
1128 read_lock_bh(&sk->sk_callback_lock); in sk_psock_strp_data_ready()
1129 strp_data_ready(&psock->strp); in sk_psock_strp_data_ready()
1130 read_unlock_bh(&sk->sk_callback_lock); in sk_psock_strp_data_ready()
1146 ret = strp_init(&psock->strp, sk, &cb); in sk_psock_init_strp()
1151 psock->strp.cb.read_sock = tcp_bpf_strp_read_sock; in sk_psock_init_strp()
1152 psock->copied_seq = tcp_sk(sk)->copied_seq; in sk_psock_init_strp()
1159 if (psock->saved_data_ready) in sk_psock_start_strp()
1162 psock->saved_data_ready = sk->sk_data_ready; in sk_psock_start_strp()
1163 sk->sk_data_ready = sk_psock_strp_data_ready; in sk_psock_start_strp()
1164 sk->sk_write_space = sk_psock_write_space; in sk_psock_start_strp()
1169 psock_set_prog(&psock->progs.stream_parser, NULL); in sk_psock_stop_strp()
1171 if (!psock->saved_data_ready) in sk_psock_stop_strp()
1174 sk->sk_data_ready = psock->saved_data_ready; in sk_psock_stop_strp()
1175 psock->saved_data_ready = NULL; in sk_psock_stop_strp()
1176 strp_stop(&psock->strp); in sk_psock_stop_strp()
1183 strp_done(&psock->strp); in sk_psock_done_strp()
1196 int len = skb->len; in sk_psock_verdict_recv()
1206 prog = READ_ONCE(psock->progs.stream_verdict); in sk_psock_verdict_recv()
1208 prog = READ_ONCE(psock->progs.skb_verdict); in sk_psock_verdict_recv()
1225 struct socket *sock = sk->sk_socket; in sk_psock_verdict_data_ready()
1233 ops = READ_ONCE(sock->ops); in sk_psock_verdict_data_ready()
1234 if (!ops || !ops->read_skb) in sk_psock_verdict_data_ready()
1236 copied = ops->read_skb(sk, sk_psock_verdict_recv); in sk_psock_verdict_data_ready()
1250 if (psock->saved_data_ready) in sk_psock_start_verdict()
1253 psock->saved_data_ready = sk->sk_data_ready; in sk_psock_start_verdict()
1254 sk->sk_data_ready = sk_psock_verdict_data_ready; in sk_psock_start_verdict()
1255 sk->sk_write_space = sk_psock_write_space; in sk_psock_start_verdict()
1260 psock_set_prog(&psock->progs.stream_verdict, NULL); in sk_psock_stop_verdict()
1261 psock_set_prog(&psock->progs.skb_verdict, NULL); in sk_psock_stop_verdict()
1263 if (!psock->saved_data_ready) in sk_psock_stop_verdict()
1266 sk->sk_data_ready = psock->saved_data_ready; in sk_psock_stop_verdict()
1267 psock->saved_data_ready = NULL; in sk_psock_stop_verdict()