From nobody Thu Nov 27 12:35:30 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A035A221299 for ; Fri, 7 Nov 2025 21:56:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552564; cv=none; b=uSMBijMc3YPXowGj+A8kcToINj/UQDqlEObN2spFFD4fP+uJLwccdWTVjwnqAVv8FJIXDR1uaCeE1N3Yj4zPl/5wWrfMeBljgeBgcWG/hpld2X+rhpM2IvpQcqOmqUsYQAp9+vlBtNtmHtcWxE306jKHg4EA4BagknZLhUAXhhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552564; c=relaxed/simple; bh=X9qIFp/0P9U8zCZu7DAonAkYdL4qMViQLXtbS4w6piw=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:content-type; b=UCHxm8T2wWcW4dWtxx08Mz+oBkGDbPGOCVzQs8LE1tGtNChONxzfJc1r7zVyl3oBRAlclPlVNHl8ZygPIR5AJEHFNjLh4qdKWgFIHo1xySs7xpAVtnVx9Yd7I5CLjHshN5meYFemeo3stb2q3728IgEKVnDNV4bQcrGZn+lhibk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=gN/pnlj5; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="gN/pnlj5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762552560; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pm3THznvJQg2GNvO7XB2TW1MWmtCQrZpgsymtOhgt0w=; b=gN/pnlj5BvHtfYnTimqUZ6cYa9+JQJatIj+OZFxcCISpYfACKhaxnrUcLyrUqJStyOBNPU b4vB2bfPuS2XrOQsXLYcevvyQfad/qmbF5iR+vBU1Oe7HEBMJAMdCQkuKyHYpbF50ZcP+L TktnjhxqRhsYfdRm2oqlEFaYA0yc690= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-115-4LaUAhUVMliftKTJq3gvSQ-1; Fri, 07 Nov 2025 16:55:59 -0500 X-MC-Unique: 4LaUAhUVMliftKTJq3gvSQ-1 X-Mimecast-MFC-AGG-ID: 4LaUAhUVMliftKTJq3gvSQ_1762552558 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A06EF1800359 for ; Fri, 7 Nov 2025 21:55:58 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.44.32.157]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BE49819560A7 for ; Fri, 7 Nov 2025 21:55:57 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net 1/3] net: factor-out _sk_charge() helper Date: Fri, 7 Nov 2025 22:55:45 +0100 Message-ID: <063e2bc8e98ce050286eb4309bf4bd47716cc3f8.1762551942.git.pabeni@redhat.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: sW7F4HQpnaQ8XhuwXHpDA1rZqbbANJekZQrKNjly9QQ_1762552558 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; x-default="true" Move out of __inet_accept() the code dealing charging newly accepted socket to memcg. MPTCP will soon use it to on a per subflow basis, in different contexts. No functional changes intended. Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) --- include/net/sock.h | 2 ++ net/core/sock.c | 18 ++++++++++++++++++ net/ipv4/af_inet.c | 17 +---------------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index a5f36ea9d46f..38d48cfe0741 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1631,6 +1631,8 @@ static inline void sk_mem_uncharge(struct sock *sk, i= nt size) sk_mem_reclaim(sk); } =20 +void __sk_charge(struct sock *sk, gfp_t gfp); + #if IS_ENABLED(CONFIG_PROVE_LOCKING) && IS_ENABLED(CONFIG_MODULES) static inline void sk_owner_set(struct sock *sk, struct module *owner) { diff --git a/net/core/sock.c b/net/core/sock.c index 3b74fc71f51c..b26a6cdc9bcd 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -3448,6 +3448,24 @@ void __sk_mem_reclaim(struct sock *sk, int amount) } EXPORT_SYMBOL(__sk_mem_reclaim); =20 +void __sk_charge(struct sock *sk, gfp_t gfp) +{ + int amt; + + gfp |=3D __GFP_NOFAIL; + if (mem_cgroup_from_sk(sk)) { + /* The socket has not been accepted yet, no need + * to look at newsk->sk_wmem_queued. + */ + amt =3D sk_mem_pages(sk->sk_forward_alloc + + atomic_read(&sk->sk_rmem_alloc)); + if (amt) + mem_cgroup_sk_charge(sk, amt, gfp); + } + + kmem_cache_charge(sk, gfp); +} + int sk_set_peek_off(struct sock *sk, int val) { WRITE_ONCE(sk->sk_peek_off, val); diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index a31b94ce8968..08d811f11896 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -756,23 +756,8 @@ EXPORT_SYMBOL(inet_stream_connect); void __inet_accept(struct socket *sock, struct socket *newsock, struct soc= k *newsk) { if (mem_cgroup_sockets_enabled) { - gfp_t gfp =3D GFP_KERNEL | __GFP_NOFAIL; - mem_cgroup_sk_alloc(newsk); - - if (mem_cgroup_from_sk(newsk)) { - int amt; - - /* The socket has not been accepted yet, no need - * to look at newsk->sk_wmem_queued. - */ - amt =3D sk_mem_pages(newsk->sk_forward_alloc + - atomic_read(&newsk->sk_rmem_alloc)); - if (amt) - mem_cgroup_sk_charge(newsk, amt, gfp); - } - - kmem_cache_charge(newsk, gfp); + __sk_charge(newsk, GFP_KERNEL); } =20 sock_rps_record_flow(newsk); --=20 2.51.0 From nobody Thu Nov 27 12:35:30 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2B0030F920 for ; Fri, 7 Nov 2025 21:56:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552565; cv=none; b=VftGr1us652THY5IgykiN1EshJgMtgsGA0Y5GOj1rjUx6/5nIlRs4OKkl0nW8uorfXDUDQnbL5UJc+4kCGtUDBHtXzjTh8NAbKnEkcCdr3c8igi+W0pdPA7V371XIqhJApaXrHfsJ2pYi4N0gBwRbwroBAwUd/qTL8x5TzribYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552565; c=relaxed/simple; bh=hhbN9q4izFhFofHuFoQK1VaiAWne6mqpGTQt3izVZM0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:content-type; b=KWqCnbsAvyCjhCLLWQ/fnc8W9wElQ1PE9xk4UOmithL7DCWWth6G/03B4cHIMvg8+WF+72KxfaVPlsQ1n81Gfm613Nb1SLdLmNVFX81Yj1Hr16xTnIxZMxC4VzwURq7KPM1+ffm/QbDt+WhbTRLY/7axuGohK3wU3/89wDWH1OI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=U3EJp5qZ; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="U3EJp5qZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762552562; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=silAlDuEfYZxesie57Qu6zvXqH0ebrjGlUNyt9EJ04Y=; b=U3EJp5qZg903NJ0PHPWybmppxXog+w7DwhTyOt2MC0VkOqU7nUuXFN//zodO1OdUWaxqHf brI0ac4RffyXnLM9QfShSGP1APB39Su6oEAXE0rYq790NzvvEdOaAWMiFgN01qZawiD+Wq nAhnVnr49CrcjwpM7YoYoNJtk+1t3Ek= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-437-RSqPa25fN9yc5D6deqHYyg-1; Fri, 07 Nov 2025 16:56:01 -0500 X-MC-Unique: RSqPa25fN9yc5D6deqHYyg-1 X-Mimecast-MFC-AGG-ID: RSqPa25fN9yc5D6deqHYyg_1762552560 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B14CD180034A for ; Fri, 7 Nov 2025 21:56:00 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.44.32.157]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 476AC19560A7 for ; Fri, 7 Nov 2025 21:55:58 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net 2/3] mptcp: factor-out cgroup data inherit helper Date: Fri, 7 Nov 2025 22:55:46 +0100 Message-ID: <60403f2c512fa05217c72b2d0d840bad3f60d402.1762551942.git.pabeni@redhat.com> In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: FMrSBznNmTGBbl5Gt_va5O2h-kk0Fh1sRmWx1Fg4xDM_1762552560 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; x-default="true" MPTCP will soon need the same functionality for passive sockets, factor them out in a common helper. No functional change intended. Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.h | 2 ++ net/mptcp/subflow.c | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 051f21b06d33..300ac7030958 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -755,6 +755,8 @@ mptcp_subflow_delegated_next(struct mptcp_delegated_act= ion *delegated) return ret; } =20 +void __mptcp_inherit_cgrp_data(struct sock *sk, struct sock *ssk); + int mptcp_is_enabled(const struct net *net); unsigned int mptcp_get_add_addr_timeout(const struct net *net); int mptcp_is_checksum_enabled(const struct net *net); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 60f100b2a0c9..599a21d92590 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1721,21 +1721,25 @@ int __mptcp_subflow_connect(struct sock *sk, const = struct mptcp_pm_local *local, return err; } =20 -static void mptcp_attach_cgroup(struct sock *parent, struct sock *child) +void __mptcp_inherit_cgrp_data(struct sock *sk, struct sock *ssk) { #ifdef CONFIG_SOCK_CGROUP_DATA - struct sock_cgroup_data *parent_skcd =3D &parent->sk_cgrp_data, - *child_skcd =3D &child->sk_cgrp_data; + struct sock_cgroup_data *sk_cd =3D &sk->sk_cgrp_data, + *ssk_cd =3D &ssk->sk_cgrp_data; =20 /* only the additional subflows created by kworkers have to be modified */ - if (cgroup_id(sock_cgroup_ptr(parent_skcd)) !=3D - cgroup_id(sock_cgroup_ptr(child_skcd))) { - cgroup_sk_free(child_skcd); - *child_skcd =3D *parent_skcd; - cgroup_sk_clone(child_skcd); + if (cgroup_id(sock_cgroup_ptr(sk_cd)) !=3D + cgroup_id(sock_cgroup_ptr(ssk_cd))) { + cgroup_sk_free(ssk_cd); + *ssk_cd =3D *sk_cd; + cgroup_sk_clone(sk_cd); } #endif /* CONFIG_SOCK_CGROUP_DATA */ +} =20 +static void mptcp_attach_cgroup(struct sock *parent, struct sock *child) +{ + __mptcp_inherit_cgrp_data(parent, child); if (mem_cgroup_sockets_enabled) mem_cgroup_sk_inherit(parent, child); } --=20 2.51.0 From nobody Thu Nov 27 12:35:30 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A91830F7FE for ; Fri, 7 Nov 2025 21:56:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552567; cv=none; b=UXJXZTHzM/kHOLzP+26l7vYyPs6ocjOEi1q01i7XmjABNNSXs/2foa/yM2+jQwILuB8e+xLBUucPG1Q84QPKzuY9x6G8YsSQoaRaELGcJIpKYJHV9Eshfq5zFfMampdWXgAhbYkSeRLwjFGekNMG/IMQzW+4ZGgzLeXQmXbAbLc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762552567; c=relaxed/simple; bh=1C/kKz/uV+sdUPonXIGCW9FKDrPQwiLyIoZiNC6Cn+k=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:content-type; b=iK+pYx+YstczBOw5fqZP9vCkv7opnPzd4XXGCXq4m0046nbIDasyUS29fFZ8XoA07pC8lK4QpWijm6F5Ve8zRnMIbMMFkwhbV2YJIzoR0BDsWecr9rBVJv1PlCxQ/EqtMiVhdt6Gpd4BRZW2kzolEqBhBHTnGkQKzAXmwH5Mzkw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=YSjhnhGs; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="YSjhnhGs" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762552565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UEjlN43R/ES2J9/+tGFkSuZt6aRiFLz9EBRnTqRiNu4=; b=YSjhnhGsj444qPsEkyO6G15ZYqZggXnrT39smuHVBfbCSRtBXR852IO8y3rC/zLXaRQqcZ bJWD/yI9wurZ7CEZgxSc2Ng5pX5MEyd8u6xXlCe53TkGb9sEDsu1XLcvpEYH+HaBm4QZU1 BE1FBZ6JXY8u6OdPklO8ZU55t43tjBY= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-TUrSo7AeMS6j4OyusHRMLg-1; Fri, 07 Nov 2025 16:56:02 -0500 X-MC-Unique: TUrSo7AeMS6j4OyusHRMLg-1 X-Mimecast-MFC-AGG-ID: TUrSo7AeMS6j4OyusHRMLg_1762552561 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 9137E180047F for ; Fri, 7 Nov 2025 21:56:01 +0000 (UTC) Received: from gerbillo.redhat.com (unknown [10.44.32.157]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id ACFAC19560B2 for ; Fri, 7 Nov 2025 21:56:00 +0000 (UTC) From: Paolo Abeni To: mptcp@lists.linux.dev Subject: [PATCH mptcp-net 3/3] mptcp: fix memcg accounting for passive sockets Date: Fri, 7 Nov 2025 22:55:47 +0100 Message-ID: In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: xtZs33RpI3I9ZuFqAtXweM_KB4sePM_RDF6mCa-MpzM_1762552561 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; x-default="true" The passive sockets never got proper memcg accounting: the msk socket is associated with the memcg at accept time, but the passive subflows never got it right. At accept time, traverse the subflows list and associate each of them with the msk memcg, and try to do the same at join completion time, if the msk has been already accepted. Fixes: cf7da0d66cc1 ("mptcp: Create SUBFLOW socket for incoming connections= ") Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/298 Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/597 Signed-off-by: Paolo Abeni Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/protocol.c | 36 ++++++++++++++++++++++++++---------- net/mptcp/protocol.h | 1 + net/mptcp/subflow.c | 10 ++++++++++ 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 34e6bc731085..5e9325c7ea9c 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -959,6 +959,8 @@ static bool __mptcp_finish_join(struct mptcp_sock *msk,= struct sock *ssk) mptcp_subflow_ctx(ssk)->subflow_id =3D msk->subflow_id++; mptcp_sockopt_sync_locked(msk, ssk); mptcp_stop_tout_timer(sk); + __mptcp_inherit_cgrp_data(sk, ssk); + __mptcp_inherit_memcg(sk, ssk, GFP_ATOMIC); __mptcp_propagate_sndbuf(sk, ssk); __mptcp_propagate_rcvspace(sk, ssk); return true; @@ -4076,6 +4078,29 @@ static int mptcp_listen(struct socket *sock, int bac= klog) return err; } =20 +static void mptcp_graph_subflows(struct sock *sk) +{ + struct mptcp_subflow_context *subflow; + struct mptcp_sock *msk =3D mptcp_sk(sk); + + mptcp_for_each_subflow(msk, subflow) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + bool slow; + + slow =3D lock_sock_fast(ssk); + + /* set ssk->sk_socket of accept()ed flows to mptcp socket. + * This is needed so NOSPACE flag can be set from tcp stack. + */ + if (!ssk->sk_socket) + mptcp_sock_graft(ssk, sk->sk_socket); + + __mptcp_inherit_cgrp_data(sk, ssk); + __mptcp_inherit_memcg(sk, ssk, GFP_KERNEL); + unlock_sock_fast(ssk, slow); + } +} + static int mptcp_stream_accept(struct socket *sock, struct socket *newsock, struct proto_accept_arg *arg) { @@ -4123,16 +4148,7 @@ static int mptcp_stream_accept(struct socket *sock, = struct socket *newsock, msk =3D mptcp_sk(newsk); msk->in_accept_queue =3D 0; =20 - /* set ssk->sk_socket of accept()ed flows to mptcp socket. - * This is needed so NOSPACE flag can be set from tcp stack. - */ - mptcp_for_each_subflow(msk, subflow) { - struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); - - if (!ssk->sk_socket) - mptcp_sock_graft(ssk, newsock); - } - + mptcp_graph_subflows(newsk); mptcp_rps_record_subflows(msk); =20 /* Do late cleanup for the first subflow as necessary. Also diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 300ac7030958..60bfe50530dc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -755,6 +755,7 @@ mptcp_subflow_delegated_next(struct mptcp_delegated_act= ion *delegated) return ret; } =20 +void __mptcp_inherit_memcg(struct sock *sk, struct sock *ssk, gfp_t gfp); void __mptcp_inherit_cgrp_data(struct sock *sk, struct sock *ssk); =20 int mptcp_is_enabled(const struct net *net); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 599a21d92590..39bf69e73975 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1721,6 +1721,16 @@ int __mptcp_subflow_connect(struct sock *sk, const s= truct mptcp_pm_local *local, return err; } =20 +void __mptcp_inherit_memcg(struct sock *sk, struct sock *ssk, gfp_t gfp) +{ + /* Only if the msk has been accepted already (and not orphaned).*/ + if (!mem_cgroup_sockets_enabled || !sk->sk_socket) + return; + + mem_cgroup_sk_inherit(sk, ssk); + __sk_charge(ssk, gfp); +} + void __mptcp_inherit_cgrp_data(struct sock *sk, struct sock *ssk) { #ifdef CONFIG_SOCK_CGROUP_DATA --=20 2.51.0