diff mbox series

ethtool: remove extra checks

Message ID 6d90f9b2-9bdd-d813-ef4e-ed0a7d1acaf2@virtuozzo.com
State Changes Requested
Delegated to: David Miller
Headers show
Series ethtool: remove extra checks | expand

Commit Message

Vasily Averin June 6, 2020, 12:49 p.m. UTC
Found by smatch:
net/ethtool/linkmodes.c:356 ethnl_set_linkmodes() warn:
 variable dereferenced before check 'info' (see line 332)
net/ethtool/linkinfo.c:143 ethnl_set_linkinfo() warn:
 variable dereferenced before check 'info' (see line 119

In both cases non-zero 'info' is always provided by caller.

Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
---
 net/ethtool/linkinfo.c  | 3 +--
 net/ethtool/linkmodes.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

Comments

Michal Kubecek June 6, 2020, 1:48 p.m. UTC | #1
On Sat, Jun 06, 2020 at 03:49:05PM +0300, Vasily Averin wrote:
> Found by smatch:
> net/ethtool/linkmodes.c:356 ethnl_set_linkmodes() warn:
>  variable dereferenced before check 'info' (see line 332)
> net/ethtool/linkinfo.c:143 ethnl_set_linkinfo() warn:
>  variable dereferenced before check 'info' (see line 119
> 
> In both cases non-zero 'info' is always provided by caller.
> 
> Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
> ---
>  net/ethtool/linkinfo.c  | 3 +--
>  net/ethtool/linkmodes.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/net/ethtool/linkinfo.c b/net/ethtool/linkinfo.c
> index 677068d..5eaf173 100644
> --- a/net/ethtool/linkinfo.c
> +++ b/net/ethtool/linkinfo.c
> @@ -140,8 +140,7 @@ int ethnl_set_linkinfo(struct sk_buff *skb, struct genl_info *info)
>  
>  	ret = __ethtool_get_link_ksettings(dev, &ksettings);
>  	if (ret < 0) {
> -		if (info)
> -			GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
> +		GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
>  		goto out_ops;
>  	}
>  	lsettings = &ksettings.base;

This change is already in net tree as commit 178f67b1288b ("ethtool:
linkinfo: remove an unnecessary NULL check").

> diff --git a/net/ethtool/linkmodes.c b/net/ethtool/linkmodes.c
> index 452608c..b759133 100644
> --- a/net/ethtool/linkmodes.c
> +++ b/net/ethtool/linkmodes.c
> @@ -353,8 +353,7 @@ int ethnl_set_linkmodes(struct sk_buff *skb, struct genl_info *info)
>  
>  	ret = __ethtool_get_link_ksettings(dev, &ksettings);
>  	if (ret < 0) {
> -		if (info)
> -			GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
> +		GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
>  		goto out_ops;
>  	}
>  

For this part, 

Reviewed-by: Michal Kubecek <mkubecek@suse.cz>

Michal
diff mbox series

Patch

diff --git a/net/ethtool/linkinfo.c b/net/ethtool/linkinfo.c
index 677068d..5eaf173 100644
--- a/net/ethtool/linkinfo.c
+++ b/net/ethtool/linkinfo.c
@@ -140,8 +140,7 @@  int ethnl_set_linkinfo(struct sk_buff *skb, struct genl_info *info)
 
 	ret = __ethtool_get_link_ksettings(dev, &ksettings);
 	if (ret < 0) {
-		if (info)
-			GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
+		GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
 		goto out_ops;
 	}
 	lsettings = &ksettings.base;
diff --git a/net/ethtool/linkmodes.c b/net/ethtool/linkmodes.c
index 452608c..b759133 100644
--- a/net/ethtool/linkmodes.c
+++ b/net/ethtool/linkmodes.c
@@ -353,8 +353,7 @@  int ethnl_set_linkmodes(struct sk_buff *skb, struct genl_info *info)
 
 	ret = __ethtool_get_link_ksettings(dev, &ksettings);
 	if (ret < 0) {
-		if (info)
-			GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
+		GENL_SET_ERR_MSG(info, "failed to retrieve link settings");
 		goto out_ops;
 	}