[CRIU] [PATCH] s390: Prevent GOT relocations

Michael Holzheu holzheu at linux.vnet.ibm.com
Thu Jul 20 21:47:00 MSK 2017


Am Wed, 19 Jul 2017 17:36:26 +0200
schrieb Adrian Reber <areber at redhat.com>:

> On Wed, Jul 19, 2017 at 11:00:15AM +0200, Michael Holzheu wrote:
> > > Thanks for helping to figure this out. It was not only sys_socket().
> > > Basically all syscalls from
> > > 
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=977108f89c989b1eeb5c8d938e1e71913391eb5f
> > > 
> > > which were present in
> > > compel/arch/s390/plugins/std/syscalls/syscall-s390.tbl had to be added
> > > to the kernel. Now zdtm seems to be quite happy:
> > 
> > That's good news.
> >  
> > > $ ./zdtm.py run -a -f h --keep-going -x zdtm/static/s390x_mmap_high
> > > [...]
> > > 
> > > ################### 1 TEST(S) FAILED (TOTAL 315/SKIPPED 115) ###################
> > >  * zdtm/static/stopped(h)
> > > ##################################### FAIL #####################################
> > > 
> > > I have to excldue zdtm/static/s390x_mmap_high as that test case just
> > > hangs. zdtm says ==== ALARM ==== and then a process list.
> > 
> > I assume you have included already applied the kernel patch
> > ee71d16d22 ("s390/mm: make TASK_SIZE independent from the number
> > of page table levels").
> > 
> > But it should not hang without the patch either - so we have to look into
> > this issue.
> 
> Just saw an oops when running s390x_mmap_high:
> 
> [ 3279.609740] kernel BUG at mm/rmap.c:1144!
> [ 3279.609777] illegal operation: 0001 [#1] SMP
> [ 3279.609781] Modules linked in: binfmt_misc vmur ip_tables xfs libcrc32c dasd_
> fba_mod qeth_l2 dasd_eckd_mod dasd_mod lcs qeth ctcm qdio fsm ccwgroup dm_mirror
>  dm_region_hash dm_log dm_mod
> [ 3279.609801] CPU: 1 PID: 1581 Comm: s390x_mmap_high Not tainted 3.10.0-693.el7
> .criu.s390x #1
> [ 3279.609804] task: 000000007f3a6348 ti: 000000007372c000 task.ti: 000000007372
> c000
> [ 3279.609807] Krnl PSW : 0704c00180000000 000000000029ba22 (__page_set_anon_rma
> p+0x92/0xa8)
> [ 3279.609818]            R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 EA:
> 3
> Krnl GPRS: 00000000fffffffb 0000000000000000 000003d101dcd600 000000007db285b0  
> [ 3279.609826]            001ffffffffff000 0000000000000000 0000000000000000 000
> 0000000000000
> [ 3279.609829]            000000007db285b0 0000000077358215 00000000017b1c00 000
> 003d101dcd600
> [ 3279.609833]            000000007c883fe8 000003d101dcd600 000000007372fdb0 000
> 000007372fd90
> [ 3279.609848] Krnl Code: 000000000029ba14: e31010000004        lg      %r1,0(%r
> 1)
>            000000000029ba1a: a7f4ffe4           brc     15,29b9e2
>           #000000000029ba1e: a7f40001           brc     15,29ba20
>           >000000000029ba22: b9040023           lgr     %r2,%r3
>            000000000029ba26: b9040034           lgr     %r3,%r4
>            000000000029ba2a: c0e500008d53       brasl   %r14,2ad4d0
>            000000000029ba30: a7f4ffeb           brc     15,29ba06
>            000000000029ba34: 0707               bcr     0,%r7
> [ 3279.609859] Call Trace:
> [ 3279.609860] ([<00000000017b1c00>] 0x17b1c00)
> [ 3279.609862]  [<0000000000291d64>] handle_mm_fault+0xb3c/0x1050
> [ 3279.609864]  [<00000000006c8060>] do_dat_exception+0x1f8/0x348
> [ 3279.609869]  [<00000000006c619e>] pgm_check_handler+0x16e/0x172
> [ 3279.609872]  [<0000000080001ffa>] 0x80001ffa
> [ 3279.609873] Last Breaking-Event-Address:
> [ 3279.609874]  [<000000000029ba1e>] __page_set_anon_rmap+0x8e/0xa8
> [ 3279.609876]
> [ 3279.609879] Kernel panic - not syncing: Fatal exception: panic_on_oops
> 
> This means that I probably backported the mentioned patch not correctly ;-)

Yes ... and at least the test case was good enough to find this out ;-)

Michael



More information about the CRIU mailing list