On Tue, 23 Jul 2024 at 16:14, Peter Maydell <peter.mayd...@linaro.org> wrote: > > Coverity gets confused about the use of the 'segment' variable in the > pptlb helper function: it thinks that we can take a code path where > we first initialize it: > unsigned segment = XTENSA_MPU_PROBE_B; // 0x40000000 > and then use that value as a shift count: > } else if (nhits == 1 && (env->sregs[MPUENB] & (1u << segment))) { > > In fact this isn't possible, beacuse xtensa_mpu_lookup() is passed > '&segment', and it uses that as an output value, which it will always > set if it returns nonzero. But the way the code is currently written > is confusing to a human reader as well as to Coverity. > > Instead of initializing 'segment' at the top of the function with a > value that's only used in the "nhits == 0" code path, use the > constant value directly in that code path, and don't initialize > segment. This matches the way we use xtensa_mpu_lookup() in its > other callsites in get_physical_addr_mpu(). > > Resolves: Coverity CID 1547589 > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --
I'll take this via target-arm.next since I'm doing a pullreq anyway. thanks -- PMM