On Tue, Jan 17, 2023 at 04:01:08PM +0800, Tang, Feng wrote: > On Tue, Jan 17, 2023 at 03:39:15PM +0800, Vlastimil Babka wrote: > > On 1/17/23 08:10, kernel test robot wrote: > > > > > > +Vlastimil Babka, Hyeonggon Yoo, Feng Tang and Fengwei Yin > > > > > > Hi, Mike Kravetz, > > > > > > we reported > > > "[linus:master] [mm, slub] 0af8489b02: kernel_BUG_at_include/linux/mm.h" [1] > > > > > > Vlastimil, Hyeonggon, Feng and Fengwei gave us a lot of great guidances based on > > > it, and, perticularly, after enabling below config per Vlastimil's suggestion > > > CONFIG_DEBUG_PAGEALLOC > > > CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT > > > CONFIG_SLUB_DEBUG > > > CONFIG_SLUB_DEBUG_ON > > > by more tests, we realized the "0af8489b02" is not the real culprit. > > > > > > the new bisection was triggered and finally it pointed to this "7118fc2906". > > > > > > though reporting for different issues > > > ("kernel_BUG_at_include/linux/mm.h" for 0af8489b02 vs. > > > "kernel_BUG_at_lib/list_debug.c" for this commit), > > > Feng and Fengwei helped further to confirm they are similar. > > > They will supply more technical wise analysis later. > > > > > > please be noted the issues are not always happening > > > (~10% on this commit or 0af8489b02) > > > > Great find! Looking at the commit, I'd bet the only part relevant to our bug > > is the "by the way we remove setting refcount to zero on tail pages which > > should already be zero": > > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > > index db00ee8d79d2..eeff64843718 100644 > > > --- a/mm/page_alloc.c > > > +++ b/mm/page_alloc.c > > > @@ -754,7 +754,6 @@ void prep_compound_page(struct page *page, unsigned int order) > > > __SetPageHead(page); > > > for (i = 1; i < nr_pages; i++) { > > > struct page *p = page + i; > > > - set_page_count(p, 0); > > > p->mapping = TAIL_MAPPING; > > > set_compound_head(p, page); > > > } > > > > So either the assumption of refcount being already 0 is wrong (shouldn't be, > > AFAIK?), or this atomic operation effectively prevents some very subtle race > > (although IIRC atomic_set() has no barrier semantics defined, it could still > > affect a specific CPU? > > Yes, "set_page_count(p, 0);" seems to be what matters here. Restoring > it make the list corruption issue not reproducable for 300+ runs. > > And back in debugging 0af8489b02, the thing was similar that if we > added some code inside prep_compound_page(), the issue also can't > be reproduced. > > So this 7118fc2906 seems just 'expose' the problem on i386, and is > not the root cause. > > I suspect it is related with i386 compiling, based on the debug and > memory dump. I'm doing some compiler option and adding memory > barrier in prep_compound_page(), and will update when the test run > is done. With the following patch to use 'O1' instead 'O2' gcc optoin for page_alloc.c, the list corruption issue can't be reproduced for commit 7118fc2906 in 1000 runs. Oliver has reproduced it for v6.0, applying the same patch can also make the issue gone. As is can't be reproduced with X86_64 build, it could be i386 compiling related. I also objdumped 'prep_compound_page' for vmlinux of 7118fc2906 and its parent commit 48b8d744ea84, which have big difference than the simple 'set_page_count()' change, but I can't tell which part is abnormal, so attach them for further check. --- diff --git a/mm/Makefile b/mm/Makefile index 8e105e5b3e293..2b3780208e65d 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -36,6 +36,8 @@ KCOV_INSTRUMENT_failslab.o := n CFLAGS_init-mm.o += $(call cc-disable-warning, override-init) CFLAGS_init-mm.o += $(call cc-disable-warning, initializer-overrides) +CFLAGS_page_alloc.o += -O1 + mmu-y := nommu.o mmu-$(CONFIG_MMU) := highmem.o memory.o mincore.o \ mlock.o mmap.o mmu_gather.o mprotect.o mremap.o \ Thanks, Feng > > Thanks, > Feng > > > I guess we could > > - try to restore that set_page_count(p, 0); on current kernel to see if it > > kills the bug > > - instead of restoring it, add (only locally for purposes of the test) a > > BUG_ON() if refcount is not zero already, and find out why if it triggers > > (unfortunately might also appear to fix the bug even if it doesn't trigger).
c13b3b90 <prep_compound_page>: c13b3b90: 55 push %ebp c13b3b91: 89 e5 mov %esp,%ebp c13b3b93: 57 push %edi c13b3b94: 89 c7 mov %eax,%edi c13b3b96: 56 push %esi c13b3b97: 53 push %ebx c13b3b98: 83 ec 14 sub $0x14,%esp c13b3b9b: 83 fa 1f cmp $0x1f,%edx c13b3b9e: 89 55 e4 mov %edx,-0x1c(%ebp) c13b3ba1: 0f 87 33 31 ed 01 ja c3286cda <prep_compound_page.cold> c13b3ba7: 0f b6 4d e4 movzbl -0x1c(%ebp),%ecx c13b3bab: bb 01 00 00 00 mov $0x1,%ebx c13b3bb0: d3 e3 shl %cl,%ebx c13b3bb2: 83 3f ff cmpl $0xffffffff,(%edi) c13b3bb5: 0f 84 65 02 00 00 je c13b3e20 <prep_compound_page+0x290> c13b3bbb: 83 05 d0 28 6c c5 01 addl $0x1,0xc56c28d0 c13b3bc2: 83 15 d4 28 6c c5 00 adcl $0x0,0xc56c28d4 c13b3bc9: 0f ba 2f 10 btsl $0x10,(%edi) c13b3bcd: 83 05 f0 28 6c c5 01 addl $0x1,0xc56c28f0 c13b3bd4: 83 15 f4 28 6c c5 00 adcl $0x0,0xc56c28f4 c13b3bdb: 83 fb 01 cmp $0x1,%ebx c13b3bde: 0f 8e 80 00 00 00 jle c13b3c64 <prep_compound_page+0xd4> c13b3be4: 8d 47 01 lea 0x1(%edi),%eax c13b3be7: 8b 15 fc 28 6c c5 mov 0xc56c28fc,%edx c13b3bed: 89 45 e8 mov %eax,-0x18(%ebp) c13b3bf0: a1 f8 28 6c c5 mov 0xc56c28f8,%eax c13b3bf5: 8d 4f 28 lea 0x28(%edi),%ecx c13b3bf8: 89 7d e0 mov %edi,-0x20(%ebp) c13b3bfb: 83 c0 01 add $0x1,%eax c13b3bfe: 89 45 ec mov %eax,-0x14(%ebp) c13b3c01: 83 d2 00 adc $0x0,%edx c13b3c04: a1 f8 28 6c c5 mov 0xc56c28f8,%eax c13b3c09: 89 55 f0 mov %edx,-0x10(%ebp) c13b3c0c: 8b 15 fc 28 6c c5 mov 0xc56c28fc,%edx c13b3c12: 83 eb 02 sub $0x2,%ebx c13b3c15: 31 f6 xor %esi,%esi c13b3c17: 83 c0 02 add $0x2,%eax c13b3c1a: 83 d2 00 adc $0x0,%edx c13b3c1d: 01 c3 add %eax,%ebx c13b3c1f: 8b 45 ec mov -0x14(%ebp),%eax c13b3c22: 11 d6 adc %edx,%esi c13b3c24: 8b 55 f0 mov -0x10(%ebp),%edx c13b3c27: 89 f7 mov %esi,%edi c13b3c29: 89 de mov %ebx,%esi c13b3c2b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi c13b3c2f: 90 nop c13b3c30: a3 f8 28 6c c5 mov %eax,0xc56c28f8 c13b3c35: 8b 5d e8 mov -0x18(%ebp),%ebx c13b3c38: 83 c0 01 add $0x1,%eax c13b3c3b: 89 15 fc 28 6c c5 mov %edx,0xc56c28fc c13b3c41: 83 d2 00 adc $0x0,%edx c13b3c44: 83 c1 28 add $0x28,%ecx c13b3c47: c7 41 e4 00 04 00 00 movl $0x400,-0x1c(%ecx) c13b3c4e: 89 59 dc mov %ebx,-0x24(%ecx) c13b3c51: 89 fb mov %edi,%ebx c13b3c53: 31 d3 xor %edx,%ebx c13b3c55: 89 5d ec mov %ebx,-0x14(%ebp) c13b3c58: 89 f3 mov %esi,%ebx c13b3c5a: 31 c3 xor %eax,%ebx c13b3c5c: 0b 5d ec or -0x14(%ebp),%ebx c13b3c5f: 75 cf jne c13b3c30 <prep_compound_page+0xa0> c13b3c61: 8b 7d e0 mov -0x20(%ebp),%edi c13b3c64: c6 47 30 01 movb $0x1,0x30(%edi) c13b3c68: 8b 45 e4 mov -0x1c(%ebp),%eax c13b3c6b: 83 05 b8 1a 6c c5 01 addl $0x1,0xc56c1ab8 c13b3c72: 83 15 bc 1a 6c c5 00 adcl $0x0,0xc56c1abc c13b3c79: 83 f8 1f cmp $0x1f,%eax c13b3c7c: 88 47 31 mov %al,0x31(%edi) c13b3c7f: 0f 87 4f 02 00 00 ja c13b3ed4 <prep_compound_page+0x344> c13b3c85: c7 47 34 ff ff ff ff movl $0xffffffff,0x34(%edi) c13b3c8c: 0f b6 4d e4 movzbl -0x1c(%ebp),%ecx c13b3c90: b8 01 00 00 00 mov $0x1,%eax c13b3c95: 8b 77 04 mov 0x4(%edi),%esi c13b3c98: d3 e0 shl %cl,%eax c13b3c9a: 83 05 00 29 6c c5 01 addl $0x1,0xc56c2900 c13b3ca1: 89 47 38 mov %eax,0x38(%edi) c13b3ca4: 83 15 04 29 6c c5 00 adcl $0x0,0xc56c2904 c13b3cab: f7 c6 01 00 00 00 test $0x1,%esi c13b3cb1: 0f 85 b9 01 00 00 jne c13b3e70 <prep_compound_page+0x2e0> c13b3cb7: 83 05 88 1a 6c c5 01 addl $0x1,0xc56c1a88 c13b3cbe: 89 fe mov %edi,%esi c13b3cc0: 83 15 8c 1a 6c c5 00 adcl $0x0,0xc56c1a8c c13b3cc7: a1 a0 15 6c c5 mov 0xc56c15a0,%eax c13b3ccc: 8b 15 a4 15 6c c5 mov 0xc56c15a4,%edx c13b3cd2: 89 c1 mov %eax,%ecx c13b3cd4: 83 c1 01 add $0x1,%ecx c13b3cd7: 89 d3 mov %edx,%ebx c13b3cd9: 89 0d a0 15 6c c5 mov %ecx,0xc56c15a0 c13b3cdf: 8b 0e mov (%esi),%ecx c13b3ce1: 83 d3 00 adc $0x0,%ebx c13b3ce4: 83 05 90 1a 6c c5 01 addl $0x1,0xc56c1a90 c13b3ceb: 89 1d a4 15 6c c5 mov %ebx,0xc56c15a4 c13b3cf1: 83 15 94 1a 6c c5 00 adcl $0x0,0xc56c1a94 c13b3cf8: 81 e1 00 00 01 00 and $0x10000,%ecx c13b3cfe: 75 4e jne c13b3d4e <prep_compound_page+0x1be> c13b3d00: 8b 4e 04 mov 0x4(%esi),%ecx c13b3d03: 83 05 98 1a 6c c5 01 addl $0x1,0xc56c1a98 c13b3d0a: 83 15 9c 1a 6c c5 00 adcl $0x0,0xc56c1a9c c13b3d11: f6 c1 01 test $0x1,%cl c13b3d14: 75 2a jne c13b3d40 <prep_compound_page+0x1b0> c13b3d16: a1 08 29 6c c5 mov 0xc56c2908,%eax c13b3d1b: 8b 15 0c 29 6c c5 mov 0xc56c290c,%edx c13b3d21: 83 c0 01 add $0x1,%eax c13b3d24: a3 08 29 6c c5 mov %eax,0xc56c2908 c13b3d29: 83 d2 00 adc $0x0,%edx c13b3d2c: 89 15 0c 29 6c c5 mov %edx,0xc56c290c c13b3d32: 83 c4 14 add $0x14,%esp c13b3d35: 5b pop %ebx c13b3d36: 5e pop %esi c13b3d37: 5f pop %edi c13b3d38: 5d pop %ebp c13b3d39: c3 ret c13b3d3a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi c13b3d40: 83 05 a0 1a 6c c5 01 addl $0x1,0xc56c1aa0 c13b3d47: 83 15 a4 1a 6c c5 00 adcl $0x0,0xc56c1aa4 c13b3d4e: 83 3e ff cmpl $0xffffffff,(%esi) c13b3d51: 0f 84 2d 01 00 00 je c13b3e84 <prep_compound_page+0x2f4> c13b3d57: 83 05 48 1a 6c c5 01 addl $0x1,0xc56c1a48 c13b3d5e: 8b 0d a8 1a 6c c5 mov 0xc56c1aa8,%ecx c13b3d64: 8b 1d ac 1a 6c c5 mov 0xc56c1aac,%ebx c13b3d6a: 83 15 4c 1a 6c c5 00 adcl $0x0,0xc56c1a4c c13b3d71: 83 c0 02 add $0x2,%eax c13b3d74: 83 d2 00 adc $0x0,%edx c13b3d77: a3 a0 15 6c c5 mov %eax,0xc56c15a0 c13b3d7c: 8b 06 mov (%esi),%eax c13b3d7e: 83 c1 01 add $0x1,%ecx c13b3d81: 89 15 a4 15 6c c5 mov %edx,0xc56c15a4 c13b3d87: 83 d3 00 adc $0x0,%ebx c13b3d8a: 8b 15 0c 29 6c c5 mov 0xc56c290c,%edx c13b3d90: 89 45 ec mov %eax,-0x14(%ebp) c13b3d93: a1 08 29 6c c5 mov 0xc56c2908,%eax c13b3d98: f7 45 ec 00 00 01 00 testl $0x10000,-0x14(%ebp) c13b3d9f: 74 4f je c13b3df0 <prep_compound_page+0x260> c13b3da1: 83 05 70 1a 6c c5 01 addl $0x1,0xc56c1a70 c13b3da8: 89 0d a8 1a 6c c5 mov %ecx,0xc56c1aa8 c13b3dae: 83 15 74 1a 6c c5 00 adcl $0x0,0xc56c1a74 c13b3db5: 80 7e 31 01 cmpb $0x1,0x31(%esi) c13b3db9: 89 1d ac 1a 6c c5 mov %ebx,0xc56c1aac c13b3dbf: 76 49 jbe c13b3e0a <prep_compound_page+0x27a> c13b3dc1: c7 47 58 00 00 00 00 movl $0x0,0x58(%edi) c13b3dc8: 83 c0 01 add $0x1,%eax c13b3dcb: a3 08 29 6c c5 mov %eax,0xc56c2908 c13b3dd0: 83 d2 00 adc $0x0,%edx c13b3dd3: 83 05 10 29 6c c5 01 addl $0x1,0xc56c2910 c13b3dda: 89 15 0c 29 6c c5 mov %edx,0xc56c290c c13b3de0: 83 15 14 29 6c c5 00 adcl $0x0,0xc56c2914 c13b3de7: 83 c4 14 add $0x14,%esp c13b3dea: 5b pop %ebx c13b3deb: 5e pop %esi c13b3dec: 5f pop %edi c13b3ded: 5d pop %ebp c13b3dee: c3 ret c13b3def: 90 nop c13b3df0: 83 05 68 1a 6c c5 01 addl $0x1,0xc56c1a68 c13b3df7: 89 0d a8 1a 6c c5 mov %ecx,0xc56c1aa8 c13b3dfd: 83 15 6c 1a 6c c5 00 adcl $0x0,0xc56c1a6c c13b3e04: 89 1d ac 1a 6c c5 mov %ebx,0xc56c1aac c13b3e0a: 83 05 b0 1a 6c c5 01 addl $0x1,0xc56c1ab0 c13b3e11: 83 15 b4 1a 6c c5 00 adcl $0x0,0xc56c1ab4 c13b3e18: e9 04 ff ff ff jmp c13b3d21 <prep_compound_page+0x191> c13b3e1d: 8d 76 00 lea 0x0(%esi),%esi c13b3e20: 83 05 c8 28 6c c5 01 addl $0x1,0xc56c28c8 c13b3e27: ba 98 c9 e8 c3 mov $0xc3e8c998,%edx c13b3e2c: 89 f8 mov %edi,%eax c13b3e2e: 83 15 cc 28 6c c5 00 adcl $0x0,0xc56c28cc c13b3e35: e8 36 16 fb ff call c1365470 <dump_page> c13b3e3a: 83 05 d8 28 6c c5 01 addl $0x1,0xc56c28d8 c13b3e41: 83 15 dc 28 6c c5 00 adcl $0x0,0xc56c28dc c13b3e48: 0f 0b ud2 c13b3e4a: 83 05 e0 28 6c c5 01 addl $0x1,0xc56c28e0 c13b3e51: 83 15 e4 28 6c c5 00 adcl $0x0,0xc56c28e4 c13b3e58: 83 05 e8 28 6c c5 01 addl $0x1,0xc56c28e8 c13b3e5f: b8 c0 d4 5e c4 mov $0xc45ed4c0,%eax c13b3e64: 83 15 ec 28 6c c5 00 adcl $0x0,0xc56c28ec c13b3e6b: e8 58 6b f3 01 call c32ea9c8 <__ubsan_handle_builtin_unreachable> c13b3e70: 83 05 80 1a 6c c5 01 addl $0x1,0xc56c1a80 c13b3e77: 83 15 84 1a 6c c5 00 adcl $0x0,0xc56c1a84 c13b3e7e: 4e dec %esi c13b3e7f: e9 43 fe ff ff jmp c13b3cc7 <prep_compound_page+0x137> c13b3e84: 83 05 40 1a 6c c5 01 addl $0x1,0xc56c1a40 c13b3e8b: ba 98 c9 e8 c3 mov $0xc3e8c998,%edx c13b3e90: 89 f0 mov %esi,%eax c13b3e92: 83 15 44 1a 6c c5 00 adcl $0x0,0xc56c1a44 c13b3e99: e8 d2 15 fb ff call c1365470 <dump_page> c13b3e9e: 83 05 50 1a 6c c5 01 addl $0x1,0xc56c1a50 c13b3ea5: 83 15 54 1a 6c c5 00 adcl $0x0,0xc56c1a54 c13b3eac: 0f 0b ud2 c13b3eae: 83 05 58 1a 6c c5 01 addl $0x1,0xc56c1a58 c13b3eb5: 83 15 5c 1a 6c c5 00 adcl $0x0,0xc56c1a5c c13b3ebc: 83 05 60 1a 6c c5 01 addl $0x1,0xc56c1a60 c13b3ec3: b8 b4 d4 5e c4 mov $0xc45ed4b4,%eax c13b3ec8: 83 15 64 1a 6c c5 00 adcl $0x0,0xc56c1a64 c13b3ecf: e8 f4 6a f3 01 call c32ea9c8 <__ubsan_handle_builtin_unreachable> c13b3ed4: e9 26 2e ed 01 jmp c3286cff <prep_compound_page.cold+0x25> c13b3ed9: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
c13b3c90 <prep_compound_page>: c13b3c90: 55 push %ebp c13b3c91: 89 e5 mov %esp,%ebp c13b3c93: 57 push %edi c13b3c94: 56 push %esi c13b3c95: 89 c6 mov %eax,%esi c13b3c97: 53 push %ebx c13b3c98: 83 ec 0c sub $0xc,%esp c13b3c9b: 83 fa 1f cmp $0x1f,%edx c13b3c9e: 89 55 ec mov %edx,-0x14(%ebp) c13b3ca1: 0f 87 33 2f ed 01 ja c3286bda <prep_compound_page.cold> c13b3ca7: 0f b6 4d ec movzbl -0x14(%ebp),%ecx c13b3cab: bf 01 00 00 00 mov $0x1,%edi c13b3cb0: d3 e7 shl %cl,%edi c13b3cb2: 83 3e ff cmpl $0xffffffff,(%esi) c13b3cb5: 0f 84 85 02 00 00 je c13b3f40 <prep_compound_page+0x2b0> c13b3cbb: 83 05 d0 28 6c c5 01 addl $0x1,0xc56c28d0 c13b3cc2: 83 15 d4 28 6c c5 00 adcl $0x0,0xc56c28d4 c13b3cc9: 0f ba 2e 10 btsl $0x10,(%esi) c13b3ccd: 83 05 f0 28 6c c5 01 addl $0x1,0xc56c28f0 c13b3cd4: 83 15 f4 28 6c c5 00 adcl $0x0,0xc56c28f4 c13b3cdb: 83 ff 01 cmp $0x1,%edi c13b3cde: 7e 69 jle c13b3d49 <prep_compound_page+0xb9> c13b3ce0: 89 75 e8 mov %esi,-0x18(%ebp) c13b3ce3: 8d 46 28 lea 0x28(%esi),%eax c13b3ce6: bb 01 00 00 00 mov $0x1,%ebx c13b3ceb: 8d 4e 01 lea 0x1(%esi),%ecx c13b3cee: 89 c6 mov %eax,%esi c13b3cf0: 83 05 80 18 6c c5 01 addl $0x1,0xc56c1880 c13b3cf7: c7 46 1c 00 00 00 00 movl $0x0,0x1c(%esi) c13b3cfe: 83 15 84 18 6c c5 00 adcl $0x0,0xc56c1884 c13b3d05: 3e 8d 74 26 00 lea %ds:0x0(%esi,%eiz,1),%esi c13b3d0a: 83 05 90 18 6c c5 01 addl $0x1,0xc56c1890 c13b3d11: 83 15 94 18 6c c5 00 adcl $0x0,0xc56c1894 c13b3d18: 83 05 a0 18 6c c5 01 addl $0x1,0xc56c18a0 c13b3d1f: 83 15 a4 18 6c c5 00 adcl $0x0,0xc56c18a4 c13b3d26: 83 05 f8 28 6c c5 01 addl $0x1,0xc56c28f8 c13b3d2d: c7 46 0c 00 04 00 00 movl $0x400,0xc(%esi) c13b3d34: 83 15 fc 28 6c c5 00 adcl $0x0,0xc56c28fc c13b3d3b: 43 inc %ebx c13b3d3c: 83 c6 28 add $0x28,%esi c13b3d3f: 89 4e dc mov %ecx,-0x24(%esi) c13b3d42: 39 df cmp %ebx,%edi c13b3d44: 75 aa jne c13b3cf0 <prep_compound_page+0x60> c13b3d46: 8b 75 e8 mov -0x18(%ebp),%esi c13b3d49: 83 05 00 29 6c c5 01 addl $0x1,0xc56c2900 c13b3d50: 8b 45 ec mov -0x14(%ebp),%eax c13b3d53: c6 46 30 01 movb $0x1,0x30(%esi) c13b3d57: 83 15 04 29 6c c5 00 adcl $0x0,0xc56c2904 c13b3d5e: 83 05 b8 1a 6c c5 01 addl $0x1,0xc56c1ab8 c13b3d65: 88 46 31 mov %al,0x31(%esi) c13b3d68: 83 15 bc 1a 6c c5 00 adcl $0x0,0xc56c1abc c13b3d6f: 83 f8 1f cmp $0x1f,%eax c13b3d72: 0f 87 7e 02 00 00 ja c13b3ff6 <prep_compound_page+0x366> c13b3d78: c7 46 34 ff ff ff ff movl $0xffffffff,0x34(%esi) c13b3d7f: 0f b6 4d ec movzbl -0x14(%ebp),%ecx c13b3d83: b8 01 00 00 00 mov $0x1,%eax c13b3d88: d3 e0 shl %cl,%eax c13b3d8a: 89 46 38 mov %eax,0x38(%esi) c13b3d8d: 8b 46 04 mov 0x4(%esi),%eax c13b3d90: 83 05 08 29 6c c5 01 addl $0x1,0xc56c2908 c13b3d97: 83 15 0c 29 6c c5 00 adcl $0x0,0xc56c290c c13b3d9e: a8 01 test $0x1,%al c13b3da0: 0f 85 ea 01 00 00 jne c13b3f90 <prep_compound_page+0x300> c13b3da6: 83 05 88 1a 6c c5 01 addl $0x1,0xc56c1a88 c13b3dad: 89 f7 mov %esi,%edi c13b3daf: 83 15 8c 1a 6c c5 00 adcl $0x0,0xc56c1a8c c13b3db6: a1 a0 15 6c c5 mov 0xc56c15a0,%eax c13b3dbb: 8b 15 a4 15 6c c5 mov 0xc56c15a4,%edx c13b3dc1: 89 c1 mov %eax,%ecx c13b3dc3: 83 c1 01 add $0x1,%ecx c13b3dc6: 89 d3 mov %edx,%ebx c13b3dc8: 89 0d a0 15 6c c5 mov %ecx,0xc56c15a0 c13b3dce: 8b 0f mov (%edi),%ecx c13b3dd0: 83 d3 00 adc $0x0,%ebx c13b3dd3: 83 05 90 1a 6c c5 01 addl $0x1,0xc56c1a90 c13b3dda: 89 1d a4 15 6c c5 mov %ebx,0xc56c15a4 c13b3de0: 83 15 94 1a 6c c5 00 adcl $0x0,0xc56c1a94 c13b3de7: 81 e1 00 00 01 00 and $0x10000,%ecx c13b3ded: 75 4f jne c13b3e3e <prep_compound_page+0x1ae> c13b3def: 8b 4f 04 mov 0x4(%edi),%ecx c13b3df2: 83 05 98 1a 6c c5 01 addl $0x1,0xc56c1a98 c13b3df9: 83 15 9c 1a 6c c5 00 adcl $0x0,0xc56c1a9c c13b3e00: f6 c1 01 test $0x1,%cl c13b3e03: 75 2b jne c13b3e30 <prep_compound_page+0x1a0> c13b3e05: a1 10 29 6c c5 mov 0xc56c2910,%eax c13b3e0a: 8b 15 14 29 6c c5 mov 0xc56c2914,%edx c13b3e10: 83 c0 01 add $0x1,%eax c13b3e13: a3 10 29 6c c5 mov %eax,0xc56c2910 c13b3e18: 83 d2 00 adc $0x0,%edx c13b3e1b: 89 15 14 29 6c c5 mov %edx,0xc56c2914 c13b3e21: 83 c4 0c add $0xc,%esp c13b3e24: 5b pop %ebx c13b3e25: 5e pop %esi c13b3e26: 5f pop %edi c13b3e27: 5d pop %ebp c13b3e28: c3 ret c13b3e29: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi c13b3e30: 83 05 a0 1a 6c c5 01 addl $0x1,0xc56c1aa0 c13b3e37: 83 15 a4 1a 6c c5 00 adcl $0x0,0xc56c1aa4 c13b3e3e: 83 3f ff cmpl $0xffffffff,(%edi) c13b3e41: 0f 84 5f 01 00 00 je c13b3fa6 <prep_compound_page+0x316> c13b3e47: 83 05 48 1a 6c c5 01 addl $0x1,0xc56c1a48 c13b3e4e: 8b 0d a8 1a 6c c5 mov 0xc56c1aa8,%ecx c13b3e54: 8b 1d ac 1a 6c c5 mov 0xc56c1aac,%ebx c13b3e5a: 83 15 4c 1a 6c c5 00 adcl $0x0,0xc56c1a4c c13b3e61: 83 c0 02 add $0x2,%eax c13b3e64: 83 d2 00 adc $0x0,%edx c13b3e67: a3 a0 15 6c c5 mov %eax,0xc56c15a0 c13b3e6c: 8b 07 mov (%edi),%eax c13b3e6e: 83 c1 01 add $0x1,%ecx c13b3e71: 89 15 a4 15 6c c5 mov %edx,0xc56c15a4 c13b3e77: 83 d3 00 adc $0x0,%ebx c13b3e7a: 8b 15 14 29 6c c5 mov 0xc56c2914,%edx c13b3e80: 89 45 f0 mov %eax,-0x10(%ebp) c13b3e83: a1 10 29 6c c5 mov 0xc56c2910,%eax c13b3e88: f7 45 f0 00 00 01 00 testl $0x10000,-0x10(%ebp) c13b3e8f: 74 7f je c13b3f10 <prep_compound_page+0x280> c13b3e91: 83 05 70 1a 6c c5 01 addl $0x1,0xc56c1a70 c13b3e98: 89 0d a8 1a 6c c5 mov %ecx,0xc56c1aa8 c13b3e9e: 83 15 74 1a 6c c5 00 adcl $0x0,0xc56c1a74 c13b3ea5: 80 7f 31 01 cmpb $0x1,0x31(%edi) c13b3ea9: 89 1d ac 1a 6c c5 mov %ebx,0xc56c1aac c13b3eaf: 76 79 jbe c13b3f2a <prep_compound_page+0x29a> c13b3eb1: c7 46 58 00 00 00 00 movl $0x0,0x58(%esi) c13b3eb8: 83 c0 01 add $0x1,%eax c13b3ebb: a3 10 29 6c c5 mov %eax,0xc56c2910 c13b3ec0: 83 d2 00 adc $0x0,%edx c13b3ec3: 83 05 18 29 6c c5 01 addl $0x1,0xc56c2918 c13b3eca: 89 15 14 29 6c c5 mov %edx,0xc56c2914 c13b3ed0: 83 15 1c 29 6c c5 00 adcl $0x0,0xc56c291c c13b3ed7: 83 c4 0c add $0xc,%esp c13b3eda: 5b pop %ebx c13b3edb: 5e pop %esi c13b3edc: 5f pop %edi c13b3edd: 5d pop %ebp c13b3ede: c3 ret c13b3edf: 90 nop c13b3ee0: 83 05 88 18 6c c5 01 addl $0x1,0xc56c1888 c13b3ee7: 89 f0 mov %esi,%eax c13b3ee9: 89 4d f0 mov %ecx,-0x10(%ebp) c13b3eec: 83 15 8c 18 6c c5 00 adcl $0x0,0xc56c188c c13b3ef3: 31 d2 xor %edx,%edx c13b3ef5: e8 56 3e 08 00 call c1437d50 <__page_ref_set> c13b3efa: 8b 4d f0 mov -0x10(%ebp),%ecx c13b3efd: 83 05 98 18 6c c5 01 addl $0x1,0xc56c1898 c13b3f04: 83 15 9c 18 6c c5 00 adcl $0x0,0xc56c189c c13b3f0b: e9 16 fe ff ff jmp c13b3d26 <prep_compound_page+0x96> c13b3f10: 83 05 68 1a 6c c5 01 addl $0x1,0xc56c1a68 c13b3f17: 89 0d a8 1a 6c c5 mov %ecx,0xc56c1aa8 c13b3f1d: 83 15 6c 1a 6c c5 00 adcl $0x0,0xc56c1a6c c13b3f24: 89 1d ac 1a 6c c5 mov %ebx,0xc56c1aac c13b3f2a: 83 05 b0 1a 6c c5 01 addl $0x1,0xc56c1ab0 c13b3f31: 83 15 b4 1a 6c c5 00 adcl $0x0,0xc56c1ab4 c13b3f38: e9 d3 fe ff ff jmp c13b3e10 <prep_compound_page+0x180> c13b3f3d: 8d 76 00 lea 0x0(%esi),%esi c13b3f40: 83 05 c8 28 6c c5 01 addl $0x1,0xc56c28c8 c13b3f47: ba 48 c9 e8 c3 mov $0xc3e8c948,%edx c13b3f4c: 89 f0 mov %esi,%eax c13b3f4e: 83 15 cc 28 6c c5 00 adcl $0x0,0xc56c28cc c13b3f55: e8 16 16 fb ff call c1365570 <dump_page> c13b3f5a: 83 05 d8 28 6c c5 01 addl $0x1,0xc56c28d8 c13b3f61: 83 15 dc 28 6c c5 00 adcl $0x0,0xc56c28dc c13b3f68: 0f 0b ud2 c13b3f6a: 83 05 e0 28 6c c5 01 addl $0x1,0xc56c28e0 c13b3f71: 83 15 e4 28 6c c5 00 adcl $0x0,0xc56c28e4 c13b3f78: 83 05 e8 28 6c c5 01 addl $0x1,0xc56c28e8 c13b3f7f: b8 c0 d4 5e c4 mov $0xc45ed4c0,%eax c13b3f84: 83 15 ec 28 6c c5 00 adcl $0x0,0xc56c28ec c13b3f8b: e8 b8 66 f3 01 call c32ea648 <__ubsan_handle_builtin_unreachable> c13b3f90: 83 05 80 1a 6c c5 01 addl $0x1,0xc56c1a80 c13b3f97: 8d 78 ff lea -0x1(%eax),%edi c13b3f9a: 83 15 84 1a 6c c5 00 adcl $0x0,0xc56c1a84 c13b3fa1: e9 10 fe ff ff jmp c13b3db6 <prep_compound_page+0x126> c13b3fa6: 83 05 40 1a 6c c5 01 addl $0x1,0xc56c1a40 c13b3fad: ba 48 c9 e8 c3 mov $0xc3e8c948,%edx c13b3fb2: 89 f8 mov %edi,%eax c13b3fb4: 83 15 44 1a 6c c5 00 adcl $0x0,0xc56c1a44 c13b3fbb: e8 b0 15 fb ff call c1365570 <dump_page> c13b3fc0: 83 05 50 1a 6c c5 01 addl $0x1,0xc56c1a50 c13b3fc7: 83 15 54 1a 6c c5 00 adcl $0x0,0xc56c1a54 c13b3fce: 0f 0b ud2 c13b3fd0: 83 05 58 1a 6c c5 01 addl $0x1,0xc56c1a58 c13b3fd7: 83 15 5c 1a 6c c5 00 adcl $0x0,0xc56c1a5c c13b3fde: 83 05 60 1a 6c c5 01 addl $0x1,0xc56c1a60 c13b3fe5: b8 b4 d4 5e c4 mov $0xc45ed4b4,%eax c13b3fea: 83 15 64 1a 6c c5 00 adcl $0x0,0xc56c1a64 c13b3ff1: e8 52 66 f3 01 call c32ea648 <__ubsan_handle_builtin_unreachable> c13b3ff6: e9 04 2c ed 01 jmp c3286bff <prep_compound_page.cold+0x25> c13b3ffb: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi c13b3fff: 90 nop