* [PATCH 1/1] net: hns: avoid null pointer dereference
@ 2016-05-17 20:01 Heinrich Schuchardt
2016-05-18 1:04 ` Yisen Zhuang
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Heinrich Schuchardt @ 2016-05-17 20:01 UTC (permalink / raw)
To: David S. Miller
Cc: Yisen Zhuang, Kejian Yan, Lisheng, Kenneth Lee, Andrew Lunn,
Salil, Qianqian Xie, huangdaode, Chenny Xu, netdev, linux-kernel,
Heinrich Schuchardt
In the statement
assert(priv || priv->ae_handle);
the right side of || is only evaluated if priv is null.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index 3d746c8..834a50a 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -720,7 +720,7 @@ static int hns_set_pauseparam(struct net_device *net_dev,
struct hnae_handle *h;
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
+ assert(priv && priv->ae_handle);
h = priv->ae_handle;
ops = h->dev->ops;
@@ -780,7 +780,7 @@ static int hns_set_coalesce(struct net_device *net_dev,
struct hnae_ae_ops *ops;
int ret;
- assert(priv || priv->ae_handle);
+ assert(priv && priv->ae_handle);
ops = priv->ae_handle->dev->ops;
@@ -1111,7 +1111,7 @@ void hns_get_regs(struct net_device *net_dev, struct ethtool_regs *cmd,
struct hns_nic_priv *priv = netdev_priv(net_dev);
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
+ assert(priv && priv->ae_handle);
ops = priv->ae_handle->dev->ops;
@@ -1135,7 +1135,7 @@ static int hns_get_regs_len(struct net_device *net_dev)
struct hns_nic_priv *priv = netdev_priv(net_dev);
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
+ assert(priv && priv->ae_handle);
ops = priv->ae_handle->dev->ops;
if (!ops->get_regs_len) {
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] net: hns: avoid null pointer dereference
2016-05-17 20:01 [PATCH 1/1] net: hns: avoid null pointer dereference Heinrich Schuchardt
@ 2016-05-18 1:04 ` Yisen Zhuang
2016-05-19 11:14 ` David Laight
2016-05-19 18:26 ` [PATCH " David Miller
2 siblings, 0 replies; 6+ messages in thread
From: Yisen Zhuang @ 2016-05-18 1:04 UTC (permalink / raw)
To: Heinrich Schuchardt, David S. Miller
Cc: Kejian Yan, Lisheng, Kenneth Lee, Andrew Lunn, Salil,
Qianqian Xie, huangdaode, Chenny Xu, netdev, linux-kernel
Hi Heinrich,
This patch is fine to me.
Thanks,
Yisen
在 2016/5/18 4:01, Heinrich Schuchardt 写道:
> In the statement
> assert(priv || priv->ae_handle);
> the right side of || is only evaluated if priv is null.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> index 3d746c8..834a50a 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> @@ -720,7 +720,7 @@ static int hns_set_pauseparam(struct net_device *net_dev,
> struct hnae_handle *h;
> struct hnae_ae_ops *ops;
>
> - assert(priv || priv->ae_handle);
> + assert(priv && priv->ae_handle);
>
> h = priv->ae_handle;
> ops = h->dev->ops;
> @@ -780,7 +780,7 @@ static int hns_set_coalesce(struct net_device *net_dev,
> struct hnae_ae_ops *ops;
> int ret;
>
> - assert(priv || priv->ae_handle);
> + assert(priv && priv->ae_handle);
>
> ops = priv->ae_handle->dev->ops;
>
> @@ -1111,7 +1111,7 @@ void hns_get_regs(struct net_device *net_dev, struct ethtool_regs *cmd,
> struct hns_nic_priv *priv = netdev_priv(net_dev);
> struct hnae_ae_ops *ops;
>
> - assert(priv || priv->ae_handle);
> + assert(priv && priv->ae_handle);
>
> ops = priv->ae_handle->dev->ops;
>
> @@ -1135,7 +1135,7 @@ static int hns_get_regs_len(struct net_device *net_dev)
> struct hns_nic_priv *priv = netdev_priv(net_dev);
> struct hnae_ae_ops *ops;
>
> - assert(priv || priv->ae_handle);
> + assert(priv && priv->ae_handle);
>
> ops = priv->ae_handle->dev->ops;
> if (!ops->get_regs_len) {
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 1/1] net: hns: avoid null pointer dereference
2016-05-17 20:01 [PATCH 1/1] net: hns: avoid null pointer dereference Heinrich Schuchardt
2016-05-18 1:04 ` Yisen Zhuang
@ 2016-05-19 11:14 ` David Laight
2016-05-19 19:20 ` [PATCH v2 " Heinrich Schuchardt
2016-05-19 18:26 ` [PATCH " David Miller
2 siblings, 1 reply; 6+ messages in thread
From: David Laight @ 2016-05-19 11:14 UTC (permalink / raw)
To: 'Heinrich Schuchardt', David S. Miller
Cc: Yisen Zhuang, Kejian Yan, Lisheng, Kenneth Lee, Andrew Lunn,
Salil, Qianqian Xie, huangdaode, Chenny Xu,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
From: Heinrich Schuchardt
> Sent: 17 May 2016 21:01
> In the statement
> assert(priv || priv->ae_handle);
> the right side of || is only evaluated if priv is null.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> index 3d746c8..834a50a 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
> @@ -720,7 +720,7 @@ static int hns_set_pauseparam(struct net_device *net_dev,
> struct hnae_handle *h;
> struct hnae_ae_ops *ops;
>
> - assert(priv || priv->ae_handle);
> + assert(priv && priv->ae_handle);
>
> h = priv->ae_handle;
> ops = h->dev->ops;
...
Personally I'd just delete the assert().
It is probably easier to debug the 'oops' from the NULL pointer dereference
that that of the assert().
If either value can be NULL (without a coding error) then you'd want to
return an error.
David
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] net: hns: avoid null pointer dereference
2016-05-17 20:01 [PATCH 1/1] net: hns: avoid null pointer dereference Heinrich Schuchardt
2016-05-18 1:04 ` Yisen Zhuang
2016-05-19 11:14 ` David Laight
@ 2016-05-19 18:26 ` David Miller
2 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2016-05-19 18:26 UTC (permalink / raw)
To: xypron.glpk
Cc: Yisen.Zhuang, yankejian, lisheng011, liguozhu, andrew,
salil.mehta, xieqianqian, huangdaode, chenny.xu, netdev,
linux-kernel
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
Date: Tue, 17 May 2016 22:01:15 +0200
> In the statement
> assert(priv || priv->ae_handle);
> the right side of || is only evaluated if priv is null.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
I agree with others that this assert() is pretty useless and should
simply be removed.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/1] net: hns: avoid null pointer dereference
2016-05-19 11:14 ` David Laight
@ 2016-05-19 19:20 ` Heinrich Schuchardt
2016-05-23 20:55 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Heinrich Schuchardt @ 2016-05-19 19:20 UTC (permalink / raw)
To: David S. Miller
Cc: David Laight, Yisen Zhuang, Kejian Yan, Lisheng, Andrew Lunn,
Salil, Ivan Vecera, Chenny Xu, huangdaode, netdev, linux-kernel,
Heinrich Schuchardt
In the statement
assert(priv || priv->ae_handle);
the right side of || is only evaluated if priv is null.
v2:
As suggested by David Leight and David Miller the assert
statements are removed.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
drivers/net/ethernet/hisilicon/hns/hns_ethtool.c | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index 3d746c8..67a648c 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -46,7 +46,6 @@ static u32 hns_nic_get_link(struct net_device *net_dev)
u32 link_stat = priv->link;
struct hnae_handle *h;
- assert(priv && priv->ae_handle);
h = priv->ae_handle;
if (priv->phy) {
@@ -646,8 +645,6 @@ static void hns_nic_get_drvinfo(struct net_device *net_dev,
{
struct hns_nic_priv *priv = netdev_priv(net_dev);
- assert(priv);
-
strncpy(drvinfo->version, HNAE_DRIVER_VERSION,
sizeof(drvinfo->version));
drvinfo->version[sizeof(drvinfo->version) - 1] = '\0';
@@ -720,8 +717,6 @@ static int hns_set_pauseparam(struct net_device *net_dev,
struct hnae_handle *h;
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
-
h = priv->ae_handle;
ops = h->dev->ops;
@@ -780,8 +775,6 @@ static int hns_set_coalesce(struct net_device *net_dev,
struct hnae_ae_ops *ops;
int ret;
- assert(priv || priv->ae_handle);
-
ops = priv->ae_handle->dev->ops;
if (ec->tx_coalesce_usecs != ec->rx_coalesce_usecs)
@@ -1111,8 +1104,6 @@ void hns_get_regs(struct net_device *net_dev, struct ethtool_regs *cmd,
struct hns_nic_priv *priv = netdev_priv(net_dev);
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
-
ops = priv->ae_handle->dev->ops;
cmd->version = HNS_CHIP_VERSION;
@@ -1135,8 +1126,6 @@ static int hns_get_regs_len(struct net_device *net_dev)
struct hns_nic_priv *priv = netdev_priv(net_dev);
struct hnae_ae_ops *ops;
- assert(priv || priv->ae_handle);
-
ops = priv->ae_handle->dev->ops;
if (!ops->get_regs_len) {
netdev_err(net_dev, "ops->get_regs_len is null!\n");
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/1] net: hns: avoid null pointer dereference
2016-05-19 19:20 ` [PATCH v2 " Heinrich Schuchardt
@ 2016-05-23 20:55 ` David Miller
0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2016-05-23 20:55 UTC (permalink / raw)
To: xypron.glpk
Cc: David.Laight, Yisen.Zhuang, yankejian, lisheng011, andrew,
salil.mehta, ivecera, chenny.xu, huangdaode, netdev, linux-kernel
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
Date: Thu, 19 May 2016 21:20:55 +0200
> In the statement
> assert(priv || priv->ae_handle);
> the right side of || is only evaluated if priv is null.
>
> v2:
> As suggested by David Leight and David Miller the assert
> statements are removed.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Applied.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-05-23 20:55 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-17 20:01 [PATCH 1/1] net: hns: avoid null pointer dereference Heinrich Schuchardt
2016-05-18 1:04 ` Yisen Zhuang
2016-05-19 11:14 ` David Laight
2016-05-19 19:20 ` [PATCH v2 " Heinrich Schuchardt
2016-05-23 20:55 ` David Miller
2016-05-19 18:26 ` [PATCH " David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).