[net] net: devlink: skip info_get op call if it is not defined in dumpit
diff mbox series

Message ID 20190323232103.26673-1-jiri@resnulli.us
State Accepted
Delegated to: David Miller
Headers show
Series
  • [net] net: devlink: skip info_get op call if it is not defined in dumpit
Related show

Commit Message

Jiri Pirko March 23, 2019, 11:21 p.m. UTC
From: Jiri Pirko <jiri@mellanox.com>

In dumpit, unlike doit, the check for info_get op being defined
is missing. Add it and avoid null pointer dereference in case driver
does not define this op.

Fixes: f9cf22882c60 ("devlink: add device information API")
Reported-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
 net/core/devlink.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jakub Kicinski March 24, 2019, 3:06 a.m. UTC | #1
On Sun, 24 Mar 2019 00:21:03 +0100, Jiri Pirko wrote:
> From: Jiri Pirko <jiri@mellanox.com>
> 
> In dumpit, unlike doit, the check for info_get op being defined
> is missing. Add it and avoid null pointer dereference in case driver
> does not define this op.
> 
> Fixes: f9cf22882c60 ("devlink: add device information API")
> Reported-by: Ido Schimmel <idosch@mellanox.com>
> Signed-off-by: Jiri Pirko <jiri@mellanox.com>

Ugh, looks like the check got lost in v2 somehow.

Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com>

Thanks/sorry!
David Miller March 26, 2019, 6:26 p.m. UTC | #2
From: Jiri Pirko <jiri@resnulli.us>
Date: Sun, 24 Mar 2019 00:21:03 +0100

> From: Jiri Pirko <jiri@mellanox.com>
> 
> In dumpit, unlike doit, the check for info_get op being defined
> is missing. Add it and avoid null pointer dereference in case driver
> does not define this op.
> 
> Fixes: f9cf22882c60 ("devlink: add device information API")
> Reported-by: Ido Schimmel <idosch@mellanox.com>
> Signed-off-by: Jiri Pirko <jiri@mellanox.com>

Applied.

Patch
diff mbox series

diff --git a/net/core/devlink.c b/net/core/devlink.c
index 78e22cea4cc7..da0a29f30885 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -3897,6 +3897,11 @@  static int devlink_nl_cmd_info_get_dumpit(struct sk_buff *msg,
 			continue;
 		}
 
+		if (!devlink->ops->info_get) {
+			idx++;
+			continue;
+		}
+
 		mutex_lock(&devlink->lock);
 		err = devlink_nl_info_fill(msg, devlink, DEVLINK_CMD_INFO_GET,
 					   NETLINK_CB(cb->skb).portid,