[PATCH 0/3] trivial: Fix several compilation errors/warnings with GCC12

Christophe de Dinechin posted 3 patches 4 years ago
drivers/virtio/virtio_pci_common.c |  2 +-
include/linux/nodemask.h           | 13 ++++++-------
kernel/sched/sched.h               | 11 +++++++++--
3 files changed, 16 insertions(+), 10 deletions(-)
[PATCH 0/3] trivial: Fix several compilation errors/warnings with GCC12
Posted by Christophe de Dinechin 4 years ago
Compiling with GCC 12 using defconfig generates a number of build errors
due to new warnings, notably array-bounds checks. Some of these warnings appear
legitimate and relatively easy to fix.

Note that this series is not sufficient for a clean build yet. There are
in particular a number of warnings reported by the array-bounds check
that appear bogus, like:

| In function ‘__native_read_cr3’,
|     inlined from ‘__read_cr3’
|         at ./arch/x86/include/asm/special_insns.h:169:9,
|     inlined from ‘read_cr3_pa’
|         at ./arch/x86/include/asm/processor.h:252:9,
|     inlined from ‘relocate_restore_code’
|         at arch/x86/power/hibernate.c:165:17:
| ./arch/x86/include/asm/special_insns.h:48:9: error:
|    array subscript 0 is outside array bounds of ‘unsigned int[0]’
|    [-Werror=array-bounds]
|    48 | asm volatile("mov %%cr3,%0\n\t" : "=r" (val) : __FORCE_ORDER);
|       | ^~~
| cc1: all warnings being treated as errors

The error above is for an instruction that does not obviously address any
C array, in particular since the asm constraint is "=r" and not "=rm".

Consequently, the series here only addresses a few low hanging fruits that
appear legitimate and relatively easy to fix.

Christophe de Dinechin (3):
  sched/headers: Fix compilation error with GCC 12
  nodemask.h: Fix compilation error with GCC12
  virtio-pci: Use cpumask_available to fix compilation error

 drivers/virtio/virtio_pci_common.c |  2 +-
 include/linux/nodemask.h           | 13 ++++++-------
 kernel/sched/sched.h               | 11 +++++++++--
 3 files changed, 16 insertions(+), 10 deletions(-)

-- 
2.35.1

Re: [PATCH 0/3] trivial: Fix several compilation errors/warnings with GCC12
Posted by Davidlohr Bueso 3 years, 12 months ago
Hello - What is the status of this? Currently gcc 12 (tumbleweed) is unable to
build Linus' latest because of splats in the scheduler headers...

Thanks,
Davidlohr

On Thu, 14 Apr 2022, Christophe de Dinechin wrote:

>Compiling with GCC 12 using defconfig generates a number of build errors
>due to new warnings, notably array-bounds checks. Some of these warnings appear
>legitimate and relatively easy to fix.
>
>Note that this series is not sufficient for a clean build yet. There are
>in particular a number of warnings reported by the array-bounds check
>that appear bogus, like:
>
>| In function ???__native_read_cr3???,
>|     inlined from ???__read_cr3???
>|         at ./arch/x86/include/asm/special_insns.h:169:9,
>|     inlined from ???read_cr3_pa???
>|         at ./arch/x86/include/asm/processor.h:252:9,
>|     inlined from ???relocate_restore_code???
>|         at arch/x86/power/hibernate.c:165:17:
>| ./arch/x86/include/asm/special_insns.h:48:9: error:
>|    array subscript 0 is outside array bounds of ???unsigned int[0]???
>|    [-Werror=array-bounds]
>|    48 | asm volatile("mov %%cr3,%0\n\t" : "=r" (val) : __FORCE_ORDER);
>|       | ^~~
>| cc1: all warnings being treated as errors
>
>The error above is for an instruction that does not obviously address any
>C array, in particular since the asm constraint is "=r" and not "=rm".
>
>Consequently, the series here only addresses a few low hanging fruits that
>appear legitimate and relatively easy to fix.
>
>Christophe de Dinechin (3):
>  sched/headers: Fix compilation error with GCC 12
>  nodemask.h: Fix compilation error with GCC12
>  virtio-pci: Use cpumask_available to fix compilation error
>
> drivers/virtio/virtio_pci_common.c |  2 +-
> include/linux/nodemask.h           | 13 ++++++-------
> kernel/sched/sched.h               | 11 +++++++++--
> 3 files changed, 16 insertions(+), 10 deletions(-)
>
>--
>2.35.1
>
>