From: Greg Kroah-Hartman Date: Sun, 23 Apr 2023 13:33:46 +0000 (+0200) Subject: 6.1-stable patches X-Git-Tag: v4.14.314~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe6b98ef92b34be12844aac7104cff440ac5f721;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: inet6-remove-inet6_destroy_sock-in-sk-sk_prot-destroy.patch --- diff --git a/queue-6.1/inet6-remove-inet6_destroy_sock-in-sk-sk_prot-destroy.patch b/queue-6.1/inet6-remove-inet6_destroy_sock-in-sk-sk_prot-destroy.patch new file mode 100644 index 00000000000..1dff4592270 --- /dev/null +++ b/queue-6.1/inet6-remove-inet6_destroy_sock-in-sk-sk_prot-destroy.patch @@ -0,0 +1,136 @@ +From b5fc29233d28be7a3322848ebe73ac327559cdb9 Mon Sep 17 00:00:00 2001 +From: Kuniyuki Iwashima +Date: Wed, 19 Oct 2022 15:35:59 -0700 +Subject: inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy(). + +From: Kuniyuki Iwashima + +commit b5fc29233d28be7a3322848ebe73ac327559cdb9 upstream. + +After commit d38afeec26ed ("tcp/udp: Call inet6_destroy_sock() +in IPv6 sk->sk_destruct()."), we call inet6_destroy_sock() in +sk->sk_destruct() by setting inet6_sock_destruct() to it to make +sure we do not leak inet6-specific resources. + +Now we can remove unnecessary inet6_destroy_sock() calls in +sk->sk_prot->destroy(). + +DCCP and SCTP have their own sk->sk_destruct() function, so we +change them separately in the following patches. + +Signed-off-by: Kuniyuki Iwashima +Reviewed-by: Matthieu Baerts +Signed-off-by: David S. Miller +Signed-off-by: Ziyang Xuan +Signed-off-by: Greg Kroah-Hartman +--- + net/ipv6/ping.c | 6 ------ + net/ipv6/raw.c | 2 -- + net/ipv6/tcp_ipv6.c | 8 +------- + net/ipv6/udp.c | 2 -- + net/l2tp/l2tp_ip6.c | 2 -- + net/mptcp/protocol.c | 7 ------- + 6 files changed, 1 insertion(+), 26 deletions(-) + +--- a/net/ipv6/ping.c ++++ b/net/ipv6/ping.c +@@ -23,11 +23,6 @@ + #include + #include + +-static void ping_v6_destroy(struct sock *sk) +-{ +- inet6_destroy_sock(sk); +-} +- + /* Compatibility glue so we can support IPv6 when it's compiled as a module */ + static int dummy_ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, + int *addr_len) +@@ -205,7 +200,6 @@ struct proto pingv6_prot = { + .owner = THIS_MODULE, + .init = ping_init_sock, + .close = ping_close, +- .destroy = ping_v6_destroy, + .pre_connect = ping_v6_pre_connect, + .connect = ip6_datagram_connect_v6_only, + .disconnect = __udp_disconnect, +--- a/net/ipv6/raw.c ++++ b/net/ipv6/raw.c +@@ -1175,8 +1175,6 @@ static void raw6_destroy(struct sock *sk + lock_sock(sk); + ip6_flush_pending_frames(sk); + release_sock(sk); +- +- inet6_destroy_sock(sk); + } + + static int rawv6_init_sk(struct sock *sk) +--- a/net/ipv6/tcp_ipv6.c ++++ b/net/ipv6/tcp_ipv6.c +@@ -1951,12 +1951,6 @@ static int tcp_v6_init_sock(struct sock + return 0; + } + +-static void tcp_v6_destroy_sock(struct sock *sk) +-{ +- tcp_v4_destroy_sock(sk); +- inet6_destroy_sock(sk); +-} +- + #ifdef CONFIG_PROC_FS + /* Proc filesystem TCPv6 sock list dumping. */ + static void get_openreq6(struct seq_file *seq, +@@ -2149,7 +2143,7 @@ struct proto tcpv6_prot = { + .accept = inet_csk_accept, + .ioctl = tcp_ioctl, + .init = tcp_v6_init_sock, +- .destroy = tcp_v6_destroy_sock, ++ .destroy = tcp_v4_destroy_sock, + .shutdown = tcp_shutdown, + .setsockopt = tcp_setsockopt, + .getsockopt = tcp_getsockopt, +--- a/net/ipv6/udp.c ++++ b/net/ipv6/udp.c +@@ -1668,8 +1668,6 @@ void udpv6_destroy_sock(struct sock *sk) + udp_encap_disable(); + } + } +- +- inet6_destroy_sock(sk); + } + + /* +--- a/net/l2tp/l2tp_ip6.c ++++ b/net/l2tp/l2tp_ip6.c +@@ -257,8 +257,6 @@ static void l2tp_ip6_destroy_sock(struct + + if (tunnel) + l2tp_tunnel_delete(tunnel); +- +- inet6_destroy_sock(sk); + } + + static int l2tp_ip6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) +--- a/net/mptcp/protocol.c ++++ b/net/mptcp/protocol.c +@@ -3939,12 +3939,6 @@ static const struct proto_ops mptcp_v6_s + + static struct proto mptcp_v6_prot; + +-static void mptcp_v6_destroy(struct sock *sk) +-{ +- mptcp_destroy(sk); +- inet6_destroy_sock(sk); +-} +- + static struct inet_protosw mptcp_v6_protosw = { + .type = SOCK_STREAM, + .protocol = IPPROTO_MPTCP, +@@ -3960,7 +3954,6 @@ int __init mptcp_proto_v6_init(void) + mptcp_v6_prot = mptcp_prot; + strcpy(mptcp_v6_prot.name, "MPTCPv6"); + mptcp_v6_prot.slab = NULL; +- mptcp_v6_prot.destroy = mptcp_v6_destroy; + mptcp_v6_prot.obj_size = sizeof(struct mptcp6_sock); + + err = proto_register(&mptcp_v6_prot, 1); diff --git a/queue-6.1/series b/queue-6.1/series index 71a3fa53c8f..f9e9570b21e 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -84,3 +84,4 @@ kvm-arm64-fix-buffer-overflow-in-kvm_arm_set_fw_reg.patch mips-define-runtime_discard_exit-in-ld-script.patch fuse-always-revalidate-rename-target-dentry.patch purgatory-fix-disabling-debug-info.patch +inet6-remove-inet6_destroy_sock-in-sk-sk_prot-destroy.patch