lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <82eb95ac-2dca-7a7a-116a-2771c4551bab@suse.de>
Date:   Tue, 14 Mar 2023 17:29:25 +0100
From:   Hannes Reinecke <hare@...e.de>
To:     Lee Duncan <leeman.duncan@...il.com>, linux-scsi@...r.kernel.org,
        open-iscsi@...glegroups.com, netdev@...r.kernel.org
Cc:     Lee Duncan <lduncan@...e.com>, Chris Leech <cleech@...hat.com>
Subject: Re: [RFC PATCH 5/9] iscsi: set netns for iscsi_tcp hosts

On 2/8/23 18:40, Lee Duncan wrote:
> From: Lee Duncan <lduncan@...e.com>
> 
> This lets iscsi_tcp operate in multiple namespaces.  It uses current
> during session creation to find the net namespace, but it might be
> better to manage to pass it along from the iscsi netlink socket.
> 
And indeed, I'd rather use the namespace from the iscsi netlink socket.
If you use the namespace from session creation you'd better hope that
this function is not called from a workqueue ...


> Signed-off-by: Chris Leech <cleech@...hat.com>
> Signed-off-by: Lee Duncan <lduncan@...e.com>
> ---
>   drivers/scsi/iscsi_tcp.c            | 7 +++++++
>   drivers/scsi/scsi_transport_iscsi.c | 7 ++++++-
>   include/scsi/scsi_transport_iscsi.h | 1 +
>   3 files changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
> index 0454d94e8cf0..22e7a5c93627 100644
> --- a/drivers/scsi/iscsi_tcp.c
> +++ b/drivers/scsi/iscsi_tcp.c
> @@ -1069,6 +1069,11 @@ static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
>   	return 0;
>   }
>   
> +static struct net *iscsi_sw_tcp_netns(struct Scsi_Host *shost)
> +{
> +	return current->nsproxy->net_ns;
> +}
> +

See above if you can't reference the namespace for the netlink socket here.

>   static struct scsi_host_template iscsi_sw_tcp_sht = {
>   	.module			= THIS_MODULE,
>   	.name			= "iSCSI Initiator over TCP/IP",
> @@ -1124,6 +1129,8 @@ static struct iscsi_transport iscsi_sw_tcp_transport = {
>   	.alloc_pdu		= iscsi_sw_tcp_pdu_alloc,
>   	/* recovery */
>   	.session_recovery_timedout = iscsi_session_recovery_timedout,
> +	/* net namespace */
> +	.get_netns		= iscsi_sw_tcp_netns,
>   };
>   
>   static int __init iscsi_sw_tcp_init(void)
> diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
> index 230b43d34c5f..996a9abfa1f5 100644
> --- a/drivers/scsi/scsi_transport_iscsi.c
> +++ b/drivers/scsi/scsi_transport_iscsi.c
> @@ -1600,10 +1600,15 @@ static int iscsi_setup_host(struct transport_container *tc, struct device *dev,
>   {
>   	struct Scsi_Host *shost = dev_to_shost(dev);
>   	struct iscsi_cls_host *ihost = shost->shost_data;
> +	struct iscsi_internal *priv = to_iscsi_internal(shost->transportt);
> +	struct iscsi_transport *transport = priv->iscsi_transport;
>   
>   	memset(ihost, 0, sizeof(*ihost));
>   	mutex_init(&ihost->mutex);
> -	ihost->netns = &init_net;
> +	if (transport->get_netns)
> +		ihost->netns = transport->get_netns(shost);
> +	else
> +		ihost->netns = &init_net;
>   
>   	iscsi_bsg_host_add(shost, ihost);
>   	/* ignore any bsg add error - we just can't do sgio */
> diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
> index af0c5a15f316..f8885d0c37d8 100644
> --- a/include/scsi/scsi_transport_iscsi.h
> +++ b/include/scsi/scsi_transport_iscsi.h
> @@ -156,6 +156,7 @@ struct iscsi_transport {
>   	int (*logout_flashnode_sid) (struct iscsi_cls_session *cls_sess);
>   	int (*get_host_stats) (struct Scsi_Host *shost, char *buf, int len);
>   	u8 (*check_protection)(struct iscsi_task *task, sector_t *sector);
> +	struct net *(*get_netns)(struct Scsi_Host *shost);
>   };
>   
>   /*

Cheers,

Hannes

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ