Re: [PATCH] RISC-V/bpf: Enable bpf_probe_read{, str}()

From: Christoph Hellwig
Date: Wed Jul 06 2022 - 03:02:06 EST


On Tue, Jul 05, 2022 at 11:41:30PM -0700, Yonghong Song wrote:
>
>
> On 7/5/22 10:00 PM, Andrii Nakryiko wrote:
> > On Sun, Jul 3, 2022 at 10:53 PM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> > >
> > > On Sun, Jul 03, 2022 at 09:09:24PM +0800, Yixun Lan wrote:
> > > > Enable this option to fix a bcc error in RISC-V platform
> > > >
> > > > And, the error shows as follows:
> > >
> > > These should not be enabled on new platforms. Use the proper helpers
> > > to probe kernel vs user pointers instead.
> >
> > riscv existed as of [0], so I'd argue it is a proper bug fix, as
> > corresponding select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE should
> > have been added back then.
> >
> > But I also agree that BCC tools should be updated to use proper
> > bpf_probe_read_{kernel,user}[_str()] helpers, please contribute such
> > fixes to BCC tools and BCC itself as well. Cc'ed Alan as his ksnoop in
> > libbpf-tools seems to be using bpf_probe_read() as well and needs to
> > be fixed.
>
> Yixun, the bcc change looks like below:

No, this is broken. bcc needs to stop using bpf_probe_read entirely
for user addresses and unconditionally use bpf_probe_read_user first
and only fall back to bpf_probe_read if not supported.