* [PATCH] can: mcp251xfd: mcp251xfd_register_get_dev_id(): use correct length to read dev_id
@ 2022-06-16 9:49 Marc Kleine-Budde
2022-06-24 7:11 ` Manivannan Sadhasivam
0 siblings, 1 reply; 2+ messages in thread
From: Marc Kleine-Budde @ 2022-06-16 9:49 UTC (permalink / raw)
To: linux-can; +Cc: kernel, Manivannan Sadhasivam, Thomas Kopp, Marc Kleine-Budde
The device ID register is 32 bits wide. The driver uses incorrectly
the size of a pointer to a u32 to calculate the length of the SPI
transfer. This results in a read of 2 registers on 64 bit platforms.
This is no problem on the Linux side, as the RX buffer of the SPI
transfer is large enough. In the mpc251xfd chip this results in the
read of an undocumented register. So far no problems were observed.
This patch fixes the length of the SPI transfer to read the device ID
register only.
Fixes: 55e5b97f003e ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
index 34b160024ce3..3160881e89d9 100644
--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
+++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
@@ -1778,7 +1778,7 @@ mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_id,
xfer[0].len = sizeof(buf_tx->cmd);
xfer[0].speed_hz = priv->spi_max_speed_hz_slow;
xfer[1].rx_buf = buf_rx->data;
- xfer[1].len = sizeof(dev_id);
+ xfer[1].len = sizeof(*dev_id);
xfer[1].speed_hz = priv->spi_max_speed_hz_fast;
mcp251xfd_spi_cmd_read_nocrc(&buf_tx->cmd, MCP251XFD_REG_DEVID);
--
2.35.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] can: mcp251xfd: mcp251xfd_register_get_dev_id(): use correct length to read dev_id
2022-06-16 9:49 [PATCH] can: mcp251xfd: mcp251xfd_register_get_dev_id(): use correct length to read dev_id Marc Kleine-Budde
@ 2022-06-24 7:11 ` Manivannan Sadhasivam
0 siblings, 0 replies; 2+ messages in thread
From: Manivannan Sadhasivam @ 2022-06-24 7:11 UTC (permalink / raw)
To: Marc Kleine-Budde; +Cc: linux-can, kernel, Thomas Kopp
On Thu, Jun 16, 2022 at 11:49:14AM +0200, Marc Kleine-Budde wrote:
> The device ID register is 32 bits wide. The driver uses incorrectly
> the size of a pointer to a u32 to calculate the length of the SPI
> transfer. This results in a read of 2 registers on 64 bit platforms.
> This is no problem on the Linux side, as the RX buffer of the SPI
> transfer is large enough. In the mpc251xfd chip this results in the
> read of an undocumented register. So far no problems were observed.
>
> This patch fixes the length of the SPI transfer to read the device ID
> register only.
>
> Fixes: 55e5b97f003e ("can: mcp25xxfd: add driver for Microchip MCP25xxFD SPI CAN")
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Thanks,
Mani
> ---
> drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
> index 34b160024ce3..3160881e89d9 100644
> --- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
> +++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c
> @@ -1778,7 +1778,7 @@ mcp251xfd_register_get_dev_id(const struct mcp251xfd_priv *priv, u32 *dev_id,
> xfer[0].len = sizeof(buf_tx->cmd);
> xfer[0].speed_hz = priv->spi_max_speed_hz_slow;
> xfer[1].rx_buf = buf_rx->data;
> - xfer[1].len = sizeof(dev_id);
> + xfer[1].len = sizeof(*dev_id);
> xfer[1].speed_hz = priv->spi_max_speed_hz_fast;
>
> mcp251xfd_spi_cmd_read_nocrc(&buf_tx->cmd, MCP251XFD_REG_DEVID);
> --
> 2.35.1
>
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-06-24 7:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-16 9:49 [PATCH] can: mcp251xfd: mcp251xfd_register_get_dev_id(): use correct length to read dev_id Marc Kleine-Budde
2022-06-24 7:11 ` Manivannan Sadhasivam
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox