[PATCH] nvme-tcp: look up host_iface in the current netns

Hannes Reinecke hare at suse.de
Mon Jul 27 06:24:17 PDT 2026


On 7/26/26 4:46 AM, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang at kylinos.cn>
> 
> nvme_tcp_alloc_ctrl() looks opts->host_iface up in &init_net, the boot-time
> netns. When called from any other netns - e.g. the selftest's ns2, where
> ns2eth1 actually lives - the lookup misses and the controller setup fails
> with "invalid interface passed":
> 
>   nvmet: adding nsid 1 to subsystem nqn.2014-08.org.nvmexpress.mptcpdev
>   nvmet_tcp: enabling port 24660 (0.0.0.0:24099)
>   # nvme discover -a 10.1.1.1 --tos=0x10 --host-iface=ns2eth1
>   nvme_tcp: invalid interface passed: ns2eth1
>   # failed to add controller, error invalid interface
> 
> Look the device up in current->nsproxy->net_ns instead so the check sees
> the calling task's netns.
> 
> Signed-off-by: Geliang Tang <tanggeliang at kylinos.cn>
> ---
>   drivers/nvme/host/tcp.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c
> index ba5c7b3e2a7c..c89d84ccce1a 100644
> --- a/drivers/nvme/host/tcp.c
> +++ b/drivers/nvme/host/tcp.c
> @@ -2960,7 +2960,8 @@ static struct nvme_tcp_ctrl *nvme_tcp_alloc_ctrl(struct device *dev,
>   	}
>   
>   	if (opts->mask & NVMF_OPT_HOST_IFACE) {
> -		if (!__dev_get_by_name(&init_net, opts->host_iface)) {
> +		if (!__dev_get_by_name(current->nsproxy->net_ns,
> +				       opts->host_iface)) {
>   			pr_err("invalid interface passed: %s\n",
>   			       opts->host_iface);
>   			ret = -ENODEV;

Reviewed-by: Hannes Reinecke <hare at kernel.org>

But: if we are running in a network namespace the IP address of the
ports in the discovery log page will be relative to that namespace,
too, and there's a good chance that they are not reachable from
the initiator reading the log page.
Making the whole point of discovery a bit pointless.
But I really don't have a good idea how to resolve that.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                  Kernel Storage Architect
hare at suse.de                                +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich



More information about the Linux-nvme mailing list