Thread (11 messages) 11 messages, 4 authors, 2020-03-24

Re: [PATCH] ext4: Give 32bit personalities 32bit hashes

From: Peter Maydell <hidden>
Date: 2020-03-17 11:58:23
Also in: linux-ext4, linux-fsdevel, qemu-devel, stable

On Tue, 17 Mar 2020 at 11:31, Linus Walleij [off-list ref] wrote:
It was brought to my attention that this bug from 2018 was
still unresolved: 32 bit emulators like QEMU were given
64 bit hashes when running 32 bit emulation on 64 bit systems.

The personality(2) system call supports to let processes
indicate that they are 32 bit Linux to the kernel. This
was suggested by Teo in the original thread, so I just wired
it up and it solves the problem.
Thanks for having a look at this. I'm not sure this is what
QEMU needs, though. When QEMU runs, it is not a 32-bit
process, it's a 64-bit process. Some of the syscalls
it makes are on behalf of the guest and would need 32-bit
semantics (including this one of wanting 32-bit hash sizes
in directory reads). But some syscalls it makes for itself
(either directly, or via libraries it's linked against
including glibc and glib) -- those would still want the
usual 64-bit semantics, I would have thought.
Programs that need the 32 bit hash only need to issue the
personality(PER_LINUX32) call and things start working.
What in particular does this personality setting affect?
My copy of the personality(2) manpage just says:

       PER_LINUX32 (since Linux 2.2)
              [To be documented.]

which isn't very informative.

thanks
-- PMM
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help