# git rev-parse -q --verify b39ab98e2f4728d98973fd1bc531e3c4cbccb21c^{commit} b39ab98e2f4728d98973fd1bc531e3c4cbccb21c already have revision, skipping fetch # git checkout -q -f -B kisskb b39ab98e2f4728d98973fd1bc531e3c4cbccb21c # git clean -qxdf # git log -1 commit b39ab98e2f4728d98973fd1bc531e3c4cbccb21c Author: Linus Torvalds Date: Mon Oct 30 10:09:56 2017 -0700 Mark 'ioremap_page_range()' as possibly sleeping It turns out that some drivers seem to think it's ok to remap page ranges from within interrupts and even NMI's. That is definitely not the case, since the page table build-up is simply not interrupt-safe. This showed up in the zero-day robot that reported it for the ACPI APEI GHES ("Generic Hardware Error Source") driver. Normally it had been hidden by the fact that no page table operations had been needed because the vmalloc area had been set up by other things. Apparently due to a recent change to the GHEI driver: commit 77b246b32b2c ("acpi: apei: check for pending errors when probing GHES entries") 0day actually caught a case during bootup whenthe ioremap called down to page allocation. But that recent change only showed the symptom, it wasn't the root cause of the problem. Hopefully it is limited to just that one driver. If you need to access random physical memory, you either need to ioremap in process context, or you need to use the FIXMAP facility to set one particular fixmap entry to the required mapping - that can be done safely. Cc: Borislav Petkov Cc: Len Brown Cc: Tony Luck Cc: Fengguang Wu Cc: Tyler Baicar Cc: Will Deacon Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/br-xtensa-full-2016.08-613-ge98b4dd/bin/xtensa-linux-gcc --version # < git log --format=%s --max-count=1 b39ab98e2f4728d98973fd1bc531e3c4cbccb21c # < make -j 48 ARCH=xtensa O=/home/kisskb/slave/build/linus_xtensa-allnoconfig_xtensa CROSS_COMPILE=/opt/cross/kisskb/br-xtensa-full-2016.08-613-ge98b4dd/bin/xtensa-linux- allnoconfig # make -j 48 ARCH=xtensa O=/home/kisskb/slave/build/linus_xtensa-allnoconfig_xtensa CROSS_COMPILE=/opt/cross/kisskb/br-xtensa-full-2016.08-613-ge98b4dd/bin/xtensa-linux- make[1]: Entering directory '/home/kisskb/slave/build/linus_xtensa-allnoconfig_xtensa' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release GEN ./Makefile UPD include/config/kernel.release CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h WRAP arch/xtensa/include/generated/uapi/asm/bitsperlong.h WRAP arch/xtensa/include/generated/uapi/asm/errno.h WRAP arch/xtensa/include/generated/uapi/asm/fcntl.h WRAP arch/xtensa/include/generated/uapi/asm/resource.h WRAP arch/xtensa/include/generated/uapi/asm/ioctl.h WRAP arch/xtensa/include/generated/uapi/asm/siginfo.h WRAP arch/xtensa/include/generated/uapi/asm/kvm_para.h WRAP arch/xtensa/include/generated/uapi/asm/statfs.h WRAP arch/xtensa/include/generated/uapi/asm/termios.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h Using /home/kisskb/slave/src as source for kernel WRAP arch/xtensa/include/generated/asm/bug.h WRAP arch/xtensa/include/generated/asm/clkdev.h WRAP arch/xtensa/include/generated/asm/emergency-restart.h WRAP arch/xtensa/include/generated/asm/device.h WRAP arch/xtensa/include/generated/asm/exec.h WRAP arch/xtensa/include/generated/asm/fb.h WRAP arch/xtensa/include/generated/asm/div64.h WRAP arch/xtensa/include/generated/asm/extable.h WRAP arch/xtensa/include/generated/asm/hardirq.h WRAP arch/xtensa/include/generated/asm/dma-contiguous.h WRAP arch/xtensa/include/generated/asm/kdebug.h WRAP arch/xtensa/include/generated/asm/irq_regs.h WRAP arch/xtensa/include/generated/asm/kmap_types.h WRAP arch/xtensa/include/generated/asm/irq_work.h WRAP arch/xtensa/include/generated/asm/linkage.h WRAP arch/xtensa/include/generated/asm/mcs_spinlock.h WRAP arch/xtensa/include/generated/asm/local.h WRAP arch/xtensa/include/generated/asm/mm-arch-hooks.h WRAP arch/xtensa/include/generated/asm/local64.h WRAP arch/xtensa/include/generated/asm/percpu.h WRAP arch/xtensa/include/generated/asm/param.h WRAP arch/xtensa/include/generated/asm/preempt.h WRAP arch/xtensa/include/generated/asm/rwsem.h WRAP arch/xtensa/include/generated/asm/kprobes.h WRAP arch/xtensa/include/generated/asm/sections.h WRAP arch/xtensa/include/generated/asm/topology.h WRAP arch/xtensa/include/generated/asm/trace_clock.h WRAP arch/xtensa/include/generated/asm/word-at-a-time.h WRAP arch/xtensa/include/generated/asm/xor.h HOSTCC scripts/sortextable CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig CC scripts/mod/devicetable-offsets.s CHK scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h UPD scripts/mod/devicetable-offsets.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTCC scripts/mod/file2alias.o HOSTLD scripts/mod/modpost CHK include/generated/timeconst.h CC kernel/bounds.s UPD include/generated/timeconst.h CHK include/generated/bounds.h UPD include/generated/bounds.h CC arch/xtensa/kernel/asm-offsets.s CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh CC init/main.o CHK include/generated/compile.h AR usr/built-in.o CC init/do_mounts.o CC init/noinitramfs.o CC init/init_task.o AS arch/xtensa/kernel/align.o AS arch/xtensa/kernel/coprocessor.o AS arch/xtensa/kernel/entry.o UPD include/generated/compile.h CC arch/xtensa/kernel/irq.o CC arch/xtensa/kernel/platform.o CC arch/xtensa/kernel/pci-dma.o CC arch/xtensa/kernel/process.o CC arch/xtensa/kernel/ptrace.o CC arch/xtensa/mm/fault.o CC arch/xtensa/kernel/syscall.o CC arch/xtensa/kernel/traps.o CC arch/xtensa/kernel/stacktrace.o AS arch/xtensa/mm/misc.o CC arch/xtensa/kernel/time.o CC arch/xtensa/kernel/setup.o CC init/version.o CC arch/xtensa/mm/ioremap.o LDS arch/xtensa/kernel/vmlinux.lds AS arch/xtensa/kernel/head.o CC arch/xtensa/mm/mmu.o CC arch/xtensa/mm/init.o AS arch/xtensa/kernel/vectors.o CC arch/xtensa/mm/tlb.o CC arch/xtensa/mm/cache.o CC arch/xtensa/kernel/signal.o CC arch/xtensa/platforms/iss/setup.o AR certs/built-in.o CC kernel/exit.o CC kernel/cpu.o CC kernel/panic.o CC kernel/softirq.o CC kernel/fork.o CC kernel/exec_domain.o CC kernel/resource.o CC kernel/sysctl_binary.o CC kernel/capability.o CC kernel/user.o CC kernel/sysctl.o CC kernel/ptrace.o CC kernel/signal.o CC kernel/kthread.o CC kernel/workqueue.o CC kernel/umh.o CC kernel/pid.o CC kernel/sys.o CC kernel/task_work.o CC kernel/params.o CC kernel/extable.o CC kernel/nsproxy.o CC kernel/sys_ni.o AR ipc/built-in.o CC kernel/notifier.o CC kernel/ksysfs.o CC kernel/reboot.o CC kernel/cred.o CC kernel/async.o CC kernel/smpboot.o CC kernel/ucount.o AR arch/xtensa/platforms/iss/built-in.o CC kernel/range.o AR kernel/livepatch/built-in.o CC security/commoncap.o CC kernel/power/qos.o CC kernel/printk/printk.o CC kernel/locking/mutex.o CC kernel/irq/irqdesc.o CC kernel/rcu/update.o CC mm/filemap.o CC kernel/rcu/sync.o CC kernel/locking/semaphore.o CC mm/mempool.o AR crypto/built-in.o CC kernel/up.o AR block/built-in.o CC kernel/sched/core.o CC kernel/memremap.o CC kernel/rcu/srcutiny.o CC fs/open.o CC fs/read_write.o CC kernel/rcu/tiny.o CC kernel/sched/loadavg.o CC fs/file_table.o AR arch/xtensa/mm/built-in.o CC fs/super.o AR arch/xtensa/kernel/built-in.o CC fs/char_dev.o CC fs/stat.o CC kernel/irq/handle.o CC kernel/time/time.o CC fs/exec.o CC kernel/time/timer.o CC kernel/time/hrtimer.o AR sound/built-in.o CC kernel/time/timekeeping.o CC security/min_addr.o CC kernel/time/ntp.o CC kernel/time/clocksource.o CC kernel/locking/rwsem.o CC kernel/time/jiffies.o CC kernel/time/timer_list.o CC kernel/time/timeconv.o CC kernel/time/timecounter.o CC kernel/time/alarmtimer.o CC kernel/irq/manage.o AR firmware/built-in.o CC kernel/time/posix-stubs.o AR init/mounts.o CC kernel/irq/spurious.o CC mm/oom_kill.o AR init/built-in.o CC kernel/irq/chip.o CC kernel/irq/resend.o CC kernel/time/clockevents.o CC kernel/time/tick-common.o CC fs/pipe.o CC kernel/time/sched_clock.o CC kernel/irq/dummychip.o CC fs/namei.o AR kernel/rcu/built-in.o CC kernel/irq/devres.o CC fs/fcntl.o CC fs/ioctl.o CC fs/readdir.o CC fs/select.o CC fs/dcache.o AR net/built-in.o CC kernel/irq/irqdomain.o CC kernel/locking/percpu-rwsem.o CC kernel/locking/rwsem-xadd.o CC fs/inode.o CC fs/bad_inode.o CC fs/attr.o CC fs/file.o CC fs/filesystems.o AR security/built-in.o AR kernel/printk/built-in.o CC mm/maccess.o CC kernel/sched/clock.o CC fs/namespace.o CC fs/seq_file.o AS arch/xtensa/lib/checksum.o AR kernel/power/built-in.o AS arch/xtensa/lib/memcopy.o AS arch/xtensa/lib/memset.o CC kernel/sched/cputime.o AS arch/xtensa/lib/strncpy_user.o CC kernel/sched/idle_task.o AR drivers/amba/built-in.o CC fs/xattr.o CC kernel/sched/deadline.o CC kernel/sched/rt.o CC kernel/sched/fair.o CC kernel/sched/wait.o AS arch/xtensa/lib/strnlen_user.o AS arch/xtensa/lib/usercopy.o AR drivers/auxdisplay/built-in.o AR virt/lib/built-in.o AR kernel/locking/built-in.o AR virt/built-in.o CC kernel/sched/wait_bit.o CC fs/fs-writeback.o AR arch/xtensa/lib/lib.a CC kernel/sched/swait.o CC fs/libfs.o CC fs/pnode.o CC fs/splice.o EXPORTS arch/xtensa/lib/lib-ksyms.o CC fs/sync.o CC kernel/sched/completion.o CC fs/utimes.o AR drivers/block/built-in.o CC mm/page_alloc.o CC kernel/sched/idle.o CC mm/page-writeback.o AR drivers/bus/built-in.o AR arch/xtensa/lib/built-in.o CC fs/stack.o CC fs/fs_struct.o AR drivers/cdrom/built-in.o CC fs/statfs.o CC fs/fs_pin.o CC fs/nsfs.o CC fs/no-block.o CC lib/lockref.o CC drivers/base/component.o AR drivers/char/ipmi/built-in.o AR fs/devpts/built-in.o AR fs/exofs/built-in.o CC drivers/char/mem.o CC drivers/char/misc.o CC drivers/char/random.o CC drivers/base/core.o AR drivers/clocksource/built-in.o CC drivers/base/bus.o CC drivers/base/syscore.o CC drivers/base/dd.o AR drivers/firewire/built-in.o CC mm/readahead.o AR drivers/char/agp/built-in.o AR kernel/irq/built-in.o CC lib/bcd.o AR fs/quota/built-in.o CC lib/div64.o CC drivers/base/driver.o CC mm/swap.o CC fs/ramfs/inode.o AR fs/notify/dnotify/built-in.o AR drivers/hwtracing/intel_th/built-in.o AR fs/notify/fanotify/built-in.o AR drivers/idle/built-in.o CC drivers/clk/clk-bulk.o CC drivers/clk/clk-devres.o CC lib/sort.o CC drivers/irqchip/irq-xtensa-pic.o AR drivers/i2c/algos/built-in.o AR drivers/i2c/busses/built-in.o CC lib/parser.o AR drivers/i2c/muxes/built-in.o CC lib/debug_locks.o AR drivers/firmware/broadcom/built-in.o CC drivers/clk/clkdev.o AR drivers/macintosh/built-in.o CC lib/random32.o AR fs/notify/inotify/built-in.o CC lib/bust_spinlocks.o AR drivers/firmware/meson/built-in.o CC fs/ramfs/file-mmu.o AR drivers/i2c/built-in.o AR drivers/gpu/drm/hisilicon/built-in.o AR drivers/firmware/tegra/built-in.o AR fs/notify/built-in.o CC lib/kasprintf.o AR drivers/gpu/drm/bridge/synopsys/built-in.o AR drivers/mfd/built-in.o AR drivers/gpu/drm/i2c/built-in.o AR drivers/gpu/drm/panel/built-in.o AR drivers/gpu/drm/bridge/built-in.o AR drivers/firmware/built-in.o AR drivers/gpu/drm/omapdrm/displays/built-in.o CC drivers/base/class.o AR drivers/gpu/vga/built-in.o AR drivers/mmc/built-in.o AR drivers/gpu/drm/omapdrm/dss/built-in.o CC drivers/base/platform.o CC lib/bitmap.o AR drivers/gpu/drm/tilcdc/built-in.o CC drivers/clk/clk.o CC lib/scatterlist.o AR drivers/nfc/built-in.o AR drivers/pci/dwc/built-in.o AR drivers/misc/cb710/built-in.o AR drivers/gpu/drm/omapdrm/built-in.o AR drivers/net/phy/built-in.o AR drivers/misc/eeprom/built-in.o AR drivers/misc/lis3lv02d/built-in.o CC drivers/base/init.o CC drivers/base/firmware.o CC drivers/base/cpu.o CC drivers/base/devres.o CC drivers/base/map.o CC mm/truncate.o CC lib/gcd.o CC lib/lcm.o AR drivers/platform/built-in.o AR drivers/misc/ti-st/built-in.o AR drivers/nvme/host/built-in.o AR drivers/power/built-in.o AR drivers/gpu/drm/built-in.o AR drivers/net/built-in.o AR drivers/nvme/target/built-in.o AR drivers/ptp/built-in.o AR drivers/misc/mic/bus/built-in.o CC drivers/clk/clk-divider.o CC drivers/base/transport_class.o CC drivers/base/attribute_container.o AR drivers/pwm/built-in.o CC drivers/base/topology.o CC drivers/clk/clk-fixed-rate.o AR drivers/nvme/built-in.o CC drivers/clk/clk-fixed-factor.o AR drivers/misc/mic/built-in.o CC drivers/clk/clk-gate.o CC mm/shmem.o CC mm/vmscan.o CC mm/util.o CC drivers/clk/clk-multiplier.o CC drivers/clk/clk-mux.o CC drivers/base/cacheinfo.o CC drivers/base/container.o CC drivers/base/property.o AR drivers/irqchip/built-in.o AR drivers/misc/built-in.o CC drivers/clk/clk-composite.o AR drivers/video/backlight/built-in.o AR drivers/media/common/b2c2/built-in.o CC drivers/clk/clk-fractional-divider.o AR drivers/gpu/built-in.o CC drivers/clk/clk-gpio.o AR drivers/soc/bcm/built-in.o AR drivers/media/common/saa7146/built-in.o AR kernel/time/built-in.o AR fs/ramfs/ramfs.o AR drivers/clk/bcm/built-in.o AR fs/ramfs/built-in.o AR drivers/tty/ipwireless/built-in.o CC lib/list_sort.o AR kernel/sched/built-in.o CC mm/mmzone.o AR drivers/tty/serial/built-in.o AR drivers/tty/vt/built-in.o CC mm/vmstat.o AR drivers/soc/fsl/built-in.o AR kernel/built-in.o AR drivers/soc/renesas/built-in.o AR drivers/clk/imgtec/built-in.o AR drivers/char/built-in.o AR drivers/clk/mvebu/built-in.o AR fs/built-in.o AR drivers/video/fbdev/core/built-in.o AR drivers/media/common/siano/built-in.o CC drivers/base/power/clock_ops.o AR drivers/tty/built-in.o AR drivers/media/common/v4l2-tpg/built-in.o AR drivers/media/firewire/built-in.o AR drivers/media/mmc/siano/built-in.o AR drivers/clk/renesas/built-in.o CC mm/backing-dev.o AR drivers/soc/built-in.o AR drivers/media/mmc/built-in.o AR drivers/clk/ti/built-in.o CC lib/uuid.o AR drivers/media/i2c/soc_camera/built-in.o AR drivers/media/spi/built-in.o AR drivers/media/common/built-in.o AR drivers/media/tuners/built-in.o CC lib/flex_array.o CC lib/iov_iter.o CC mm/mm_init.o AR drivers/media/rc/keymaps/built-in.o CC mm/mmu_context.o AR drivers/media/i2c/built-in.o AR drivers/media/platform/blackfin/built-in.o CC mm/percpu.o AR drivers/media/platform/davinci/built-in.o AR drivers/base/test/built-in.o AR drivers/media/rc/built-in.o CC lib/clz_ctz.o AR drivers/media/platform/meson/built-in.o CC drivers/base/dma-mapping.o CC mm/slab_common.o AR drivers/video/fbdev/omap2/omapfb/displays/built-in.o AR drivers/media/platform/omap/built-in.o CC mm/compaction.o AR drivers/media/platform/stm32/built-in.o CC lib/bsearch.o CC mm/swap_slots.o CC mm/vmacache.o CC lib/find_bit.o AR drivers/video/fbdev/omap2/omapfb/dss/built-in.o CC mm/interval_tree.o CC mm/workingset.o CC mm/list_lru.o CC lib/llist.o CC lib/kfifo.o CC lib/memweight.o CC mm/debug.o AR drivers/media/platform/built-in.o CC lib/percpu-refcount.o AR drivers/video/fbdev/omap2/omapfb/built-in.o CC lib/percpu_ida.o CC mm/gup.o CC mm/highmem.o CC lib/rhashtable.o AR drivers/media/pci/ddbridge/built-in.o AR drivers/media/pci/b2c2/built-in.o CC lib/reciprocal_div.o AR drivers/media/pci/dm1105/built-in.o CC mm/memory.o AR drivers/video/fbdev/omap2/built-in.o AR drivers/media/usb/b2c2/built-in.o AR drivers/media/usb/dvb-usb/built-in.o AR drivers/media/pci/mantis/built-in.o CC lib/once.o AR drivers/media/pci/netup_unidvb/built-in.o AR drivers/media/pci/ngene/built-in.o AR drivers/media/usb/dvb-usb-v2/built-in.o CC lib/refcount.o CC mm/mlock.o CC mm/mincore.o AR drivers/base/power/built-in.o AR drivers/video/fbdev/built-in.o AR drivers/media/pci/pluto2/built-in.o AR drivers/media/usb/siano/built-in.o AR drivers/media/usb/ttusb-budget/built-in.o AR drivers/media/usb/s2255/built-in.o CC lib/usercopy.o AR drivers/media/usb/stkwebcam/built-in.o AR drivers/clk/built-in.o AR drivers/media/pci/pt3/built-in.o CC mm/mprotect.o CC mm/mmap.o AR drivers/media/pci/pt1/built-in.o CC mm/mremap.o AR drivers/media/pci/saa7146/built-in.o AR drivers/video/built-in.o AR drivers/media/usb/ttusb-dec/built-in.o CC lib/string_helpers.o CC mm/msync.o CC lib/hexdump.o AR drivers/media/usb/zr364xx/built-in.o CC lib/errseq.o CC mm/page_vma_mapped.o CC mm/pagewalk.o AR drivers/media/pci/smipcie/built-in.o AR drivers/media/pci/ttpci/built-in.o CC mm/rmap.o CC lib/kstrtox.o CC mm/pgtable-generic.o CC mm/vmalloc.o CC lib/devres.o CC lib/pci_iomap.o CC lib/iomap_copy.o AR drivers/media/pci/built-in.o AR drivers/media/usb/built-in.o CC mm/init-mm.o CC mm/nobootmem.o CC lib/hweight.o CC lib/atomic64.o CC mm/memblock.o CC lib/rational.o CC lib/argv_split.o CC lib/chacha20.o CC mm/dmapool.o CC mm/slub.o CC lib/dec_and_lock.o CC lib/ctype.o CC lib/cmdline.o CC lib/decompress.o CC lib/dump_stack.o CC lib/earlycpio.o CC lib/extable.o CC lib/flex_proportions.o CC lib/idr.o CC lib/ioremap.o CC lib/int_sqrt.o AR drivers/media/built-in.o CC lib/is_single_threaded.o CC lib/irq_regs.o CC lib/klist.o CC lib/kobject.o CC lib/kobject_uevent.o CC lib/nmi_backtrace.o CC lib/nodemask.o CC lib/ratelimit.o CC lib/plist.o CC lib/radix-tree.o CC lib/rbtree.o CC lib/sha1.o CC lib/seq_buf.o CC lib/show_mem.o CC lib/siphash.o CC lib/timerqueue.o CC lib/vsprintf.o CC lib/string.o CC lib/win_minmax.o AR drivers/base/built-in.o AR drivers/built-in.o AR mm/built-in.o AR lib/lib.a EXPORTS lib/lib-ksyms.o AR lib/built-in.o GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o AR init/built-in.o AR built-in.o LD vmlinux.o MODPOST vmlinux.o LD vmlinux SORTEX vmlinux SYSMAP System.map OBJCOPY vmlinux.bin COPY arch/xtensa/boot/lib/inffast.c COPY arch/xtensa/boot/lib/inflate.c COPY arch/xtensa/boot/lib/inftrees.c CC arch/xtensa/boot/lib/zmem.o CC arch/xtensa/boot/lib/inffast.o CC arch/xtensa/boot/lib/inflate.o CC arch/xtensa/boot/lib/inftrees.o AR arch/xtensa/boot/lib/lib.a EXPORTS arch/xtensa/boot/lib/lib-ksyms.o AR arch/xtensa/boot/lib/built-in.o AS arch/xtensa/boot/boot-elf/bootstrap.o LDS arch/xtensa/boot/boot-elf/boot.lds Kernel: arch/xtensa/boot/boot-elf/../Image.elf is ready make[1]: Leaving directory '/home/kisskb/slave/build/linus_xtensa-allnoconfig_xtensa' Completed OK # rm -rf /home/kisskb/slave/build/linus_xtensa-allnoconfig_xtensa # Build took: 0:00:15.054763