On Wed, May 13, 2020 at 3:36 PM Daniel Borkmann <daniel@xxxxxxxxxxxxx> wrote:
It's used for both.
Daniel, BPF real;ly needs to make up its mind about that.
You *cannot* use ti for both.
Yes, it happens to work on x86 and some other architectures.
But on other architectures, the exact same pointer value can be a
kernel pointer or a user pointer.
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.
You need to pick one.
If you know it is a user pointer, use strncpy_from_user() (possibly
with disable_pagefault() aka strncpy_from_user_nofault()).
And if you know it is a kernel pointer, use strncpy_from_unsafe() (aka
strncpy_from_kernel_nofault()).
You really can't pick the "randomly one or the other guess what I mean " option.