Lines Matching refs:psock

141 static void smap_release_sock(struct smap_psock *psock, struct sock *sock);
157 struct smap_psock *psock; in bpf_tcp_stream_read() local
161 psock = smap_psock_sk(sk); in bpf_tcp_stream_read()
162 if (unlikely(!psock)) in bpf_tcp_stream_read()
164 empty = list_empty(&psock->ingress); in bpf_tcp_stream_read()
199 static void update_sk_prot(struct sock *sk, struct smap_psock *psock) in update_sk_prot() argument
202 int conf = psock->bpf_tx_msg ? SOCKMAP_TX : SOCKMAP_BASE; in update_sk_prot()
209 struct smap_psock *psock; in bpf_tcp_init() local
212 psock = smap_psock_sk(sk); in bpf_tcp_init()
213 if (unlikely(!psock)) { in bpf_tcp_init()
218 if (unlikely(psock->sk_proto)) { in bpf_tcp_init()
223 psock->save_unhash = sk->sk_prot->unhash; in bpf_tcp_init()
224 psock->save_close = sk->sk_prot->close; in bpf_tcp_init()
225 psock->sk_proto = sk->sk_prot; in bpf_tcp_init()
237 update_sk_prot(sk, psock); in bpf_tcp_init()
242 static void smap_release_sock(struct smap_psock *psock, struct sock *sock);
247 struct smap_psock *psock; in bpf_tcp_release() local
250 psock = smap_psock_sk(sk); in bpf_tcp_release()
251 if (unlikely(!psock)) in bpf_tcp_release()
254 if (psock->cork) { in bpf_tcp_release()
255 free_start_sg(psock->sock, psock->cork, true); in bpf_tcp_release()
256 kfree(psock->cork); in bpf_tcp_release()
257 psock->cork = NULL; in bpf_tcp_release()
260 if (psock->sk_proto) { in bpf_tcp_release()
261 sk->sk_prot = psock->sk_proto; in bpf_tcp_release()
262 psock->sk_proto = NULL; in bpf_tcp_release()
298 struct smap_psock *psock) in psock_map_pop() argument
302 spin_lock_bh(&psock->maps_lock); in psock_map_pop()
303 e = list_first_entry_or_null(&psock->maps, in psock_map_pop()
308 spin_unlock_bh(&psock->maps_lock); in psock_map_pop()
312 static void bpf_tcp_remove(struct sock *sk, struct smap_psock *psock) in bpf_tcp_remove() argument
318 if (psock->cork) { in bpf_tcp_remove()
319 free_start_sg(psock->sock, psock->cork, true); in bpf_tcp_remove()
320 kfree(psock->cork); in bpf_tcp_remove()
321 psock->cork = NULL; in bpf_tcp_remove()
324 list_for_each_entry_safe(md, mtmp, &psock->ingress, list) { in bpf_tcp_remove()
326 free_start_sg(psock->sock, md, true); in bpf_tcp_remove()
330 e = psock_map_pop(sk, psock); in bpf_tcp_remove()
339 smap_release_sock(psock, sk); in bpf_tcp_remove()
360 smap_release_sock(psock, link->sk); in bpf_tcp_remove()
366 e = psock_map_pop(sk, psock); in bpf_tcp_remove()
373 struct smap_psock *psock; in bpf_tcp_unhash() local
376 psock = smap_psock_sk(sk); in bpf_tcp_unhash()
377 if (unlikely(!psock)) { in bpf_tcp_unhash()
383 unhash_fun = psock->save_unhash; in bpf_tcp_unhash()
384 bpf_tcp_remove(sk, psock); in bpf_tcp_unhash()
392 struct smap_psock *psock; in bpf_tcp_close() local
396 psock = smap_psock_sk(sk); in bpf_tcp_close()
397 if (unlikely(!psock)) { in bpf_tcp_close()
402 close_fun = psock->save_close; in bpf_tcp_close()
403 bpf_tcp_remove(sk, psock); in bpf_tcp_close()
642 struct smap_psock *psock, in smap_do_tx_msg() argument
652 prog = READ_ONCE(psock->bpf_tx_msg); in smap_do_tx_msg()
661 psock->apply_bytes = md->apply_bytes; in smap_do_tx_msg()
672 if (psock->sk_redir) in smap_do_tx_msg()
673 sock_put(psock->sk_redir); in smap_do_tx_msg()
674 psock->sk_redir = do_msg_redirect_map(md); in smap_do_tx_msg()
675 if (!psock->sk_redir) { in smap_do_tx_msg()
679 sock_hold(psock->sk_redir); in smap_do_tx_msg()
689 struct smap_psock *psock, in bpf_tcp_ingress() argument
742 list_add_tail(&r->list, &psock->ingress); in bpf_tcp_ingress()
758 struct smap_psock *psock; in bpf_tcp_sendmsg_do_redirect() local
762 psock = smap_psock_sk(sk); in bpf_tcp_sendmsg_do_redirect()
763 if (unlikely(!psock)) in bpf_tcp_sendmsg_do_redirect()
766 if (!refcount_inc_not_zero(&psock->refcnt)) in bpf_tcp_sendmsg_do_redirect()
772 err = bpf_tcp_ingress(sk, send, psock, md, flags); in bpf_tcp_sendmsg_do_redirect()
778 smap_release_sock(psock, sk); in bpf_tcp_sendmsg_do_redirect()
785 static inline void bpf_md_init(struct smap_psock *psock) in bpf_md_init() argument
787 if (!psock->apply_bytes) { in bpf_md_init()
788 psock->eval = __SK_NONE; in bpf_md_init()
789 if (psock->sk_redir) { in bpf_md_init()
790 sock_put(psock->sk_redir); in bpf_md_init()
791 psock->sk_redir = NULL; in bpf_md_init()
796 static void apply_bytes_dec(struct smap_psock *psock, int i) in apply_bytes_dec() argument
798 if (psock->apply_bytes) { in apply_bytes_dec()
799 if (psock->apply_bytes < i) in apply_bytes_dec()
800 psock->apply_bytes = 0; in apply_bytes_dec()
802 psock->apply_bytes -= i; in apply_bytes_dec()
806 static int bpf_exec_tx_verdict(struct smap_psock *psock, in bpf_exec_tx_verdict() argument
817 if (psock->eval == __SK_NONE) in bpf_exec_tx_verdict()
818 psock->eval = smap_do_tx_msg(sk, psock, m); in bpf_exec_tx_verdict()
821 m->cork_bytes > psock->sg_size && !enospc) { in bpf_exec_tx_verdict()
822 psock->cork_bytes = m->cork_bytes - psock->sg_size; in bpf_exec_tx_verdict()
823 if (!psock->cork) { in bpf_exec_tx_verdict()
824 psock->cork = kcalloc(1, in bpf_exec_tx_verdict()
828 if (!psock->cork) { in bpf_exec_tx_verdict()
833 memcpy(psock->cork, m, sizeof(*m)); in bpf_exec_tx_verdict()
837 send = psock->sg_size; in bpf_exec_tx_verdict()
838 if (psock->apply_bytes && psock->apply_bytes < send) in bpf_exec_tx_verdict()
839 send = psock->apply_bytes; in bpf_exec_tx_verdict()
841 switch (psock->eval) { in bpf_exec_tx_verdict()
849 apply_bytes_dec(psock, send); in bpf_exec_tx_verdict()
850 psock->sg_size -= send; in bpf_exec_tx_verdict()
853 redir = psock->sk_redir; in bpf_exec_tx_verdict()
854 apply_bytes_dec(psock, send); in bpf_exec_tx_verdict()
856 if (psock->cork) { in bpf_exec_tx_verdict()
858 psock->cork = NULL; in bpf_exec_tx_verdict()
870 psock->sg_size = 0; in bpf_exec_tx_verdict()
874 psock->sg_size -= send; in bpf_exec_tx_verdict()
879 psock->sg_size = 0; in bpf_exec_tx_verdict()
888 apply_bytes_dec(psock, send); in bpf_exec_tx_verdict()
890 psock->sg_size -= send; in bpf_exec_tx_verdict()
896 bpf_md_init(psock); in bpf_exec_tx_verdict()
931 struct smap_psock *psock; in bpf_tcp_recvmsg() local
940 psock = smap_psock_sk(sk); in bpf_tcp_recvmsg()
941 if (unlikely(!psock)) in bpf_tcp_recvmsg()
944 if (unlikely(!refcount_inc_not_zero(&psock->refcnt))) in bpf_tcp_recvmsg()
955 md = list_first_entry_or_null(&psock->ingress, in bpf_tcp_recvmsg()
975 smap_release_sock(psock, sk); in bpf_tcp_recvmsg()
1010 data = bpf_wait_data(sk, psock, flags, timeo, &err); in bpf_tcp_recvmsg()
1015 smap_release_sock(psock, sk); in bpf_tcp_recvmsg()
1027 smap_release_sock(psock, sk); in bpf_tcp_recvmsg()
1040 struct smap_psock *psock; in bpf_tcp_sendmsg() local
1051 psock = smap_psock_sk(sk); in bpf_tcp_sendmsg()
1052 if (unlikely(!psock)) { in bpf_tcp_sendmsg()
1062 if (!refcount_inc_not_zero(&psock->refcnt)) { in bpf_tcp_sendmsg()
1088 m = psock->cork_bytes ? psock->cork : &md; in bpf_tcp_sendmsg()
1106 psock->sg_size += copy; in bpf_tcp_sendmsg()
1121 if (psock->cork_bytes) { in bpf_tcp_sendmsg()
1122 if (copy > psock->cork_bytes) in bpf_tcp_sendmsg()
1123 psock->cork_bytes = 0; in bpf_tcp_sendmsg()
1125 psock->cork_bytes -= copy; in bpf_tcp_sendmsg()
1127 if (psock->cork_bytes && !enospc) in bpf_tcp_sendmsg()
1131 psock->eval = __SK_NONE; in bpf_tcp_sendmsg()
1132 psock->cork_bytes = 0; in bpf_tcp_sendmsg()
1135 err = bpf_exec_tx_verdict(psock, m, sk, &copied, flags); in bpf_tcp_sendmsg()
1144 if (m && m != psock->cork) in bpf_tcp_sendmsg()
1154 smap_release_sock(psock, sk); in bpf_tcp_sendmsg()
1163 struct smap_psock *psock; in bpf_tcp_sendpage() local
1168 psock = smap_psock_sk(sk); in bpf_tcp_sendpage()
1169 if (unlikely(!psock)) in bpf_tcp_sendpage()
1172 if (!refcount_inc_not_zero(&psock->refcnt)) in bpf_tcp_sendpage()
1178 if (psock->cork_bytes) { in bpf_tcp_sendpage()
1179 m = psock->cork; in bpf_tcp_sendpage()
1192 psock->sg_size += size; in bpf_tcp_sendpage()
1206 if (psock->cork_bytes) { in bpf_tcp_sendpage()
1207 if (size > psock->cork_bytes) in bpf_tcp_sendpage()
1208 psock->cork_bytes = 0; in bpf_tcp_sendpage()
1210 psock->cork_bytes -= size; in bpf_tcp_sendpage()
1212 if (psock->cork_bytes && !enospc) in bpf_tcp_sendpage()
1216 psock->eval = __SK_NONE; in bpf_tcp_sendpage()
1217 psock->cork_bytes = 0; in bpf_tcp_sendpage()
1220 err = bpf_exec_tx_verdict(psock, m, sk, &copied, flags); in bpf_tcp_sendpage()
1223 smap_release_sock(psock, sk); in bpf_tcp_sendpage()
1230 static void bpf_tcp_msg_add(struct smap_psock *psock, in bpf_tcp_msg_add() argument
1236 orig_tx_msg = xchg(&psock->bpf_tx_msg, tx_msg); in bpf_tcp_msg_add()
1251 static int smap_verdict_func(struct smap_psock *psock, struct sk_buff *skb) in smap_verdict_func() argument
1253 struct bpf_prog *prog = READ_ONCE(psock->bpf_verdict); in smap_verdict_func()
1265 skb->sk = psock->sock; in smap_verdict_func()
1278 static int smap_do_ingress(struct smap_psock *psock, struct sk_buff *skb) in smap_do_ingress() argument
1280 struct sock *sk = psock->sock; in smap_do_ingress()
1304 list_add_tail(&r->list, &psock->ingress); in smap_do_ingress()
1309 static void smap_do_verdict(struct smap_psock *psock, struct sk_buff *skb) in smap_do_verdict() argument
1316 rc = smap_verdict_func(psock, skb); in smap_do_verdict()
1352 static void smap_report_sk_error(struct smap_psock *psock, int err) in smap_report_sk_error() argument
1354 struct sock *sk = psock->sock; in smap_report_sk_error()
1363 struct smap_psock *psock; in smap_read_sock_strparser() local
1366 psock = container_of(strp, struct smap_psock, strp); in smap_read_sock_strparser()
1367 smap_do_verdict(psock, skb); in smap_read_sock_strparser()
1374 struct smap_psock *psock; in smap_data_ready() local
1377 psock = smap_psock_sk(sk); in smap_data_ready()
1378 if (likely(psock)) { in smap_data_ready()
1380 strp_data_ready(&psock->strp); in smap_data_ready()
1388 struct smap_psock *psock; in smap_tx_work() local
1392 psock = container_of(w, struct smap_psock, tx_work); in smap_tx_work()
1395 lock_sock(psock->sock); in smap_tx_work()
1396 if (psock->save_skb) { in smap_tx_work()
1397 skb = psock->save_skb; in smap_tx_work()
1398 rem = psock->save_rem; in smap_tx_work()
1399 off = psock->save_off; in smap_tx_work()
1400 psock->save_skb = NULL; in smap_tx_work()
1404 while ((skb = skb_dequeue(&psock->rxqueue))) { in smap_tx_work()
1412 if (likely(psock->sock->sk_socket)) { in smap_tx_work()
1414 n = smap_do_ingress(psock, skb); in smap_tx_work()
1416 n = skb_send_sock_locked(psock->sock, in smap_tx_work()
1425 psock->save_skb = skb; in smap_tx_work()
1426 psock->save_rem = rem; in smap_tx_work()
1427 psock->save_off = off; in smap_tx_work()
1431 smap_report_sk_error(psock, n ? -n : EPIPE); in smap_tx_work()
1432 clear_bit(SMAP_TX_RUNNING, &psock->state); in smap_tx_work()
1444 release_sock(psock->sock); in smap_tx_work()
1449 struct smap_psock *psock; in smap_write_space() local
1453 psock = smap_psock_sk(sk); in smap_write_space()
1454 if (likely(psock && test_bit(SMAP_TX_RUNNING, &psock->state))) in smap_write_space()
1455 schedule_work(&psock->tx_work); in smap_write_space()
1456 write_space = psock->save_write_space; in smap_write_space()
1461 static void smap_stop_sock(struct smap_psock *psock, struct sock *sk) in smap_stop_sock() argument
1463 if (!psock->strp_enabled) in smap_stop_sock()
1465 sk->sk_data_ready = psock->save_data_ready; in smap_stop_sock()
1466 sk->sk_write_space = psock->save_write_space; in smap_stop_sock()
1467 psock->save_data_ready = NULL; in smap_stop_sock()
1468 psock->save_write_space = NULL; in smap_stop_sock()
1469 strp_stop(&psock->strp); in smap_stop_sock()
1470 psock->strp_enabled = false; in smap_stop_sock()
1475 struct smap_psock *psock = container_of(rcu, in smap_destroy_psock() local
1484 schedule_work(&psock->gc_work); in smap_destroy_psock()
1492 static void smap_release_sock(struct smap_psock *psock, struct sock *sock) in smap_release_sock() argument
1494 if (refcount_dec_and_test(&psock->refcnt)) { in smap_release_sock()
1498 smap_stop_sock(psock, sock); in smap_release_sock()
1500 clear_bit(SMAP_TX_RUNNING, &psock->state); in smap_release_sock()
1502 call_rcu_sched(&psock->rcu, smap_destroy_psock); in smap_release_sock()
1509 struct smap_psock *psock; in smap_parse_func_strparser() local
1514 psock = container_of(strp, struct smap_psock, strp); in smap_parse_func_strparser()
1515 prog = READ_ONCE(psock->bpf_parse); in smap_parse_func_strparser()
1529 skb->sk = psock->sock; in smap_parse_func_strparser()
1542 static int smap_init_sock(struct smap_psock *psock, in smap_init_sock() argument
1551 return strp_init(&psock->strp, sk, &cb); in smap_init_sock()
1554 static void smap_init_progs(struct smap_psock *psock, in smap_init_progs() argument
1560 orig_parse = xchg(&psock->bpf_parse, parse); in smap_init_progs()
1561 orig_verdict = xchg(&psock->bpf_verdict, verdict); in smap_init_progs()
1569 static void smap_start_sock(struct smap_psock *psock, struct sock *sk) in smap_start_sock() argument
1573 psock->save_data_ready = sk->sk_data_ready; in smap_start_sock()
1574 psock->save_write_space = sk->sk_write_space; in smap_start_sock()
1577 psock->strp_enabled = true; in smap_start_sock()
1590 struct smap_psock *psock; in smap_gc_work() local
1592 psock = container_of(w, struct smap_psock, gc_work); in smap_gc_work()
1595 if (psock->strp_enabled) in smap_gc_work()
1596 strp_done(&psock->strp); in smap_gc_work()
1598 cancel_work_sync(&psock->tx_work); in smap_gc_work()
1599 __skb_queue_purge(&psock->rxqueue); in smap_gc_work()
1602 if (psock->bpf_parse) in smap_gc_work()
1603 bpf_prog_put(psock->bpf_parse); in smap_gc_work()
1604 if (psock->bpf_verdict) in smap_gc_work()
1605 bpf_prog_put(psock->bpf_verdict); in smap_gc_work()
1606 if (psock->bpf_tx_msg) in smap_gc_work()
1607 bpf_prog_put(psock->bpf_tx_msg); in smap_gc_work()
1609 if (psock->cork) { in smap_gc_work()
1610 free_start_sg(psock->sock, psock->cork, true); in smap_gc_work()
1611 kfree(psock->cork); in smap_gc_work()
1614 list_for_each_entry_safe(md, mtmp, &psock->ingress, list) { in smap_gc_work()
1616 free_start_sg(psock->sock, md, true); in smap_gc_work()
1620 list_for_each_entry_safe(e, tmp, &psock->maps, list) { in smap_gc_work()
1625 if (psock->sk_redir) in smap_gc_work()
1626 sock_put(psock->sk_redir); in smap_gc_work()
1628 sock_put(psock->sock); in smap_gc_work()
1629 kfree(psock); in smap_gc_work()
1634 struct smap_psock *psock; in smap_init_psock() local
1636 psock = kzalloc_node(sizeof(struct smap_psock), in smap_init_psock()
1639 if (!psock) in smap_init_psock()
1642 psock->eval = __SK_NONE; in smap_init_psock()
1643 psock->sock = sock; in smap_init_psock()
1644 skb_queue_head_init(&psock->rxqueue); in smap_init_psock()
1645 INIT_WORK(&psock->tx_work, smap_tx_work); in smap_init_psock()
1646 INIT_WORK(&psock->gc_work, smap_gc_work); in smap_init_psock()
1647 INIT_LIST_HEAD(&psock->maps); in smap_init_psock()
1648 INIT_LIST_HEAD(&psock->ingress); in smap_init_psock()
1649 refcount_set(&psock->refcnt, 1); in smap_init_psock()
1650 spin_lock_init(&psock->maps_lock); in smap_init_psock()
1652 rcu_assign_sk_user_data(sock, psock); in smap_init_psock()
1654 return psock; in smap_init_psock()
1708 static void smap_list_map_remove(struct smap_psock *psock, in smap_list_map_remove() argument
1713 spin_lock_bh(&psock->maps_lock); in smap_list_map_remove()
1714 list_for_each_entry_safe(e, tmp, &psock->maps, list) { in smap_list_map_remove()
1720 spin_unlock_bh(&psock->maps_lock); in smap_list_map_remove()
1723 static void smap_list_hash_remove(struct smap_psock *psock, in smap_list_hash_remove() argument
1728 spin_lock_bh(&psock->maps_lock); in smap_list_hash_remove()
1729 list_for_each_entry_safe(e, tmp, &psock->maps, list) { in smap_list_hash_remove()
1737 spin_unlock_bh(&psock->maps_lock); in smap_list_hash_remove()
1757 struct smap_psock *psock; in sock_map_free() local
1764 psock = smap_psock_sk(sock); in sock_map_free()
1770 if (likely(psock)) { in sock_map_free()
1771 smap_list_map_remove(psock, &stab->sock_map[i]); in sock_map_free()
1772 smap_release_sock(psock, sock); in sock_map_free()
1812 struct smap_psock *psock; in sock_map_delete_elem() local
1826 psock = smap_psock_sk(sock); in sock_map_delete_elem()
1827 if (!psock) in sock_map_delete_elem()
1829 if (psock->bpf_parse) { in sock_map_delete_elem()
1831 smap_stop_sock(psock, sock); in sock_map_delete_elem()
1834 smap_list_map_remove(psock, &stab->sock_map[k]); in sock_map_delete_elem()
1835 smap_release_sock(psock, sock); in sock_map_delete_elem()
1874 struct smap_psock *psock; in __sock_map_ctx_update_elem() local
1914 psock = smap_psock_sk(sock); in __sock_map_ctx_update_elem()
1922 if (psock) { in __sock_map_ctx_update_elem()
1927 if (READ_ONCE(psock->bpf_parse) && parse) { in __sock_map_ctx_update_elem()
1931 if (READ_ONCE(psock->bpf_tx_msg) && tx_msg) { in __sock_map_ctx_update_elem()
1935 if (!refcount_inc_not_zero(&psock->refcnt)) { in __sock_map_ctx_update_elem()
1940 psock = smap_init_psock(sock, map->numa_node); in __sock_map_ctx_update_elem()
1941 if (IS_ERR(psock)) { in __sock_map_ctx_update_elem()
1942 err = PTR_ERR(psock); in __sock_map_ctx_update_elem()
1946 set_bit(SMAP_TX_RUNNING, &psock->state); in __sock_map_ctx_update_elem()
1954 bpf_tcp_msg_add(psock, sock, tx_msg); in __sock_map_ctx_update_elem()
1961 if (parse && verdict && !psock->strp_enabled) { in __sock_map_ctx_update_elem()
1962 err = smap_init_sock(psock, sock); in __sock_map_ctx_update_elem()
1965 smap_init_progs(psock, verdict, parse); in __sock_map_ctx_update_elem()
1967 smap_start_sock(psock, sock); in __sock_map_ctx_update_elem()
1973 smap_release_sock(psock, sock); in __sock_map_ctx_update_elem()
1992 struct smap_psock *psock; in sock_map_ctx_update_elem() local
2010 psock = smap_psock_sk(sock); in sock_map_ctx_update_elem()
2024 spin_lock_bh(&psock->maps_lock); in sock_map_ctx_update_elem()
2025 list_add_tail(&e->list, &psock->maps); in sock_map_ctx_update_elem()
2026 spin_unlock_bh(&psock->maps_lock); in sock_map_ctx_update_elem()
2030 psock = smap_psock_sk(osock); in sock_map_ctx_update_elem()
2031 smap_list_map_remove(psock, &stab->sock_map[i]); in sock_map_ctx_update_elem()
2032 smap_release_sock(psock, osock); in sock_map_ctx_update_elem()
2037 smap_release_sock(psock, sock); in sock_map_ctx_update_elem()
2273 struct smap_psock *psock; in sock_hash_free() local
2276 psock = smap_psock_sk(sock); in sock_hash_free()
2282 if (likely(psock)) { in sock_hash_free()
2283 smap_list_hash_remove(psock, l); in sock_hash_free()
2284 smap_release_sock(psock, sock); in sock_hash_free()
2386 struct smap_psock *psock; in sock_hash_ctx_update_elem() local
2418 psock = smap_psock_sk(sock); in sock_hash_ctx_update_elem()
2438 spin_lock_bh(&psock->maps_lock); in sock_hash_ctx_update_elem()
2439 list_add_tail(&e->list, &psock->maps); in sock_hash_ctx_update_elem()
2440 spin_unlock_bh(&psock->maps_lock); in sock_hash_ctx_update_elem()
2447 psock = smap_psock_sk(l_old->sk); in sock_hash_ctx_update_elem()
2450 smap_list_hash_remove(psock, l_old); in sock_hash_ctx_update_elem()
2451 smap_release_sock(psock, l_old->sk); in sock_hash_ctx_update_elem()
2457 smap_release_sock(psock, sock); in sock_hash_ctx_update_elem()
2521 struct smap_psock *psock; in sock_hash_delete_elem() local
2524 psock = smap_psock_sk(sock); in sock_hash_delete_elem()
2530 if (likely(psock)) { in sock_hash_delete_elem()
2531 smap_list_hash_remove(psock, l); in sock_hash_delete_elem()
2532 smap_release_sock(psock, sock); in sock_hash_delete_elem()