Re: [PATCH] nsfs: fix wrong error code returned for pidns ioctls
From: Zhihao Cheng
Date: Thu May 07 2026 - 07:29:48 EST
在 2026/5/7 19:14, Zhihao Cheng 写道:
When executing NS_GET_PID_FROM_PIDNS (or similar pidns ioctls), if theIgnore this patch, see v2. https://lore.kernel.org/linux-fsdevel/20260507112301.1042757-1-chengzhihao1@xxxxxxxxxx/T/#u>
target task cannot be found in the corresponding pid_ns, the error code
should be ESRCH instead of ENOTTY.
This bug was introduced when the extensible ioctl handling was added.
Without proper return, ret would be overwritten by the default case in
the extensible ioctl switch statement.
Fixes: a1d220d9dafa8 ("nsfs: iterate through mount namespaces")
Signed-off-by: Zhihao Cheng <chengzhihao1@xxxxxxxxxx>
---
fs/nfs/nfs4state.c | 1 +
fs/nsfs.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 305a772e5497..5044bb4c870f 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -2039,6 +2039,7 @@ static int nfs4_purge_lease(struct nfs_client *clp)
*
* Returns zero or a negative NFS4ERR status code.
*/
+
static int nfs4_try_migration(struct nfs_server *server, const struct cred *cred)
{
struct nfs_client *clp = server->nfs_client;
diff --git a/fs/nsfs.c b/fs/nsfs.c
index 51e8c9430477..160018c4fb36 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -266,7 +266,7 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
else
tsk = find_task_by_pid_ns(arg, pid_ns);
if (!tsk)
- break;
+ return ret;
switch (ioctl) {
case NS_GET_PID_FROM_PIDNS: