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