* [PATCH] smb/client: use sock_create_kern() in generic_ip_connect()
@ 2025-05-28 3:15 chenxiaosong
2025-05-28 3:39 ` Steve French
0 siblings, 1 reply; 5+ messages in thread
From: chenxiaosong @ 2025-05-28 3:15 UTC (permalink / raw)
To: sfrench, pc, ronniesahlberg, sprasad, tom, bharathsm
Cc: linux-cifs, linux-kernel, ChenXiaoSong
From: ChenXiaoSong <chenxiaosong@kylinos.cn>
Change __sock_create() to sock_create_kern() for explicitness.
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
fs/smb/client/connect.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index 6bf04d9a5491..3275f2ff84cb 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -3350,8 +3350,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
struct net *net = cifs_net_ns(server);
struct sock *sk;
- rc = __sock_create(net, sfamily, SOCK_STREAM,
- IPPROTO_TCP, &server->ssocket, 1);
+ rc = sock_create_kern(net, sfamily, SOCK_STREAM, IPPROTO_TCP, &server->ssocket);
if (rc < 0) {
cifs_server_dbg(VFS, "Error %d creating socket\n", rc);
return rc;
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] smb/client: use sock_create_kern() in generic_ip_connect()
2025-05-28 3:15 [PATCH] smb/client: use sock_create_kern() in generic_ip_connect() chenxiaosong
@ 2025-05-28 3:39 ` Steve French
2025-05-28 4:09 ` ChenXiaoSong
0 siblings, 1 reply; 5+ messages in thread
From: Steve French @ 2025-05-28 3:39 UTC (permalink / raw)
To: chenxiaosong, Kuniyuki Iwashima
Cc: pc, ronniesahlberg, sprasad, tom, bharathsm, linux-cifs,
linux-kernel, ChenXiaoSong, David Laight, Wang Zhaolong,
Enzo Matsumiya
Weren't there issues brought up earlier with using sock_create_kern
due to network namespaces and refcounts?
On Tue, May 27, 2025 at 10:18 PM <chenxiaosong@chenxiaosong.com> wrote:
>
> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>
> Change __sock_create() to sock_create_kern() for explicitness.
>
> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
> ---
> fs/smb/client/connect.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
> index 6bf04d9a5491..3275f2ff84cb 100644
> --- a/fs/smb/client/connect.c
> +++ b/fs/smb/client/connect.c
> @@ -3350,8 +3350,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
> struct net *net = cifs_net_ns(server);
> struct sock *sk;
>
> - rc = __sock_create(net, sfamily, SOCK_STREAM,
> - IPPROTO_TCP, &server->ssocket, 1);
> + rc = sock_create_kern(net, sfamily, SOCK_STREAM, IPPROTO_TCP, &server->ssocket);
> if (rc < 0) {
> cifs_server_dbg(VFS, "Error %d creating socket\n", rc);
> return rc;
> --
> 2.34.1
>
>
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] smb/client: use sock_create_kern() in generic_ip_connect()
2025-05-28 3:39 ` Steve French
@ 2025-05-28 4:09 ` ChenXiaoSong
2025-05-28 7:26 ` David Laight
2025-05-30 3:10 ` Kuniyuki Iwashima
0 siblings, 2 replies; 5+ messages in thread
From: ChenXiaoSong @ 2025-05-28 4:09 UTC (permalink / raw)
To: Steve French, Kuniyuki Iwashima
Cc: pc, ronniesahlberg, sprasad, tom, bharathsm, linux-cifs,
linux-kernel, ChenXiaoSong, David Laight, Wang Zhaolong,
Enzo Matsumiya
This patch is simply a cleanup that wraps the original code for
explicitness, the last argument of __sock_create(..., 1) specifies that
the socket is created in kernel space.
在 2025/5/28 11:39, Steve French 写道:
> Weren't there issues brought up earlier with using sock_create_kern
> due to network namespaces and refcounts?
>
> On Tue, May 27, 2025 at 10:18 PM <chenxiaosong@chenxiaosong.com> wrote:
>>
>> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
>>
>> Change __sock_create() to sock_create_kern() for explicitness.
>>
>> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
>> ---
>> fs/smb/client/connect.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
>> index 6bf04d9a5491..3275f2ff84cb 100644
>> --- a/fs/smb/client/connect.c
>> +++ b/fs/smb/client/connect.c
>> @@ -3350,8 +3350,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
>> struct net *net = cifs_net_ns(server);
>> struct sock *sk;
>>
>> - rc = __sock_create(net, sfamily, SOCK_STREAM,
>> - IPPROTO_TCP, &server->ssocket, 1);
>> + rc = sock_create_kern(net, sfamily, SOCK_STREAM, IPPROTO_TCP, &server->ssocket);
>> if (rc < 0) {
>> cifs_server_dbg(VFS, "Error %d creating socket\n", rc);
>> return rc;
>> --
>> 2.34.1
>>
>>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] smb/client: use sock_create_kern() in generic_ip_connect()
2025-05-28 4:09 ` ChenXiaoSong
@ 2025-05-28 7:26 ` David Laight
2025-05-30 3:10 ` Kuniyuki Iwashima
1 sibling, 0 replies; 5+ messages in thread
From: David Laight @ 2025-05-28 7:26 UTC (permalink / raw)
To: ChenXiaoSong
Cc: Steve French, Kuniyuki Iwashima, pc, ronniesahlberg, sprasad, tom,
bharathsm, linux-cifs, linux-kernel, ChenXiaoSong, Wang Zhaolong,
Enzo Matsumiya
On Wed, 28 May 2025 12:09:01 +0800
ChenXiaoSong <chenxiaosong@chenxiaosong.com> wrote:
> 在 2025/5/28 11:39, Steve French 写道:
> > Weren't there issues brought up earlier with using sock_create_kern
> > due to network namespaces and refcounts?
> This patch is simply a cleanup that wraps the original code for
> explicitness, the last argument of __sock_create(..., 1) specifies that
> the socket is created in kernel space.
Except that 'kernel space' doesn't really mean anything.
IIRC it does two separate things:
1) Skips some 'permission' checks on the current process.
2) Doesn't 'hold' the network namespace.
The extra permission checks might be relevant even if the socket is
only indirectly accessible from a process.
But code like smb doesn't want the extra checks but does need the
namespace held (or it has to go through 'hoops' to request a callback
when the namespace is removed and delete the connection from the
callback).
Maybe there should be a 'kernel_socket()' (cf kernel_sendmsg()) that
code like smb should use.
David
>
> >
> > On Tue, May 27, 2025 at 10:18 PM <chenxiaosong@chenxiaosong.com> wrote:
> >>
> >> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
> >>
> >> Change __sock_create() to sock_create_kern() for explicitness.
> >>
> >> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
> >> ---
> >> fs/smb/client/connect.c | 3 +--
> >> 1 file changed, 1 insertion(+), 2 deletions(-)
> >>
> >> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
> >> index 6bf04d9a5491..3275f2ff84cb 100644
> >> --- a/fs/smb/client/connect.c
> >> +++ b/fs/smb/client/connect.c
> >> @@ -3350,8 +3350,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
> >> struct net *net = cifs_net_ns(server);
> >> struct sock *sk;
> >>
> >> - rc = __sock_create(net, sfamily, SOCK_STREAM,
> >> - IPPROTO_TCP, &server->ssocket, 1);
> >> + rc = sock_create_kern(net, sfamily, SOCK_STREAM, IPPROTO_TCP, &server->ssocket);
> >> if (rc < 0) {
> >> cifs_server_dbg(VFS, "Error %d creating socket\n", rc);
> >> return rc;
> >> --
> >> 2.34.1
> >>
> >>
> >
> >
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] smb/client: use sock_create_kern() in generic_ip_connect()
2025-05-28 4:09 ` ChenXiaoSong
2025-05-28 7:26 ` David Laight
@ 2025-05-30 3:10 ` Kuniyuki Iwashima
1 sibling, 0 replies; 5+ messages in thread
From: Kuniyuki Iwashima @ 2025-05-30 3:10 UTC (permalink / raw)
To: chenxiaosong
Cc: bharathsm, chenxiaosong, david.laight.linux, ematsumiya, kuniyu,
linux-cifs, linux-kernel, pc, ronniesahlberg, smfrench, sprasad,
tom, wangzhaolong1
Thanks for CCing me, Steve.
From: ChenXiaoSong <chenxiaosong@chenxiaosong.com>
Date: Wed, 28 May 2025 12:09:01 +0800
> This patch is simply a cleanup that wraps the original code for
> explicitness, the last argument of __sock_create(..., 1) specifies that
> the socket is created in kernel space.
Not sure how you came up with this patch, maybe coincidence, but
I'm trying to clean these up at once on the netdev side, so it would
be appreciated if this is kept as is to avoid unnecessary conflicts.
https://lore.kernel.org/netdev/20250523182128.59346-2-kuniyu@amazon.com/
>
> 在 2025/5/28 11:39, Steve French 写道:
> > Weren't there issues brought up earlier with using sock_create_kern
> > due to network namespaces and refcounts?
> >
> > On Tue, May 27, 2025 at 10:18 PM <chenxiaosong@chenxiaosong.com> wrote:
> >>
> >> From: ChenXiaoSong <chenxiaosong@kylinos.cn>
> >>
> >> Change __sock_create() to sock_create_kern() for explicitness.
> >>
> >> Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
> >> ---
> >> fs/smb/client/connect.c | 3 +--
> >> 1 file changed, 1 insertion(+), 2 deletions(-)
> >>
> >> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
> >> index 6bf04d9a5491..3275f2ff84cb 100644
> >> --- a/fs/smb/client/connect.c
> >> +++ b/fs/smb/client/connect.c
> >> @@ -3350,8 +3350,7 @@ generic_ip_connect(struct TCP_Server_Info *server)
> >> struct net *net = cifs_net_ns(server);
> >> struct sock *sk;
> >>
> >> - rc = __sock_create(net, sfamily, SOCK_STREAM,
> >> - IPPROTO_TCP, &server->ssocket, 1);
> >> + rc = sock_create_kern(net, sfamily, SOCK_STREAM, IPPROTO_TCP, &server->ssocket);
> >> if (rc < 0) {
> >> cifs_server_dbg(VFS, "Error %d creating socket\n", rc);
> >> return rc;
> >> --
> >> 2.34.1
> >>
> >>
> >
> >
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-05-30 3:10 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-28 3:15 [PATCH] smb/client: use sock_create_kern() in generic_ip_connect() chenxiaosong
2025-05-28 3:39 ` Steve French
2025-05-28 4:09 ` ChenXiaoSong
2025-05-28 7:26 ` David Laight
2025-05-30 3:10 ` Kuniyuki Iwashima
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).