Re: [PATCH] soc: qcom: socinfo: Avoid out of bounds read of serial number

From: Dmitry Baryshkov
Date: Mon Dec 30 2024 - 18:52:56 EST


On Mon, Dec 30, 2024 at 08:59:35PM +0100, Stephan Gerhold wrote:
> On MSM8916 devices, the serial number exposed in sysfs is constant and does
> not change across individual devices. It's always:
>
> db410c:/sys/devices/soc0$ cat serial_number
> 2644893864
>
> The firmware used on MSM8916 exposes SOCINFO_VERSION(0, 8), which does not
> have support for the serial_num field in the socinfo struct. There is an
> existing check to avoid exposing the serial number in that case, but it's
> not correct: When checking the item_size returned by SMEM, we need to make
> sure the *end* of the serial_num is within bounds, instead of comparing
> with the *start* offset. The serial_number currently exposed on MSM8916
> devices is just an out of bounds read of whatever comes after the socinfo
> struct in SMEM.
>
> Fix this by changing offsetof() to offsetofend(), so that the size of the
> field is also taken into account.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: efb448d0a3fc ("soc: qcom: Add socinfo driver")
> Signed-off-by: Stephan Gerhold <stephan.gerhold@xxxxxxxxxx>
> ---
> drivers/soc/qcom/socinfo.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>

--
With best wishes
Dmitry