# git rev-parse -q --verify 5d1904204c99596b50a700f092fe49d78edba400^{commit} 5d1904204c99596b50a700f092fe49d78edba400 already have revision, skipping fetch # git checkout -q -f -B kisskb 5d1904204c99596b50a700f092fe49d78edba400 # git clean -qxdf # git log -1 commit 5d1904204c99596b50a700f092fe49d78edba400 Author: Aaron Lu Date: Thu Nov 10 17:16:33 2016 +0800 mremap: fix race between mremap() and page cleanning Prior to 3.15, there was a race between zap_pte_range() and page_mkclean() where writes to a page could be lost. Dave Hansen discovered by inspection that there is a similar race between move_ptes() and page_mkclean(). We've been able to reproduce the issue by enlarging the race window with a msleep(), but have not been able to hit it without modifying the code. So, we think it's a real issue, but is difficult or impossible to hit in practice. The zap_pte_range() issue is fixed by commit 1cf35d47712d("mm: split 'tlb_flush_mmu()' into tlb flushing and memory freeing parts"). And this patch is to fix the race between page_mkclean() and mremap(). Here is one possible way to hit the race: suppose a process mmapped a file with READ | WRITE and SHARED, it has two threads and they are bound to 2 different CPUs, e.g. CPU1 and CPU2. mmap returned X, then thread 1 did a write to addr X so that CPU1 now has a writable TLB for addr X on it. Thread 2 starts mremaping from addr X to Y while thread 1 cleaned the page and then did another write to the old addr X again. The 2nd write from thread 1 could succeed but the value will get lost. thread 1 thread 2 (bound to CPU1) (bound to CPU2) 1: write 1 to addr X to get a writeable TLB on this CPU 2: mremap starts 3: move_ptes emptied PTE for addr X and setup new PTE for addr Y and then dropped PTL for X and Y 4: page laundering for N by doing fadvise FADV_DONTNEED. When done, pageframe N is deemed clean. 5: *write 2 to addr X 6: tlb flush for addr X 7: munmap (Y, pagesize) to make the page unmapped 8: fadvise with FADV_DONTNEED again to kick the page off the pagecache 9: pread the page from file to verify the value. If 1 is there, it means we have lost the written 2. *the write may or may not cause segmentation fault, it depends on if the TLB is still on the CPU. Please note that this is only one specific way of how the race could occur, it didn't mean that the race could only occur in exact the above config, e.g. more than 2 threads could be involved and fadvise() could be done in another thread, etc. For anonymous pages, they could race between mremap() and page reclaim: THP: a huge PMD is moved by mremap to a new huge PMD, then the new huge PMD gets unmapped/splitted/pagedout before the flush tlb happened for the old huge PMD in move_page_tables() and we could still write data to it. The normal anonymous page has similar situation. To fix this, check for any dirty PTE in move_ptes()/move_huge_pmd() and if any, did the flush before dropping the PTL. If we did the flush for every move_ptes()/move_huge_pmd() call then we do not need to do the flush in move_pages_tables() for the whole range. But if we didn't, we still need to do the whole range flush. Alternatively, we can track which part of the range is flushed in move_ptes()/move_huge_pmd() and which didn't to avoid flushing the whole range in move_page_tables(). But that would require multiple tlb flushes for the different sub-ranges and should be less efficient than the single whole range flush. KBuild test on my Sandybridge desktop doesn't show any noticeable change. v4.9-rc4: real 5m14.048s user 32m19.800s sys 4m50.320s With this commit: real 5m13.888s user 32m19.330s sys 4m51.200s Reported-by: Dave Hansen Signed-off-by: Aaron Lu Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-gcc --version # < git log --format=%s --max-count=1 5d1904204c99596b50a700f092fe49d78edba400 # < make -j 10 ARCH=avr32 O=/home/kisskb/slave/build/linus_avr32-allnoconfig_avr32 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux- allnoconfig kernel/time/Kconfig:155:warning: range is invalid # make -j 10 ARCH=avr32 O=/home/kisskb/slave/build/linus_avr32-allnoconfig_avr32 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux- make[1]: Entering directory '/home/kisskb/slave/build/linus_avr32-allnoconfig_avr32' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig kernel/time/Kconfig:155:warning: range is invalid CHK include/config/kernel.release UPD include/config/kernel.release GEN ./Makefile WRAP arch/avr32/include/generated/asm/clkdev.h WRAP arch/avr32/include/generated/asm/cputime.h WRAP arch/avr32/include/generated/asm/delay.h WRAP arch/avr32/include/generated/asm/device.h WRAP arch/avr32/include/generated/asm/futex.h WRAP arch/avr32/include/generated/asm/irq_regs.h WRAP arch/avr32/include/generated/asm/div64.h WRAP arch/avr32/include/generated/asm/irq_work.h WRAP arch/avr32/include/generated/asm/local.h WRAP arch/avr32/include/generated/asm/emergency-restart.h WRAP arch/avr32/include/generated/asm/exec.h WRAP arch/avr32/include/generated/asm/local64.h WRAP arch/avr32/include/generated/asm/mcs_spinlock.h WRAP arch/avr32/include/generated/asm/mm-arch-hooks.h WRAP arch/avr32/include/generated/asm/param.h WRAP arch/avr32/include/generated/asm/percpu.h WRAP arch/avr32/include/generated/asm/preempt.h WRAP arch/avr32/include/generated/asm/sections.h WRAP arch/avr32/include/generated/asm/topology.h WRAP arch/avr32/include/generated/asm/trace_clock.h WRAP arch/avr32/include/generated/asm/vga.h WRAP arch/avr32/include/generated/asm/word-at-a-time.h WRAP arch/avr32/include/generated/asm/xor.h WRAP arch/avr32/include/generated/uapi/asm/bitsperlong.h WRAP arch/avr32/include/generated/uapi/asm/errno.h WRAP arch/avr32/include/generated/uapi/asm/fcntl.h WRAP arch/avr32/include/generated/uapi/asm/ioctl.h WRAP arch/avr32/include/generated/uapi/asm/ioctls.h WRAP arch/avr32/include/generated/uapi/asm/ipcbuf.h WRAP arch/avr32/include/generated/uapi/asm/kvm_para.h WRAP arch/avr32/include/generated/uapi/asm/mman.h WRAP arch/avr32/include/generated/uapi/asm/param.h WRAP arch/avr32/include/generated/uapi/asm/poll.h CHK include/generated/uapi/linux/version.h WRAP arch/avr32/include/generated/uapi/asm/resource.h WRAP arch/avr32/include/generated/uapi/asm/siginfo.h WRAP arch/avr32/include/generated/uapi/asm/statfs.h UPD include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h Using /home/kisskb/slave/src as source for kernel CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig CC scripts/mod/devicetable-offsets.s GEN scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/sumversion.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/avr32/kernel/asm-offsets.s CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh :1316:2: warning: #warning syscall pkey_mprotect not implemented :1319:2: warning: #warning syscall pkey_alloc not implemented :1322:2: warning: #warning syscall pkey_free not implemented CC init/main.o CHK include/generated/compile.h CC init/do_mounts.o CC init/noinitramfs.o CC init/calibrate.o CC init/init_task.o LD usr/built-in.o UPD include/generated/compile.h CC init/version.o CC arch/avr32/mach-at32ap/pdc.o CC arch/avr32/mach-at32ap/clock.o CC arch/avr32/mach-at32ap/intc.o CC arch/avr32/boards/atstk1000/setup.o CC arch/avr32/mach-at32ap/extint.o CC arch/avr32/mach-at32ap/pio.o CC arch/avr32/mach-at32ap/hsmc.o CC arch/avr32/mach-at32ap/hmatrix.o CC arch/avr32/mach-at32ap/at32ap700x.o AS arch/avr32/mach-at32ap/pm-at32ap700x.o CC arch/avr32/boards/atstk1000/flash.o CC arch/avr32/boards/atstk1000/atstk1002.o AS arch/avr32/boot/u-boot/empty.o AS arch/avr32/boot/u-boot/head.o LD arch/avr32/boot/u-boot/built-in.o AS arch/avr32/kernel/entry-avr32b.o AS arch/avr32/kernel/syscall_table.o AS arch/avr32/kernel/syscall-stubs.o CC arch/avr32/mm/init.o CC arch/avr32/kernel/irq.o CC arch/avr32/kernel/setup.o CC arch/avr32/kernel/traps.o AS arch/avr32/mm/clear_page.o CC arch/avr32/kernel/ocd.o AS arch/avr32/mm/copy_page.o CC arch/avr32/mm/dma-coherent.o CC kernel/fork.o LD init/mounts.o LD init/built-in.o CC arch/avr32/kernel/ptrace.o LD certs/built-in.o CC arch/avr32/kernel/signal.o CC arch/avr32/mm/ioremap.o CC mm/filemap.o CC arch/avr32/kernel/process.o CC arch/avr32/mm/cache.o LD arch/avr32/boards/atstk1000/built-in.o CC arch/avr32/mm/fault.o CC arch/avr32/mm/tlb.o LD arch/avr32/mach-at32ap/built-in.o CC arch/avr32/kernel/time.o CC kernel/exec_domain.o CC kernel/panic.o CC kernel/cpu.o CC kernel/exit.o CC kernel/softirq.o AS arch/avr32/kernel/switch_to.o CC arch/avr32/kernel/cpu.o LD arch/avr32/mm/built-in.o CC mm/mempool.o AS arch/avr32/kernel/head.o LDS arch/avr32/kernel/vmlinux.lds CC kernel/resource.o CC mm/oom_kill.o CC mm/maccess.o LD arch/avr32/kernel/built-in.o CC kernel/sysctl.o CC fs/open.o CC kernel/sysctl_binary.o CC kernel/capability.o CC kernel/ptrace.o CC mm/page_alloc.o CC kernel/user.o CC mm/page-writeback.o CC kernel/signal.o CC mm/readahead.o CC mm/swap.o LD ipc/built-in.o CC mm/truncate.o CC kernel/sys.o CC kernel/kmod.o CC kernel/workqueue.o CC fs/read_write.o CC mm/vmscan.o CC kernel/pid.o CC kernel/task_work.o CC mm/shmem.o CC kernel/extable.o CC kernel/params.o CC fs/file_table.o CC kernel/kthread.o CC kernel/sys_ni.o CC kernel/nsproxy.o CC kernel/notifier.o CC kernel/ksysfs.o CC kernel/cred.o CC fs/super.o CC kernel/reboot.o CC kernel/async.o CC fs/char_dev.o CC kernel/range.o CC kernel/smpboot.o CC kernel/ucount.o CC mm/util.o CC kernel/irq/irqdesc.o LD kernel/livepatch/built-in.o CC kernel/locking/mutex.o CC kernel/locking/semaphore.o CC kernel/locking/rwsem.o CC kernel/locking/percpu-rwsem.o CC kernel/locking/rwsem-spinlock.o CC fs/stat.o CC kernel/irq/handle.o CC mm/mmzone.o CC kernel/irq/manage.o CC kernel/power/qos.o CC kernel/irq/spurious.o CC security/commoncap.o CC mm/vmstat.o LD kernel/locking/built-in.o CC kernel/printk/printk.o CC kernel/rcu/update.o CC fs/exec.o CC kernel/rcu/sync.o CC kernel/rcu/tiny.o CC mm/backing-dev.o CC mm/mm_init.o LD kernel/power/built-in.o CC mm/mmu_context.o CC kernel/irq/resend.o /home/kisskb/slave/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /home/kisskb/slave/src/kernel/printk/printk.c:158: warning: 'old' may be used uninitialized in this function CC fs/pipe.o LD kernel/printk/built-in.o CC kernel/sched/core.o CC security/min_addr.o LD kernel/rcu/built-in.o CC kernel/time/time.o CC mm/percpu.o CC kernel/sched/loadavg.o CC kernel/irq/chip.o CC mm/slab_common.o CC kernel/time/timer.o LD security/built-in.o CC kernel/up.o CC kernel/time/hrtimer.o CC kernel/irq/dummychip.o CC kernel/irq/devres.o CC fs/namei.o /home/kisskb/slave/src/kernel/time/time.c: In function 'SyS_settimeofday': /home/kisskb/slave/src/kernel/time/time.c:197: warning: 'new_ts.tv_sec' may be used uninitialized in this function /home/kisskb/slave/src/kernel/time/time.c:197: note: 'new_ts.tv_sec' was declared here /home/kisskb/slave/src/kernel/time/time.c:197: warning: 'new_ts.tv_nsec' may be used uninitialized in this function /home/kisskb/slave/src/kernel/time/time.c:197: note: 'new_ts.tv_nsec' was declared here CC kernel/irq/autoprobe.o CC kernel/time/itimer.o CC mm/compaction.o CC mm/vmacache.o CC kernel/time/posix-timers.o CC mm/interval_tree.o LD kernel/irq/built-in.o CC kernel/memremap.o /home/kisskb/slave/src/include/linux/dcache.h: In function 'd_real_inode': /home/kisskb/slave/src/include/linux/dcache.h:590: warning: passing argument 1 of 'd_real' discards qualifiers from pointer target type CC mm/list_lru.o CC fs/fcntl.o CC kernel/sched/clock.o CC kernel/time/posix-cpu-timers.o CC mm/workingset.o CC mm/debug.o CC kernel/sched/cputime.o CC kernel/sched/idle_task.o CC kernel/sched/fair.o CC kernel/time/timekeeping.o CC fs/ioctl.o CC kernel/sched/rt.o LD crypto/built-in.o CC mm/gup.o LD block/built-in.o CC kernel/time/ntp.o LD drivers/amba/built-in.o LD drivers/auxdisplay/built-in.o CC drivers/base/component.o /home/kisskb/slave/src/mm/page-writeback.c: In function 'balance_dirty_pages_ratelimited': /home/kisskb/slave/src/mm/page-writeback.c:1626: warning: 'writeback' is used uninitialized in this function /home/kisskb/slave/src/mm/page-writeback.c:1618: note: 'writeback' was declared here /home/kisskb/slave/src/mm/page-writeback.c:1627: warning: 'filepages' is used uninitialized in this function /home/kisskb/slave/src/mm/page-writeback.c:1618: note: 'filepages' was declared here /home/kisskb/slave/src/mm/page-writeback.c:1627: warning: 'headroom' is used uninitialized in this function /home/kisskb/slave/src/mm/page-writeback.c:1618: note: 'headroom' was declared here CC drivers/base/core.o CC kernel/sched/deadline.o /home/kisskb/slave/src/mm/page-writeback.c: In function 'wb_over_bg_thresh': /home/kisskb/slave/src/mm/page-writeback.c:1954: warning: 'filepages' is used uninitialized in this function /home/kisskb/slave/src/mm/page-writeback.c:1954: warning: 'headroom' is used uninitialized in this function /home/kisskb/slave/src/kernel/time/ntp.c: In function 'ntp_validate_timex': /home/kisskb/slave/src/kernel/time/ntp.c:707: warning: comparison is always false due to limited range of data type /home/kisskb/slave/src/kernel/time/ntp.c:709: warning: comparison is always false due to limited range of data type LD sound/built-in.o CC fs/readdir.o CC kernel/sched/stop_task.o CC fs/select.o CC mm/highmem.o CC mm/memory.o CC mm/mincore.o CC kernel/time/clocksource.o CC kernel/sched/wait.o CC kernel/sched/swait.o CC kernel/sched/completion.o CC fs/dcache.o CC mm/mlock.o LD firmware/built-in.o LD net/built-in.o LD drivers/block/built-in.o LD drivers/bus/built-in.o CC kernel/sched/idle.o LD drivers/cdrom/built-in.o CC drivers/char/mem.o CC lib/lockref.o CC drivers/base/bus.o CC lib/bcd.o CC lib/div64.o CC drivers/base/dd.o LD kernel/sched/built-in.o CC mm/mmap.o CC drivers/char/random.o CC drivers/char/misc.o /home/kisskb/slave/src/fs/dcache.c: In function '__d_move': /home/kisskb/slave/src/fs/dcache.c:2764: warning: 'n' may be used uninitialized in this function LD drivers/char/agp/built-in.o CC drivers/base/syscore.o CC kernel/time/jiffies.o /home/kisskb/slave/src/fs/dcache.c: In function 'd_splice_alias': /home/kisskb/slave/src/fs/dcache.c:2520: warning: 'n' may be used uninitialized in this function /home/kisskb/slave/src/fs/dcache.c:2520: note: 'n' was declared here /home/kisskb/slave/src/kernel/time/timekeeping.c: In function 'get_device_system_crosststamp': /home/kisskb/slave/src/kernel/time/timekeeping.c:1056: warning: 'cs_was_changed_seq' may be used uninitialized in this function CC drivers/base/driver.o CC drivers/base/class.o /home/kisskb/slave/src/fs/dcache.c: In function 'd_add': /home/kisskb/slave/src/fs/dcache.c:2520: warning: 'n' may be used uninitialized in this function /home/kisskb/slave/src/fs/dcache.c:2520: note: 'n' was declared here CC drivers/base/platform.o CC fs/inode.o CC fs/attr.o CC fs/bad_inode.o LD drivers/char/built-in.o CC fs/file.o AS arch/avr32/lib/__avr32_asr64.o AS arch/avr32/lib/__avr32_lsl64.o CC mm/mprotect.o AS arch/avr32/lib/__avr32_lsr64.o AS arch/avr32/lib/clear_user.o AS arch/avr32/lib/copy_user.o AS arch/avr32/lib/csum_partial.o AS arch/avr32/lib/csum_partial_copy_generic.o CC arch/avr32/lib/delay.o CC fs/filesystems.o /home/kisskb/slave/src/include/linux/dcache.h: In function 'd_real_inode': /home/kisskb/slave/src/include/linux/dcache.h:590: warning: passing argument 1 of 'd_real' discards qualifiers from pointer target type CC fs/namespace.o CC kernel/time/timer_list.o AS arch/avr32/lib/findbit.o AS arch/avr32/lib/io-readsb.o AS arch/avr32/lib/io-readsl.o CC drivers/base/cpu.o AS arch/avr32/lib/io-readsw.o CC drivers/base/firmware.o AS arch/avr32/lib/io-writesb.o AS arch/avr32/lib/io-writesl.o AS arch/avr32/lib/io-writesw.o AS arch/avr32/lib/memcpy.o AS arch/avr32/lib/memset.o AS arch/avr32/lib/strncpy_from_user.o CC mm/mremap.o AS arch/avr32/lib/strnlen_user.o AR arch/avr32/lib/lib.a EXPORTS arch/avr32/lib/lib-ksyms.o LD arch/avr32/lib/built-in.o CC drivers/base/init.o CC kernel/time/timeconv.o CC fs/seq_file.o LD drivers/char/ipmi/built-in.o CC drivers/base/map.o CC drivers/base/devres.o CC drivers/base/attribute_container.o CC drivers/base/transport_class.o CC kernel/time/timecounter.o CC kernel/time/posix-clock.o CC drivers/base/topology.o CC lib/sort.o CC lib/parser.o CC drivers/base/container.o CC kernel/time/alarmtimer.o CC kernel/time/clockevents.o CC mm/msync.o CC kernel/time/tick-common.o CC lib/halfmd4.o CC drivers/base/property.o CC drivers/base/cacheinfo.o CC drivers/base/power/clock_ops.o CC lib/debug_locks.o CC lib/random32.o CC drivers/base/dma-mapping.o CC mm/rmap.o LD drivers/base/power/built-in.o CC mm/vmalloc.o CC lib/bust_spinlocks.o CC drivers/clk/clk-devres.o CC lib/kasprintf.o CC lib/bitmap.o CC fs/xattr.o CC mm/pagewalk.o LD drivers/clk/bcm/built-in.o CC lib/scatterlist.o LD drivers/clk/mvebu/built-in.o LD drivers/clk/ti/built-in.o LD drivers/clk/built-in.o CC lib/gcd.o CC lib/lcm.o CC lib/list_sort.o CC lib/uuid.o LD drivers/base/built-in.o CC lib/flex_array.o LD drivers/clocksource/built-in.o CC lib/iov_iter.o LD drivers/firewire/built-in.o LD kernel/time/built-in.o LD kernel/built-in.o LD drivers/firmware/broadcom/built-in.o LD drivers/firmware/meson/built-in.o LD drivers/firmware/built-in.o CC drivers/gpio/devres.o LD virt/lib/built-in.o CC mm/pgtable-generic.o LD virt/built-in.o CC drivers/gpio/gpiolib.o LD drivers/gpu/drm/bridge/built-in.o LD drivers/gpu/drm/hisilicon/built-in.o LD drivers/gpu/drm/i2c/built-in.o LD drivers/gpu/drm/omapdrm/displays/built-in.o LD drivers/gpu/drm/omapdrm/dss/built-in.o LD drivers/gpu/drm/omapdrm/built-in.o LD drivers/gpu/drm/panel/built-in.o LD drivers/gpu/drm/tilcdc/built-in.o LD drivers/gpu/drm/built-in.o LD drivers/gpu/vga/built-in.o CC lib/clz_ctz.o LD drivers/gpu/built-in.o CC mm/init-mm.o LD drivers/hwtracing/intel_th/built-in.o CC lib/bsearch.o LD drivers/i2c/algos/built-in.o LD drivers/i2c/busses/built-in.o CC lib/find_bit.o LD drivers/i2c/muxes/built-in.o LD drivers/i2c/built-in.o CC drivers/gpio/gpiolib-legacy.o CC fs/libfs.o LD drivers/idle/built-in.o CC lib/llist.o CC lib/memweight.o CC lib/kfifo.o CC mm/bootmem.o CC lib/percpu-refcount.o CC lib/percpu_ida.o CC lib/rhashtable.o LD drivers/irqchip/built-in.o LD drivers/lguest/built-in.o CC mm/dmapool.o /home/kisskb/slave/src/drivers/gpio/gpiolib.c:75: warning: 'gpiochip_irqchip_init_valid_mask' declared inline after being called /home/kisskb/slave/src/drivers/gpio/gpiolib.c:75: warning: previous declaration of 'gpiochip_irqchip_init_valid_mask' was here /home/kisskb/slave/src/drivers/gpio/gpiolib.c:76: warning: 'gpiochip_irqchip_free_valid_mask' declared inline after being called /home/kisskb/slave/src/drivers/gpio/gpiolib.c:76: warning: previous declaration of 'gpiochip_irqchip_free_valid_mask' was here LD drivers/macintosh/built-in.o LD drivers/media/common/b2c2/built-in.o LD drivers/media/common/saa7146/built-in.o LD drivers/media/common/siano/built-in.o LD drivers/media/firewire/built-in.o CC lib/reciprocal_div.o LD drivers/media/common/v4l2-tpg/built-in.o LD drivers/media/common/built-in.o LD drivers/media/i2c/soc_camera/built-in.o LD drivers/media/i2c/built-in.o CC mm/slub.o LD drivers/media/mmc/siano/built-in.o LD drivers/media/mmc/built-in.o LD drivers/media/pci/b2c2/built-in.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/media/pci/dm1105/built-in.o CC fs/fs-writeback.o LD drivers/media/pci/mantis/built-in.o LD drivers/media/pci/netup_unidvb/built-in.o LD drivers/media/pci/ngene/built-in.o LD drivers/media/pci/pluto2/built-in.o CC fs/pnode.o LD drivers/media/pci/pt1/built-in.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/pci/saa7146/built-in.o LD drivers/media/pci/smipcie/built-in.o CC fs/splice.o LD drivers/media/pci/ttpci/built-in.o LD drivers/media/pci/built-in.o LD drivers/media/platform/omap/built-in.o LD drivers/media/platform/built-in.o CC lib/once.o LD drivers/media/rc/keymaps/built-in.o LD drivers/media/rc/built-in.o LD drivers/media/spi/built-in.o LD drivers/media/tuners/built-in.o CC lib/string_helpers.o LD drivers/media/usb/b2c2/built-in.o LD drivers/media/usb/dvb-usb/built-in.o CC lib/hexdump.o LD drivers/media/usb/dvb-usb-v2/built-in.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/siano/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/media/usb/zr364xx/built-in.o LD drivers/media/usb/built-in.o LD drivers/media/built-in.o LD drivers/gpio/built-in.o CC lib/kstrtox.o CC mm/quicklist.o CC lib/iomap_copy.o LD drivers/mfd/built-in.o LD drivers/misc/cb710/built-in.o LD drivers/misc/eeprom/built-in.o LD drivers/misc/lis3lv02d/built-in.o CC fs/sync.o CC lib/devres.o LD drivers/misc/mic/bus/built-in.o LD drivers/misc/mic/built-in.o CC lib/hweight.o LD drivers/misc/ti-st/built-in.o LD drivers/misc/built-in.o LD drivers/mmc/built-in.o LD drivers/net/built-in.o CC fs/utimes.o LD drivers/nfc/built-in.o LD drivers/nvme/host/built-in.o LD drivers/nvme/target/built-in.o LD drivers/nvme/built-in.o LD drivers/platform/built-in.o LD drivers/power/built-in.o LD drivers/pwm/built-in.o LD drivers/soc/bcm/built-in.o LD drivers/soc/fsl/built-in.o LD drivers/soc/built-in.o CC fs/stack.o LD drivers/tty/ipwireless/built-in.o LD drivers/tty/serial/built-in.o LD drivers/tty/vt/built-in.o LD drivers/tty/built-in.o LD drivers/video/backlight/built-in.o LD drivers/video/fbdev/core/built-in.o LD drivers/video/fbdev/omap2/omapfb/displays/built-in.o CC lib/genalloc.o LD drivers/video/fbdev/omap2/omapfb/dss/built-in.o LD drivers/video/fbdev/omap2/omapfb/built-in.o CC fs/fs_struct.o LD drivers/video/fbdev/omap2/built-in.o LD drivers/video/fbdev/built-in.o LD drivers/video/built-in.o LD drivers/built-in.o CC fs/statfs.o CC lib/atomic64.o CC fs/fs_pin.o /home/kisskb/slave/src/fs/splice.c: In function 'iter_file_splice_write': /home/kisskb/slave/src/fs/splice.c:711: warning: 'ret' may be used uninitialized in this function LD mm/built-in.o CC fs/nsfs.o CC fs/no-block.o LD fs/devpts/built-in.o LD fs/exofs/built-in.o LD fs/notify/dnotify/built-in.o LD fs/quota/built-in.o LD fs/notify/fanotify/built-in.o CC fs/anon_inodes.o CC fs/ramfs/inode.o LD fs/notify/inotify/built-in.o LD fs/notify/built-in.o CC fs/ramfs/file-mmu.o CC lib/argv_split.o CC lib/chacha20.o CC lib/cmdline.o CC lib/ctype.o CC lib/dec_and_lock.o CC lib/decompress.o CC lib/dma-noop.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/int_sqrt.o CC lib/ioremap.o CC lib/irq_regs.o CC lib/is_single_threaded.o LD fs/ramfs/ramfs.o LD fs/ramfs/built-in.o LD fs/built-in.o CC lib/klist.o CC lib/kobject.o CC lib/kobject_uevent.o CC lib/md5.o CC lib/nmi_backtrace.o CC lib/nodemask.o CC lib/plist.o CC lib/radix-tree.o CC lib/ratelimit.o CC lib/rbtree.o CC lib/seq_buf.o CC lib/sha1.o CC lib/show_mem.o CC lib/string.o CC lib/timerqueue.o CC lib/vsprintf.o CC lib/win_minmax.o AR lib/lib.a EXPORTS lib/lib-ksyms.o LD lib/built-in.o LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o LD init/built-in.o LD vmlinux arch/avr32/lib/built-in.o: warning: input is not relaxable virt/built-in.o: warning: input is not relaxable SYSMAP System.map OBJCOPY arch/avr32/boot/images/vmlinux.bin GZIP arch/avr32/boot/images/vmlinux.gz OBJCOPY arch/avr32/boot/images/vmlinux.elf /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-objcopy: --change-section-lma __ksymtab_strings+0xffffffff80000000 never used /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-objcopy: --change-section-lma __kcrctab_gpl+0xffffffff80000000 never used /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-objcopy: --change-section-lma __kcrctab+0xffffffff80000000 never used /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-objcopy: --change-section-lma __ksymtab_gpl+0xffffffff80000000 never used /opt/cross/kisskb/gcc-4.2.4-nolibc/avr32-linux/bin/avr32-linux-objcopy: --change-section-lma __ksymtab+0xffffffff80000000 never used UIMAGE arch/avr32/boot/images/uImage Image Name: Linux-4.9.0-rc5+ Created: Fri Nov 18 06:06:36 2016 Image Type: AVR32 Linux Kernel Image (gzip compressed) Data Size: 376702 Bytes = 367.87 kB = 0.36 MB Load Address: 10000000 Entry Point: 90000000 Image arch/avr32/boot/images/uImage is ready make[1]: Leaving directory '/home/kisskb/slave/build/linus_avr32-allnoconfig_avr32' Completed OK # rm -rf /home/kisskb/slave/build/linus_avr32-allnoconfig_avr32 # Build took: 0:00:20.892388