# git rev-parse -q --verify 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d^{commit} 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d already have revision, skipping fetch # git checkout -q -f -B kisskb 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d # git clean -qxdf # < git log -1 # commit 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d # Author: Linus Torvalds # Date: Fri Jul 5 19:55:18 2019 -0700 # # Revert "mm: page cache: store only head pages in i_pages" # # This reverts commit 5fd4ca2d84b249f0858ce28cf637cf25b61a398f. # # Mikhail Gavrilov reports that it causes the VM_BUG_ON_PAGE() in # __delete_from_swap_cache() to trigger: # # page:ffffd6d34dff0000 refcount:1 mapcount:1 mapping:ffff97812323a689 index:0xfecec363 # anon # flags: 0x17fffe00080034(uptodate|lru|active|swapbacked) # raw: 0017fffe00080034 ffffd6d34c67c508 ffffd6d3504b8d48 ffff97812323a689 # raw: 00000000fecec363 0000000000000000 0000000100000000 ffff978433ace000 # page dumped because: VM_BUG_ON_PAGE(entry != page) # page->mem_cgroup:ffff978433ace000 # ------------[ cut here ]------------ # kernel BUG at mm/swap_state.c:170! # invalid opcode: 0000 [#1] SMP NOPTI # CPU: 1 PID: 221 Comm: kswapd0 Not tainted 5.2.0-0.rc2.git0.1.fc31.x86_64 #1 # Hardware name: System manufacturer System Product Name/ROG STRIX X470-I GAMING, BIOS 2202 04/11/2019 # RIP: 0010:__delete_from_swap_cache+0x20d/0x240 # Code: 30 65 48 33 04 25 28 00 00 00 75 4a 48 83 c4 38 5b 5d 41 5c 41 5d 41 5e 41 5f c3 48 c7 c6 2f dc 0f 8a 48 89 c7 e8 93 1b fd ff <0f> 0b 48 c7 c6 a8 74 0f 8a e8 85 1b fd ff 0f 0b 48 c7 c6 a8 7d 0f # RSP: 0018:ffffa982036e7980 EFLAGS: 00010046 # RAX: 0000000000000021 RBX: 0000000000000040 RCX: 0000000000000006 # RDX: 0000000000000000 RSI: 0000000000000086 RDI: ffff97843d657900 # RBP: 0000000000000001 R08: ffffa982036e7835 R09: 0000000000000535 # R10: ffff97845e21a46c R11: ffffa982036e7835 R12: ffff978426387120 # R13: 0000000000000000 R14: ffffd6d34dff0040 R15: ffffd6d34dff0000 # FS: 0000000000000000(0000) GS:ffff97843d640000(0000) knlGS:0000000000000000 # CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 # CR2: 00002cba88ef5000 CR3: 000000078a97c000 CR4: 00000000003406e0 # Call Trace: # delete_from_swap_cache+0x46/0xa0 # try_to_free_swap+0xbc/0x110 # swap_writepage+0x13/0x70 # pageout.isra.0+0x13c/0x350 # shrink_page_list+0xc14/0xdf0 # shrink_inactive_list+0x1e5/0x3c0 # shrink_node_memcg+0x202/0x760 # shrink_node+0xe0/0x470 # balance_pgdat+0x2d1/0x510 # kswapd+0x220/0x420 # kthread+0xfb/0x130 # ret_from_fork+0x22/0x40 # # and it's not immediately obvious why it happens. It's too late in the # rc cycle to do anything but revert for now. # # Link: https://lore.kernel.org/lkml/CABXGCsN9mYmBD-4GaaeW_NrDu+FDXLzr_6x+XNxfmFV6QkYCDg@mail.gmail.com/ # Reported-and-bisected-by: Mikhail Gavrilov # Suggested-by: Jan Kara # Cc: Michal Hocko # Cc: Vlastimil Babka # Cc: Matthew Wilcox # Cc: Kirill Shutemov # Cc: William Kucharski # Cc: Andrew Morton # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux-ld --version # < git log --format=%s --max-count=1 69bf4b6b54fb7f52b7ea9ce28d4a360cd5ec956d # < make -s -j 120 ARCH=s390 O=/kisskb/build/linus_s390-allyesconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- allyesconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # yes \n | make -s -j 120 ARCH=s390 O=/kisskb/build/linus_s390-allyesconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- oldconfig yes: standard output: Broken pipe # make -s -j 120 ARCH=s390 O=/kisskb/build/linus_s390-allyesconfig_s390x-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/s390-linux/bin/s390-linux- /kisskb/src/drivers/hwtracing/intel_th/msu.c: In function 'msc_buffer_win_alloc': /kisskb/src/drivers/hwtracing/intel_th/msu.c:783:21: warning: unused variable 'i' [-Wunused-variable] int ret = -ENOMEM, i; ^ /kisskb/src/drivers/hwtracing/intel_th/msu.c: In function 'msc_buffer_win_free': /kisskb/src/drivers/hwtracing/intel_th/msu.c:863:6: warning: unused variable 'i' [-Wunused-variable] int i; ^ /kisskb/src/drivers/input/joystick/analog.c:160:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp] #warning Precise timer not defined for this architecture. ^~~~~~~ /kisskb/src/lib/test_kasan.c: In function 'kasan_alloca_oob_left': /kisskb/src/lib/test_kasan.c:487:1: warning: 'kasan_alloca_oob_left' uses dynamic stack allocation } ^ /kisskb/src/lib/test_kasan.c: In function 'kasan_alloca_oob_right': /kisskb/src/lib/test_kasan.c:497:1: warning: 'kasan_alloca_oob_right' uses dynamic stack allocation } ^ In file included from /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:40: /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c: In function 'mvpp2_setup_bm_pool': /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2.h:614:2: warning: overflow in conversion from 'long unsigned int' to 'int' changes value from '18446744073709551584' to '-32' [-Woverflow] ((total_size) - NET_SKB_PAD - MVPP2_SKB_SHINFO_SIZE) ^ /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2.h:677:33: note: in expansion of macro 'MVPP2_RX_MAX_PKT_SIZE' #define MVPP2_BM_SHORT_PKT_SIZE MVPP2_RX_MAX_PKT_SIZE(MVPP2_BM_SHORT_FRAME_SIZE) ^~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c:551:41: note: in expansion of macro 'MVPP2_BM_SHORT_PKT_SIZE' mvpp2_pools[MVPP2_BM_SHORT].pkt_size = MVPP2_BM_SHORT_PKT_SIZE; ^~~~~~~~~~~~~~~~~~~~~~~ Completed OK # rm -rf /kisskb/build/linus_s390-allyesconfig_s390x-gcc8 # Build took: 0:10:48.860086