[PATCH net v2 2/2] net: stmmac: fix multiplication overflow when reading timestamp

Maxime Chevallier maxime.chevallier at bootlin.com
Wed Apr 23 06:02:33 PDT 2025


On Wed, 23 Apr 2025 09:12:10 +0200
Alexis Lothoré <alexis.lothore at bootlin.com> wrote:

> The current way of reading a timestamp snapshot in stmmac can lead to
> integer overflow, as the computation is done on 32 bits. The issue has
> been observed on a dwmac-socfpga platform returning chaotic timestamp
> values due to this overflow. The corresponding multiplication is done
> with a MUL instruction, which returns 32 bit values. Explicitly casting
> the value to 64 bits replaced the MUL with a UMLAL, which computes and
> returns the result on 64 bits, and so returns correctly the timestamps.
> 
> Prevent this overflow by explicitly casting the intermediate value to
> u64 to make sure that the whole computation is made on u64. While at it,
> apply the same cast on the other dwmac variant (GMAC4) method for
> snapshot retrieval.
> 
> Fixes: 477c3e1f6363 ("net: stmmac: Introduce dwmac1000 timestamping operations")
> Signed-off-by: Alexis Lothoré <alexis.lothore at bootlin.com>

Reviewed-by: Maxime Chevallier <maxime.chevallier at bootlin.com>

Thanks,

Maxime



More information about the linux-arm-kernel mailing list