* [PATCH net] mptcp: set correct vfs info for subflows
@ 2020-05-07 16:53 Paolo Abeni
2020-05-08 1:16 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Paolo Abeni @ 2020-05-07 16:53 UTC (permalink / raw)
To: netdev; +Cc: Mat Martineau, David S. Miller, Jakub Kicinski, mptcp
When a subflow is created via mptcp_subflow_create_socket(),
a new 'struct socket' is allocated, with a new i_ino value.
When inspecting TCP sockets via the procfs and or the diag
interface, the above ones are not related to the process owning
the MPTCP master socket, even if they are a logical part of it
('ss -p' shows an empty process field)
Additionally, subflows created by the path manager get
the uid/gid from the running workqueue.
Subflows are part of the owning MPTCP master socket, let's
adjust the vfs info to reflect this.
After this patch, 'ss' correctly displays subflows as belonging
to the msk socket creator.
Fixes: 2303f994b3e1 ("mptcp: Associate MPTCP context with TCP socket")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
net/mptcp/subflow.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index 67a4e35d4838..4931a29a6f08 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -1012,6 +1012,16 @@ int mptcp_subflow_create_socket(struct sock *sk, struct socket **new_sock)
if (err)
return err;
+ /* the newly created socket really belongs to the owning MPTCP master
+ * socket, even if for additional subflows the allocation is performed
+ * by a kernel workqueue. Adjust inode references, so that the
+ * procfs/diag interaces really show this one belonging to the correct
+ * user.
+ */
+ SOCK_INODE(sf)->i_ino = SOCK_INODE(sk->sk_socket)->i_ino;
+ SOCK_INODE(sf)->i_uid = SOCK_INODE(sk->sk_socket)->i_uid;
+ SOCK_INODE(sf)->i_gid = SOCK_INODE(sk->sk_socket)->i_gid;
+
subflow = mptcp_subflow_ctx(sf->sk);
pr_debug("subflow=%p", subflow);
--
2.21.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net] mptcp: set correct vfs info for subflows
2020-05-07 16:53 [PATCH net] mptcp: set correct vfs info for subflows Paolo Abeni
@ 2020-05-08 1:16 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2020-05-08 1:16 UTC (permalink / raw)
To: pabeni; +Cc: netdev, mathew.j.martineau, kuba, mptcp
From: Paolo Abeni <pabeni@redhat.com>
Date: Thu, 7 May 2020 18:53:24 +0200
> When a subflow is created via mptcp_subflow_create_socket(),
> a new 'struct socket' is allocated, with a new i_ino value.
>
> When inspecting TCP sockets via the procfs and or the diag
> interface, the above ones are not related to the process owning
> the MPTCP master socket, even if they are a logical part of it
> ('ss -p' shows an empty process field)
>
> Additionally, subflows created by the path manager get
> the uid/gid from the running workqueue.
>
> Subflows are part of the owning MPTCP master socket, let's
> adjust the vfs info to reflect this.
>
> After this patch, 'ss' correctly displays subflows as belonging
> to the msk socket creator.
>
> Fixes: 2303f994b3e1 ("mptcp: Associate MPTCP context with TCP socket")
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Applied and queued up for -stable, thanks.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-05-08 1:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-07 16:53 [PATCH net] mptcp: set correct vfs info for subflows Paolo Abeni
2020-05-08 1:16 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).