Thread (10 messages) 10 messages, 5 authors, 2021-08-17

Re: [PATCH] futex: Fix fault_in_user_writeable()

From: Huacai Chen <hidden>
Date: 2021-08-17 01:53:32
Also in: lkml

Hi, Davidlohr and Thomas,

On Tue, Aug 17, 2021 at 3:03 AM Thomas Gleixner [off-list ref] wrote:
On Mon, Aug 16 2021 at 11:27, Davidlohr Bueso wrote:
quoted
On Mon, 16 Aug 2021, Huacai Chen wrote:
quoted
fault_in_user_writeable() should verify R/W access but only verify W. In
most archs W implies R, but not true in MIPS and LoongArch, so fix it.
Yuck for a find_vma() in futex.c. If this is a problem in MIPS, shouldn't
the fix be there? Furthermore it's stated that fault_in_user_writeable():

"Fault in user address and verify RW access"
That seems to be wishful thinking given the fact that some architectures
do not imply R for FLAG_FAULT_WRITE.
quoted
And you guys seem to have proposed it already:

https://lore.kernel.org/linux-mips/20200630005845.1239974-1-liulichao@loongson.cn/ (local)
This works, but I don't think this is a MIPS problem, so does Thomas
Bogendoerfer. Because write-only page is valid in MIPS (so Thomas
rejected this patch).
That's surely one way to fix that. If that does not work for whatever
reason, then we really don't want this find_vma() hack there, but rather
something like:
I don't know why find_vma() is unacceptable here, there is also
find_vma() in fixup_user_fault().
    if (IS_ENABLED(CONFIG_ARCH_USER_FAULT_VOODOO) && get_user(&tmp, uaddr))
        return -EFAULT;
get_user() may be better than find_vma(), but can we drop
CONFIG_ARCH_USER_FAULT_VOODOO here? On those "W implies R" archs,
get_user() always success, this can simplify the logic.

Huacai
Thanks,

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