On 9/2/25 1:50 PM, Akhil P Oommen wrote: > Current parser logic for GMU firmware assumes a dword aligned payload > size for every block. This is not true for all GMU firmwares. So, fix > this by using correct 'size' value in the calculation for the offset > for the next block's header.
Hm, I haven't seen this in the wild - do you have any specific examples? > > Fixes: c6ed04f856a4 ("drm/msm/a6xx: A640/A650 GMU firmware path") > Signed-off-by: Akhil P Oommen <akhi...@oss.qualcomm.com> > --- > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > index > 28e6705c6da682c7b41c748e375dda59a6551898..ea52374c9fcd481d816ed9608e9f6eb1c2e3005a > 100644 > --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c > @@ -758,6 +758,8 @@ static bool fw_block_mem(struct a6xx_gmu_bo *bo, const > struct block_header *blk) > return true; > } > > +#define NEXT_BLK(blk) ((const struct block_header *)((const char *)blk + > sizeof(*blk) + blk->size)) CHECK: Macro argument 'blk' may be better as '(blk)' to avoid precedence issues #146: FILE: drivers/gpu/drm/msm/adreno/a6xx_gmu.c:761: +#define NEXT_BLK(blk) ((const struct block_header *)((const char *)blk + sizeof(*blk) + blk->size)) Konrad