summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/netronome/nfp/nfp_app.h
diff options
context:
space:
mode:
authorJakub Kicinski2018-07-31 05:33:15 +0200
committerDaniel Borkmann2018-07-31 09:28:19 +0200
commit240b74fde35293f718c6cdfa486b3a005c4243c9 (patch)
treee6ba6f8dbffaaf72f6ce83ce2ab9934249c96f80 /drivers/net/ethernet/netronome/nfp/nfp_app.h
parentlwt_bpf: remove unnecessary rcu_read_lock in run_lwt_bpf (diff)
downloadkernel-qcow2-linux-240b74fde35293f718c6cdfa486b3a005c4243c9.tar.gz
kernel-qcow2-linux-240b74fde35293f718c6cdfa486b3a005c4243c9.tar.xz
kernel-qcow2-linux-240b74fde35293f718c6cdfa486b3a005c4243c9.zip
nfp: fix variable dereferenced before check in nfp_app_ctrl_rx_raw()
'app' is dereferenced before used for the devlink trace point. In case FW is buggy and sends a control message to a VF queue we should make sure app is not NULL. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'drivers/net/ethernet/netronome/nfp/nfp_app.h')
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_app.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h
index ccb244cf6c30..4e1eb3395648 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_app.h
+++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h
@@ -392,10 +392,11 @@ static inline void nfp_app_ctrl_rx(struct nfp_app *app, struct sk_buff *skb)
static inline void
nfp_app_ctrl_rx_raw(struct nfp_app *app, const void *data, unsigned int len)
{
- trace_devlink_hwmsg(priv_to_devlink(app->pf), true, 0, data, len);
+ if (!app || !app->type->ctrl_msg_rx_raw)
+ return;
- if (app && app->type->ctrl_msg_rx_raw)
- app->type->ctrl_msg_rx_raw(app, data, len);
+ trace_devlink_hwmsg(priv_to_devlink(app->pf), true, 0, data, len);
+ app->type->ctrl_msg_rx_raw(app, data, len);
}
static inline int nfp_app_eswitch_mode_get(struct nfp_app *app, u16 *mode)