Skip to content

Commit 6ca7107

Browse files
vincent-mailholgregkh
authored andcommitted
can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before calling es58x_check_msg_len()
[ Upstream commit 7a8cd7c ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent db9a140 commit 6ca7107

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

drivers/net/can/usb/etas_es58x/es58x_fd.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,11 @@ static int es58x_fd_rx_event_msg(struct net_device *netdev,
171171
const struct es58x_fd_rx_event_msg *rx_event_msg;
172172
int ret;
173173

174+
rx_event_msg = &es58x_fd_urb_cmd->rx_event_msg;
174175
ret = es58x_check_msg_len(es58x_dev->dev, *rx_event_msg, msg_len);
175176
if (ret)
176177
return ret;
177178

178-
rx_event_msg = &es58x_fd_urb_cmd->rx_event_msg;
179-
180179
return es58x_rx_err_msg(netdev, rx_event_msg->error_code,
181180
rx_event_msg->event_code,
182181
get_unaligned_le64(&rx_event_msg->timestamp));

0 commit comments

Comments
 (0)