Re: [PATCH 11/18] maccess: remove strncpy_from_unsafe

From: Daniel Borkmann
Date: Wed May 13 2020 - 19:58:44 EST


On 5/14/20 1:28 AM, Al Viro wrote:
On Thu, May 14, 2020 at 12:36:28AM +0200, Daniel Borkmann wrote:

So on say s390 TASK_SIZE_USUALLy is (-PAGE_SIZE), which means we'd alway
try the user copy first, which seems odd.

I'd really like to here from the bpf folks what the expected use case
is here, and if the typical argument is kernel or user memory.

It's used for both. Given this is enabled on pretty much all program types, my
assumption would be that usage is still more often on kernel memory than user one.

Then it needs an argument telling it which one to use. Look at sparc64.
Or s390. Or parisc. Et sodding cetera.

The underlying model is that the kernel lives in a separate address space.
Yes, on x86 it's actually sharing the page tables with userland, but that's
not universal. The same address can be both a valid userland one _and_
a valid kernel one. You need to tell which one do you want.

Yes, see also 6ae08ae3dea2 ("bpf: Add probe_read_{user, kernel} and probe_read_{user,
kernel}_str helpers"), and my other reply wrt bpf_trace_printk() on how to address
this. All I'm trying to say is that both bpf_probe_read() and bpf_trace_printk() do
exist in this form since early [e]bpf days for ~5yrs now and while broken on non-x86
there are a lot of users on x86 for this in the wild, so they need to have a chance
to migrate over to the new facilities before they are fully removed.