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] [day] [month] [year] [list]
Message-ID: <20200827090042.jgwp6q6bo7zdnew7@lion.mk-sys.cz>
Date:   Thu, 27 Aug 2020 11:00:42 +0200
From:   Michal Kubecek <mkubecek@...e.cz>
To:     Maxim Mikityanskiy <maximmi@...lanox.com>
Cc:     "David S. Miller" <davem@...emloft.net>,
        Andrew Lunn <andrew@...n.ch>, Jakub Kicinski <kuba@...nel.org>,
        netdev@...r.kernel.org
Subject: Re: [PATCH ethtool v2] netlink: Print and return an error when
 features weren't changed

On Tue, Aug 25, 2020 at 11:11:38AM +0300, Maxim Mikityanskiy wrote:
> The legacy ethtool prints an error message and returns 1 if no features
> were changed as requested. Port this behavior to ethtool-netlink.
> req_mask is compared to wanted_mask to detect if any feature was
> changed. If these masks are equal, it means that the kernel hasn't
> changed anything, and all bits got to wanted.
> 
> Signed-off-by: Maxim Mikityanskiy <maximmi@...lanox.com>

Applied, thank you.

Michal

> ---
>  netlink/features.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/netlink/features.c b/netlink/features.c
> index 133529d..7622594 100644
> --- a/netlink/features.c
> +++ b/netlink/features.c
> @@ -243,6 +243,7 @@ int nl_gfeatures(struct cmd_context *ctx)
>  /* FEATURES_SET */
>  
>  struct sfeatures_context {
> +	bool			nothing_changed;
>  	uint32_t		req_mask[0];
>  };
>  
> @@ -411,10 +412,14 @@ static void show_feature_changes(struct nl_context *nlctx,
>  	if (!wanted_val || !wanted_mask || !active_val || !active_mask)
>  		goto err;
>  
> +	sfctx->nothing_changed = true;
>  	diff = false;
> -	for (i = 0; i < words; i++)
> +	for (i = 0; i < words; i++) {
> +		if (wanted_mask[i] != sfctx->req_mask[i])
> +			sfctx->nothing_changed = false;
>  		if (wanted_mask[i] || (active_mask[i] & ~sfctx->req_mask[i]))
>  			diff = true;
> +	}
>  	if (!diff)
>  		return;
>  
> @@ -520,6 +525,10 @@ int nl_sfeatures(struct cmd_context *ctx)
>  	if (ret < 0)
>  		return 92;
>  	ret = nlsock_process_reply(nlsk, sfeatures_reply_cb, nlctx);
> +	if (sfctx->nothing_changed) {
> +		fprintf(stderr, "Could not change any device features\n");
> +		return nlctx->exit_code ?: 1;
> +	}
>  	if (ret == 0)
>  		return 0;
>  	return nlctx->exit_code ?: 92;
> -- 
> 2.20.1
> 

Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ