can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before calling es58x_check_msg_len()
Function es58x_fd_rx_event() invokes the es58x_check_msg_len() macro: | ret = es58x_check_msg_len(es58x_dev->dev, *rx_event_msg, msg_len); While doing so, it dereferences an uninitialized variable: *rx_event_msg. This is actually harmless because es58x_check_msg_len() only uses preprocessor macros (sizeof() and __stringify()) on *rx_event_msg. c.f. [1]. Nonetheless, this pattern is confusing so the lines are reordered to make sure that rx_event_msg is correctly initialized. This patch also fixes a false positive warning reported by cppcheck: | cppcheck possible warnings: (new ones prefixed by >>, may not be real problems) | | In file included from drivers/net/can/usb/etas_es58x/es58x_fd.c: | >> drivers/net/can/usb/etas_es58x/es58x_fd.c:174:8: warning: Uninitialized variable: rx_event_msg [uninitvar] | ret = es58x_check_msg_len(es58x_dev->dev, *rx_event_msg, msg_len); | ^ [1] https://elixir.bootlin.com/linux/v5.16/source/drivers/net/can/usb/etas_es58x/es58x_core.h#L467 Link: https://lore.kernel.org/all/20220306101302.708783-1-mailhol.vincent@wanadoo.fr Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
259bdba27e
commit
7a8cd7c0ee
|
@ -173,12 +173,11 @@ static int es58x_fd_rx_event_msg(struct net_device *netdev,
|
|||
const struct es58x_fd_rx_event_msg *rx_event_msg;
|
||||
int ret;
|
||||
|
||||
rx_event_msg = &es58x_fd_urb_cmd->rx_event_msg;
|
||||
ret = es58x_check_msg_len(es58x_dev->dev, *rx_event_msg, msg_len);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
rx_event_msg = &es58x_fd_urb_cmd->rx_event_msg;
|
||||
|
||||
return es58x_rx_err_msg(netdev, rx_event_msg->error_code,
|
||||
rx_event_msg->event_code,
|
||||
get_unaligned_le64(&rx_event_msg->timestamp));
|
||||
|
|
Loading…
Reference in New Issue