Message ID | 20200716220509.1314265-1-andrew@lunn.ch |
---|---|
State | Accepted |
Delegated to: | Michal Kubecek |
Headers | show |
Series | [ethtool] Fix segfault with cable test and ./configure --disable-netlink | expand |
On Fri, Jul 17, 2020 at 12:05:09AM +0200, Andrew Lunn wrote: > When the netlink interface code is disabled, a stub version of > netlink_run_handler() is used. This stub version needs to handle the > case when there is no possibility for a command to fall back to the > IOCTL call. The two cable tests commands have no such fallback, and if > we don't handle this, ethtool tries to jump through a NULL pointer > resulting in a segfault. > > Reported-by: Chris Healy <cphealy@gmail.com> > Signed-off-by: Andrew Lunn <andrew@lunn.ch> Applied, thank you. I'll need to be more thorough with teseting the --disable-netlink builds. Michal > --- > netlink/extapi.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/netlink/extapi.h b/netlink/extapi.h > index c5bfde9..a35d5f2 100644 > --- a/netlink/extapi.h > +++ b/netlink/extapi.h > @@ -46,6 +46,12 @@ void nl_monitor_usage(void); > static inline void netlink_run_handler(struct cmd_context *ctx, > nl_func_t nlfunc, bool no_fallback) > { > + if (no_fallback) { > + fprintf(stderr, > + "Command requires kernel netlink support which is not " > + "enabled in this ethtool binary\n"); > + exit(1); > + } > } > > static inline int nl_monitor(struct cmd_context *ctx) > -- > 2.27.0 >
On Mon, Jul 20, 2020 at 02:12:51AM +0200, Michal Kubecek wrote: > On Fri, Jul 17, 2020 at 12:05:09AM +0200, Andrew Lunn wrote: > > When the netlink interface code is disabled, a stub version of > > netlink_run_handler() is used. This stub version needs to handle the > > case when there is no possibility for a command to fall back to the > > IOCTL call. The two cable tests commands have no such fallback, and if > > we don't handle this, ethtool tries to jump through a NULL pointer > > resulting in a segfault. > > > > Reported-by: Chris Healy <cphealy@gmail.com> > > Signed-off-by: Andrew Lunn <andrew@lunn.ch> > > Applied, thank you. I'll need to be more thorough with teseting the > --disable-netlink builds. Hi Michal Yes. We are all focused on retlink, and missed the backwards compatibility issues like this. Andrew
diff --git a/netlink/extapi.h b/netlink/extapi.h index c5bfde9..a35d5f2 100644 --- a/netlink/extapi.h +++ b/netlink/extapi.h @@ -46,6 +46,12 @@ void nl_monitor_usage(void); static inline void netlink_run_handler(struct cmd_context *ctx, nl_func_t nlfunc, bool no_fallback) { + if (no_fallback) { + fprintf(stderr, + "Command requires kernel netlink support which is not " + "enabled in this ethtool binary\n"); + exit(1); + } } static inline int nl_monitor(struct cmd_context *ctx)
When the netlink interface code is disabled, a stub version of netlink_run_handler() is used. This stub version needs to handle the case when there is no possibility for a command to fall back to the IOCTL call. The two cable tests commands have no such fallback, and if we don't handle this, ethtool tries to jump through a NULL pointer resulting in a segfault. Reported-by: Chris Healy <cphealy@gmail.com> Signed-off-by: Andrew Lunn <andrew@lunn.ch> --- netlink/extapi.h | 6 ++++++ 1 file changed, 6 insertions(+)