diff mbox series

linux-user/ppc: Narrow type of ccr in save_user_regs

Message ID 20220401191643.330393-1-richard.henderson@linaro.org
State New
Headers show
Series linux-user/ppc: Narrow type of ccr in save_user_regs | expand

Commit Message

Richard Henderson April 1, 2022, 7:16 p.m. UTC
Coverity warns that we shift a 32-bit value by N, and then
accumulate it into a 64-bit type (target_ulong on ppc64).

The ccr is always 8 * 4-bit fields, and thus is always a
32-bit quantity; narrow the type to avoid the warning.

Fixes: Coverity CID 1487223
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 linux-user/ppc/signal.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Cédric Le Goater April 1, 2022, 9:44 p.m. UTC | #1
On 4/1/22 21:16, Richard Henderson wrote:
> Coverity warns that we shift a 32-bit value by N, and then
> accumulate it into a 64-bit type (target_ulong on ppc64).
> 
> The ccr is always 8 * 4-bit fields, and thus is always a
> 32-bit quantity; narrow the type to avoid the warning.
> 
> Fixes: Coverity CID 1487223
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.


> ---
>   linux-user/ppc/signal.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
> index ec0b9c0df3..ce5a4682cd 100644
> --- a/linux-user/ppc/signal.c
> +++ b/linux-user/ppc/signal.c
> @@ -229,7 +229,7 @@ static void save_user_regs(CPUPPCState *env, struct target_mcontext *frame)
>   {
>       target_ulong msr = env->msr;
>       int i;
> -    target_ulong ccr = 0;
> +    uint32_t ccr = 0;
>   
>       /* In general, the kernel attempts to be intelligent about what it
>          needs to save for Altivec/FP/SPE registers.  We don't care that
Cédric Le Goater April 4, 2022, 6:52 a.m. UTC | #2
On 4/1/22 21:16, Richard Henderson wrote:
> Coverity warns that we shift a 32-bit value by N, and then
> accumulate it into a 64-bit type (target_ulong on ppc64).
> 
> The ccr is always 8 * 4-bit fields, and thus is always a
> 32-bit quantity; narrow the type to avoid the warning.
> 
> Fixes: Coverity CID 1487223
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   linux-user/ppc/signal.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)

Queued for ppc-7.0

Thanks,

C.


> 
> diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
> index ec0b9c0df3..ce5a4682cd 100644
> --- a/linux-user/ppc/signal.c
> +++ b/linux-user/ppc/signal.c
> @@ -229,7 +229,7 @@ static void save_user_regs(CPUPPCState *env, struct target_mcontext *frame)
>   {
>       target_ulong msr = env->msr;
>       int i;
> -    target_ulong ccr = 0;
> +    uint32_t ccr = 0;
>   
>       /* In general, the kernel attempts to be intelligent about what it
>          needs to save for Altivec/FP/SPE registers.  We don't care that
Peter Maydell April 4, 2022, 8:41 a.m. UTC | #3
On Mon, 4 Apr 2022 at 07:55, Cédric Le Goater <clg@kaod.org> wrote:
>
> On 4/1/22 21:16, Richard Henderson wrote:
> > Coverity warns that we shift a 32-bit value by N, and then
> > accumulate it into a 64-bit type (target_ulong on ppc64).
> >
> > The ccr is always 8 * 4-bit fields, and thus is always a
> > 32-bit quantity; narrow the type to avoid the warning.
> >
> > Fixes: Coverity CID 1487223
> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> > ---
> >   linux-user/ppc/signal.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
>
> Queued for ppc-7.0

NB that this is only suppressing a coverity warning, not
correcting any incorrect behaviour, so if you don't have
anything else you were planning to send for 7.0 it could
also wait til 7.1.

thanks
-- PMM
Cédric Le Goater April 4, 2022, 9:09 a.m. UTC | #4
On 4/4/22 10:41, Peter Maydell wrote:
> On Mon, 4 Apr 2022 at 07:55, Cédric Le Goater <clg@kaod.org> wrote:
>>
>> On 4/1/22 21:16, Richard Henderson wrote:
>>> Coverity warns that we shift a 32-bit value by N, and then
>>> accumulate it into a 64-bit type (target_ulong on ppc64).
>>>
>>> The ccr is always 8 * 4-bit fields, and thus is always a
>>> 32-bit quantity; narrow the type to avoid the warning.
>>>
>>> Fixes: Coverity CID 1487223
>>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>>> ---
>>>    linux-user/ppc/signal.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> Queued for ppc-7.0
> 
> NB that this is only suppressing a coverity warning, not
> correcting any incorrect behaviour, so if you don't have
> anything else you were planning to send for 7.0 it could
> also wait til 7.1.

I have a couple of small fixes in :

   https://github.com/legoater/qemu/commits/ppc-for-upstream

   linux-user/ppc: Narrow type of ccr in save_user_regs
   ppc/pnv: Fix number of registers in the PCIe controller on POWER9
   hw/ppc: free env->tb_env in spapr_unrealize_vcpu()

Nothing critical indeed. So these can wait 7.1 ?

Thanks,

C.
Peter Maydell April 4, 2022, 9:25 a.m. UTC | #5
On Mon, 4 Apr 2022 at 10:09, Cédric Le Goater <clg@kaod.org> wrote:
>
> On 4/4/22 10:41, Peter Maydell wrote:
> > On Mon, 4 Apr 2022 at 07:55, Cédric Le Goater <clg@kaod.org> wrote:
> >>
> >> On 4/1/22 21:16, Richard Henderson wrote:
> >>> Coverity warns that we shift a 32-bit value by N, and then
> >>> accumulate it into a 64-bit type (target_ulong on ppc64).
> >>>
> >>> The ccr is always 8 * 4-bit fields, and thus is always a
> >>> 32-bit quantity; narrow the type to avoid the warning.
> >>>
> >>> Fixes: Coverity CID 1487223
> >>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> >>> ---
> >>>    linux-user/ppc/signal.c | 2 +-
> >>>    1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> Queued for ppc-7.0
> >
> > NB that this is only suppressing a coverity warning, not
> > correcting any incorrect behaviour, so if you don't have
> > anything else you were planning to send for 7.0 it could
> > also wait til 7.1.
>
> I have a couple of small fixes in :
>
>    https://github.com/legoater/qemu/commits/ppc-for-upstream
>
>    linux-user/ppc: Narrow type of ccr in save_user_regs
>    ppc/pnv: Fix number of registers in the PCIe controller on POWER9
>    hw/ppc: free env->tb_env in spapr_unrealize_vcpu()
>
> Nothing critical indeed. So these can wait 7.1 ?

Up to you -- they're all small enough to be OK going into
7.0, and the other two are fixing real bugs.

thanks
-- PMM
diff mbox series

Patch

diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
index ec0b9c0df3..ce5a4682cd 100644
--- a/linux-user/ppc/signal.c
+++ b/linux-user/ppc/signal.c
@@ -229,7 +229,7 @@  static void save_user_regs(CPUPPCState *env, struct target_mcontext *frame)
 {
     target_ulong msr = env->msr;
     int i;
-    target_ulong ccr = 0;
+    uint32_t ccr = 0;
 
     /* In general, the kernel attempts to be intelligent about what it
        needs to save for Altivec/FP/SPE registers.  We don't care that