Message ID | 86b72f0c134367b214910b27b9a6dd3321af93bb.1565774657.git.christophe.leroy@c-s.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 38a0d0cdb46d3f91534e5b9839ec2d67be14c59d |
Headers | show |
Series | powerpc/futex: fix warning: 'oldval' may be used uninitialized in this function | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch next (da206bd46848568e1aaf35f00e2d78bf9bc94f95) |
snowpatch_ozlabs/build-ppc64le | success | Build succeeded |
snowpatch_ozlabs/build-ppc64be | success | Build succeeded |
snowpatch_ozlabs/build-ppc64e | success | Build succeeded |
snowpatch_ozlabs/build-pmac32 | success | Build succeeded |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 9 lines checked |
Christophe Leroy <christophe.leroy@c-s.fr> writes: > CC kernel/futex.o > kernel/futex.c: In function 'do_futex': > kernel/futex.c:1676:17: warning: 'oldval' may be used uninitialized in this function [-Wmaybe-uninitialized] > return oldval == cmparg; > ^ > kernel/futex.c:1651:6: note: 'oldval' was declared here > int oldval, ret; > ^ > > This is because arch_futex_atomic_op_inuser() only sets *oval > if ret is NUL and GCC doesn't see that it will use it only when I prefer 0 to "NUL", as ret is an int. I'll reword it. But otherwise this looks OK. cheers > ret is NUL. > > Anyway, the non-NUL ret path is an error path that won't suffer from > setting *oval, and as *oval is a local var in futex_atomic_op_inuser() > it will have no impact. > > Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> > --- > arch/powerpc/include/asm/futex.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/arch/powerpc/include/asm/futex.h b/arch/powerpc/include/asm/futex.h > index 3a6aa57b9d90..eea28ca679db 100644 > --- a/arch/powerpc/include/asm/futex.h > +++ b/arch/powerpc/include/asm/futex.h > @@ -60,8 +60,7 @@ static inline int arch_futex_atomic_op_inuser(int op, int oparg, int *oval, > > pagefault_enable(); > > - if (!ret) > - *oval = oldval; > + *oval = oldval; > > prevent_write_to_user(uaddr, sizeof(*uaddr)); > return ret; > -- > 2.13.3
On Wed, 2019-08-14 at 09:25:52 UTC, Christophe Leroy wrote: > CC kernel/futex.o > kernel/futex.c: In function 'do_futex': > kernel/futex.c:1676:17: warning: 'oldval' may be used uninitialized in this function [-Wmaybe-uninitialized] > return oldval == cmparg; > ^ > kernel/futex.c:1651:6: note: 'oldval' was declared here > int oldval, ret; > ^ > > This is because arch_futex_atomic_op_inuser() only sets *oval > if ret is NUL and GCC doesn't see that it will use it only when > ret is NUL. > > Anyway, the non-NUL ret path is an error path that won't suffer from > setting *oval, and as *oval is a local var in futex_atomic_op_inuser() > it will have no impact. > > Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/38a0d0cdb46d3f91534e5b9839ec2d67be14c59d cheers
diff --git a/arch/powerpc/include/asm/futex.h b/arch/powerpc/include/asm/futex.h index 3a6aa57b9d90..eea28ca679db 100644 --- a/arch/powerpc/include/asm/futex.h +++ b/arch/powerpc/include/asm/futex.h @@ -60,8 +60,7 @@ static inline int arch_futex_atomic_op_inuser(int op, int oparg, int *oval, pagefault_enable(); - if (!ret) - *oval = oldval; + *oval = oldval; prevent_write_to_user(uaddr, sizeof(*uaddr)); return ret;
CC kernel/futex.o kernel/futex.c: In function 'do_futex': kernel/futex.c:1676:17: warning: 'oldval' may be used uninitialized in this function [-Wmaybe-uninitialized] return oldval == cmparg; ^ kernel/futex.c:1651:6: note: 'oldval' was declared here int oldval, ret; ^ This is because arch_futex_atomic_op_inuser() only sets *oval if ret is NUL and GCC doesn't see that it will use it only when ret is NUL. Anyway, the non-NUL ret path is an error path that won't suffer from setting *oval, and as *oval is a local var in futex_atomic_op_inuser() it will have no impact. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/include/asm/futex.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)