m68k 54418 fails to execute user space

Jean-Michel Hautbois jeanmichel.hautbois at yoseli.org
Wed Jun 26 00:01:48 PDT 2024


Michael,

On 26/06/2024 03:56, Michael Schmitz wrote:
> Jean-Michel,
> 
> On 24/06/24 20:56, Jean-Michel Hautbois wrote:
>>
>> When I printk the do_page_fault first debug, I get for the first call 
>> to ls:
>> bash-5.2# ls
>> [   14.700000] do page fault:
>> [   14.700000] regs->sr=0x0, regs->pc=0x70069ee6, address=0x70069ee6, 
>> 0, (ptrval)
> 
> Page not present, read fault. Please disable obfuscation of kernel 
> pointer addresses by printk. Maybe also disable address space 
> randomization while debugging this.
> 
>> This call works almost fine (I still have the assert failed: 
>> folio->private != NULL issue).
>>
>> And when I call it a second time, I get:
>> bash-5.2# ls
>> [   19.820000] do page fault:
>> [   19.820000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700e2004, 
>> 2, (ptrval)
> 
> Page not present, write fault.
> 
> It would be helpful if you could get a dump of /proc/1/maps before the 
> execve() syscall in your helloworld init replacement. That might confirm 
> all these addresses are legit (assuming mappings survive across 
> execve(), that is), and what they correspond to.

I changed the code a bit, and display an error only when error_code is 
not 0. The result is for the bash launch:
[    3.864000] Run /bin/bash as init process
[    3.865000]   with arguments:
[    3.866000]     /bin/bash
[    3.868000]   with environment:
[    3.869000]     HOME=/
[    3.871000]     TERM=linux
[    4.250000] do page fault:
[    4.250000] regs->sr=0x2000, regs->pc=0x41366984, address=0x700b3364, 
2, 41fb0000
[    4.258000] do page fault:
[    4.258000] regs->sr=0x2000, regs->pc=0x41366984, address=0x6002140c, 
2, 41fb0000
[    4.273000] do page fault:
[    4.273000] regs->sr=0x0, regs->pc=0x60011996, address=0x6001ff74, 3, 
41fb0000
[    4.332000] do page fault:
[    4.332000] regs->sr=0x10, regs->pc=0x60012bf4, address=0x700adf44, 
3, 41fb0000
[    4.497000] do page fault:
[    4.497000] regs->sr=0x0, regs->pc=0x60016344, address=0x600592d0, 2, 
41fb0000
[    4.505000] do page fault:
[    4.505000] regs->sr=0x10, regs->pc=0x60007320, address=0x60055f54, 
3, 41fb0000
[    4.533000] do page fault:
[    4.533000] regs->sr=0x0, regs->pc=0x60016344, address=0x60066244, 2, 
41fb0000
[    4.539000] do page fault:
[    4.539000] regs->sr=0x10, regs->pc=0x60007320, address=0x60065f54, 
3, 41fb0000
[    4.635000] do page fault:
[    4.635000] regs->sr=0x0, regs->pc=0x600098d2, address=0x60068014, 2, 
41fb0000
[    4.637000] do page fault:
[    4.637000] regs->sr=0x0, regs->pc=0x60016344, address=0x600a2d1c, 2, 
41fb0000
[    4.647000] do page fault:
[    4.647000] regs->sr=0x10, regs->pc=0x60007320, address=0x600a1f54, 
3, 41fb0000
[    5.163000] do page fault:
[    5.163000] regs->sr=0x0, regs->pc=0x60016344, address=0x601d1d28, 2, 
41fb0000
[    5.175000] do page fault:
[    5.175000] regs->sr=0x10, regs->pc=0x60007320, address=0x601cdf44, 
3, 41fb0000
[    5.212000] do page fault:
[    5.212000] regs->sr=0x14, regs->pc=0x6000b04a, address=0x601ce004, 
2, 41fb0000
[    5.373000] do page fault:
[    5.373000] regs->sr=0x14, regs->pc=0x6000b04a, address=0x60056004, 
2, 41fb0000
[    5.396000] random: crng init done
[    5.401000] do page fault:
[    5.401000] regs->sr=0x14, regs->pc=0x6000b04a, address=0x700ae004, 
2, 41fb0000
[    5.414000] do page fault:
[    5.414000] regs->sr=0x0, regs->pc=0x6000b42a, address=0x700b0000, 2, 
41fb0000
[    5.487000] do page fault:
[    5.487000] regs->sr=0x0, regs->pc=0x6019cbf0, address=0x601d5010, 2, 
41fb0000
[    5.488000] do page fault:
[    5.488000] regs->sr=0x0, regs->pc=0x6019cbf6, address=0x601db288, 2, 
41fb0000
[    5.552000] do page fault:
[    5.552000] regs->sr=0x0, regs->pc=0x600e1032, address=0x601d21d4, 3, 
41fb0000
[    5.569000] do page fault:
[    5.569000] regs->sr=0x0, regs->pc=0x600df938, address=0x700ba8e4, 2, 
41fb0000
[    5.580000] do page fault:
[    5.580000] regs->sr=0x8, regs->pc=0x70038476, address=0x700b4890, 2, 
41fb0000
[    5.634000] do page fault:
[    5.634000] regs->sr=0x0, regs->pc=0x6011cbf2, address=0x700be004, 2, 
41fb0000
[    5.677000] do page fault:
[    5.677000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700c71b4, 2, 
41fb0000
[    5.684000] do page fault:
[    5.684000] regs->sr=0x2004, regs->pc=0x410a724a, address=0x700c0000, 
2, 41fb0000
[    5.686000] do page fault:
[    5.686000] regs->sr=0x2004, regs->pc=0x410a724a, address=0x700c2000, 
2, 41fb0000
[    6.058000] do page fault:
[    6.058000] regs->sr=0x10, regs->pc=0x7004b63c, address=0x700b8d2a, 
3, 41fb0000
[    6.206000] do page fault:
[    6.206000] regs->sr=0x0, regs->pc=0x700365d2, address=0x6005a468, 2, 
41fb0000
[    6.231000] do page fault:
[    6.231000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700c483c, 2, 
41fb0000
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
[    6.327000] do page fault:
[    6.327000] regs->sr=0x4, regs->pc=0x70092344, address=0x700bc410, 3, 
41fb0000
[    6.349000] do page fault:
[    6.349000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700c80f4, 2, 
41fb0000
[    6.438000] do page fault:
[    6.438000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700ca114, 2, 
41fb0000
[    6.452000] do page fault:
[    6.452000] regs->sr=0x8, regs->pc=0x600f28d0, address=0xbffcfd4c, 2, 
41fb0000
[    6.481000] do page fault:
[    6.481000] regs->sr=0x0, regs->pc=0x6008b6a8, address=0xbffcd1a0, 2, 
41fb0000
[    6.493000] do page fault:
[    6.493000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700cc474, 2, 
41fb0000
[    6.516000] do page fault:
[    6.516000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700ce1bc, 2, 
41fb0000
[    6.517000] do page fault:
[    6.517000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700d000c, 2, 
41fb0000
[    6.519000] do page fault:
[    6.519000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700d246c, 2, 
41fb0000
[    6.520000] do page fault:
[    6.520000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700d42bc, 2, 
41fb0000
[    6.528000] do page fault:
[    6.528000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700d6004, 2, 
41fb0000
[    6.543000] do page fault:
[    6.543000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700d8584, 2, 
41fb0000
[    6.544000] do page fault:
[    6.544000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700da3d4, 2, 
41fb0000
[    6.546000] do page fault:
[    6.546000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700dc224, 2, 
41fb0000
[    6.547000] do page fault:
[    6.547000] regs->sr=0x0, regs->pc=0x6011d65a, address=0x700de074, 2, 
41fb0000
[    6.576000] do page fault:
[    6.576000] regs->sr=0x0, regs->pc=0x6011ca12, address=0x700e02c4, 2, 
41fb0000
bash-5.2#

My kernel is loaded at 0x41000000.
JM



More information about the linux-mtd mailing list