On 02.03.2022 17:47:08, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master > head: 575115360652e9920cc56a028a286ebe9bf82694 > commit: c664e2137a27680922d8aeb64fb10313416b254f can: etas_es58x: add support for the ETAS ES58X_FD CAN USB interfaces > date: 11 months ago > compiler: powerpc64-linux-gcc (GCC) 11.2.0 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <yujie.liu@xxxxxxxxx> > > > 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); > ^ > > vim +174 drivers/net/can/usb/etas_es58x/es58x_fd.c > > c664e2137a2768 Vincent Mailhol 2021-04-10 165 > c664e2137a2768 Vincent Mailhol 2021-04-10 166 static int es58x_fd_rx_event_msg(struct net_device *netdev, > c664e2137a2768 Vincent Mailhol 2021-04-10 167 const struct es58x_fd_urb_cmd *es58x_fd_urb_cmd) > c664e2137a2768 Vincent Mailhol 2021-04-10 168 { > c664e2137a2768 Vincent Mailhol 2021-04-10 169 struct es58x_device *es58x_dev = es58x_priv(netdev)->es58x_dev; > c664e2137a2768 Vincent Mailhol 2021-04-10 170 u16 msg_len = get_unaligned_le16(&es58x_fd_urb_cmd->msg_len); > c664e2137a2768 Vincent Mailhol 2021-04-10 @171 const struct es58x_fd_rx_event_msg *rx_event_msg; > c664e2137a2768 Vincent Mailhol 2021-04-10 172 int ret; > c664e2137a2768 Vincent Mailhol 2021-04-10 173 > c664e2137a2768 Vincent Mailhol 2021-04-10 @174 ret = es58x_check_msg_len(es58x_dev->dev, *rx_event_msg, msg_len); > c664e2137a2768 Vincent Mailhol 2021-04-10 175 if (ret) > c664e2137a2768 Vincent Mailhol 2021-04-10 176 return ret; > c664e2137a2768 Vincent Mailhol 2021-04-10 177 > c664e2137a2768 Vincent Mailhol 2021-04-10 178 rx_event_msg = &es58x_fd_urb_cmd->rx_event_msg; > c664e2137a2768 Vincent Mailhol 2021-04-10 179 > c664e2137a2768 Vincent Mailhol 2021-04-10 180 return es58x_rx_err_msg(netdev, rx_event_msg->error_code, > c664e2137a2768 Vincent Mailhol 2021-04-10 181 rx_event_msg->event_code, > c664e2137a2768 Vincent Mailhol 2021-04-10 182 get_unaligned_le64(&rx_event_msg->timestamp)); > c664e2137a2768 Vincent Mailhol 2021-04-10 183 } > c664e2137a2768 Vincent Mailhol 2021-04-10 184 Thanks for the report. This looks like a false positive to me, as es58x_check_msg_len() is not a function, but a macro: | #define es58x_check_msg_len(dev, msg, actual_len) \ | __es58x_check_msg_len(dev, __stringify(msg), \ | actual_len, sizeof(msg)) __es58x_check_msg_len() don't use "rx_event_msg" directly, but only a string representation of it and a "sizeof()". I think it's possible to assign rx_event_msg before the es58x_check_msg_len(). I think (hope?) the compiler will not optimize anything away. :) regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Attachment:
signature.asc
Description: PGP signature