Buildresult: powerpc-fixes/mpc85xx_defconfig/powerpc-gcc5 built on Aug 19 2021, 13:04
kisskb
Revisions
|
Branches
|
Compilers
|
Configs
|
Build Results
|
Build Failures
|
Status:
OK
Date/Time:
Aug 19 2021, 13:04
Duration:
0:04:57.544962
Builder:
ka3
Revision:
powerpc/mm: Fix set_memory_*() against concurrent accesses (
9f7853d7609d59172eecfc5e7ccf503bc1b690bd)
Target:
powerpc-fixes/mpc85xx_defconfig/powerpc-gcc5
Branch:
powerpc-fixes
Compiler:
powerpc-gcc5
(powerpc64-linux-gcc (GCC) 5.5.0 / GNU ld (GNU Binutils) 2.29.1.20170915)
Config:
mpc85xx_defconfig
(
download
)
Log:
Download original
Possible warnings (3)
include/linux/err.h:22:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] arch/powerpc/boot/dts/fsl/mpc8541cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0) arch/powerpc/boot/dts/fsl/mpc8555cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0)
Full Log
# git rev-parse -q --verify 9f7853d7609d59172eecfc5e7ccf503bc1b690bd^{commit} 9f7853d7609d59172eecfc5e7ccf503bc1b690bd already have revision, skipping fetch # git checkout -q -f -B kisskb 9f7853d7609d59172eecfc5e7ccf503bc1b690bd # git clean -qxdf # < git log -1 # commit 9f7853d7609d59172eecfc5e7ccf503bc1b690bd # Author: Michael Ellerman <mpe@ellerman.id.au> # Date: Sun Aug 15 14:10:24 2021 +1000 # # powerpc/mm: Fix set_memory_*() against concurrent accesses # # Laurent reported that STRICT_MODULE_RWX was causing intermittent crashes # on one of his systems: # # kernel tried to execute exec-protected page (c008000004073278) - exploit attempt? (uid: 0) # BUG: Unable to handle kernel instruction fetch # Faulting instruction address: 0xc008000004073278 # Oops: Kernel access of bad area, sig: 11 [#1] # LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries # Modules linked in: drm virtio_console fuse drm_panel_orientation_quirks ... # CPU: 3 PID: 44 Comm: kworker/3:1 Not tainted 5.14.0-rc4+ #12 # Workqueue: events control_work_handler [virtio_console] # NIP: c008000004073278 LR: c008000004073278 CTR: c0000000001e9de0 # REGS: c00000002e4ef7e0 TRAP: 0400 Not tainted (5.14.0-rc4+) # MSR: 800000004280b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE> CR: 24002822 XER: 200400cf # ... # NIP fill_queue+0xf0/0x210 [virtio_console] # LR fill_queue+0xf0/0x210 [virtio_console] # Call Trace: # fill_queue+0xb4/0x210 [virtio_console] (unreliable) # add_port+0x1a8/0x470 [virtio_console] # control_work_handler+0xbc/0x1e8 [virtio_console] # process_one_work+0x290/0x590 # worker_thread+0x88/0x620 # kthread+0x194/0x1a0 # ret_from_kernel_thread+0x5c/0x64 # # Jordan, Fabiano & Murilo were able to reproduce and identify that the # problem is caused by the call to module_enable_ro() in do_init_module(), # which happens after the module's init function has already been called. # # Our current implementation of change_page_attr() is not safe against # concurrent accesses, because it invalidates the PTE before flushing the # TLB and then installing the new PTE. That leaves a window in time where # there is no valid PTE for the page, if another CPU tries to access the # page at that time we see something like the fault above. # # We can't simply switch to set_pte_at()/flush TLB, because our hash MMU # code doesn't handle a set_pte_at() of a valid PTE. See [1]. # # But we do have pte_update(), which replaces the old PTE with the new, # meaning there's no window where the PTE is invalid. And the hash MMU # version hash__pte_update() deals with synchronising the hash page table # correctly. # # [1]: https://lore.kernel.org/linuxppc-dev/87y318wp9r.fsf@linux.ibm.com/ # # Fixes: 1f9ad21c3b38 ("powerpc/mm: Implement set_memory() routines") # Reported-by: Laurent Vivier <lvivier@redhat.com> # Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> # Reviewed-by: Murilo Opsfelder Araújo <muriloo@linux.ibm.com> # Tested-by: Laurent Vivier <lvivier@redhat.com> # Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com> # Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> # Link: https://lore.kernel.org/r/20210818120518.3603172-1-mpe@ellerman.id.au # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 9f7853d7609d59172eecfc5e7ccf503bc1b690bd # < make -s -j 10 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc85xx_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- mpc85xx_defconfig # < make -s -j 10 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc85xx_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 10 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc85xx_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig # make -s -j 10 ARCH=powerpc O=/kisskb/build/powerpc-fixes_mpc85xx_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- In file included from /kisskb/src/include/linux/kernel.h:11:0, from /kisskb/src/include/linux/list.h:9, from /kisskb/src/include/linux/module.h:12, from /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c:15: /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c: In function 'allocate_bd': /kisskb/src/include/linux/err.h:22:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO) ^ /kisskb/src/include/linux/compiler.h:78:42: note: in definition of macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ /kisskb/src/drivers/net/ethernet/freescale/fs_enet/mac-scc.c:139:6: note: in expansion of macro 'IS_ERR_VALUE' if (IS_ERR_VALUE(fep->ring_mem_addr)) ^ /kisskb/src/arch/powerpc/boot/dts/fsl/mpc8541cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0) /kisskb/src/arch/powerpc/boot/dts/fsl/mpc8555cds.dts:330.3-21: Warning (pci_device_bus_num): /pci@e0008000/i8259@19000:bus-range: PCI bus number 1 out of range, expected (0 - 0) Completed OK # rm -rf /kisskb/build/powerpc-fixes_mpc85xx_defconfig_powerpc-gcc5 # Build took: 0:04:57.544962
© Michael Ellerman 2006-2018.