[Linux-stm32] [PATCH 5/5] selftests/bpf: make cfi_stubs globals const
Alexei Starovoitov
alexei.starovoitov at gmail.com
Wed Dec 31 18:13:47 UTC 2025
On Wed, Dec 31, 2025 at 10:09 AM Caleb Sander Mateos
<csander at purestorage.com> wrote:
>
> On Wed, Dec 31, 2025 at 10:04 AM <bot+bpf-ci at kernel.org> wrote:
> >
> > > diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
> > > index 90c4b1a51de6..5e460b1dbdb6 100644
> > > --- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
> > > +++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
> >
> > [ ... ]
> >
> > > @@ -1275,7 +1275,7 @@ bpf_testmod_ops__test_return_ref_kptr(int dummy, struct task_struct *task__ref,
> > > return NULL;
> > > }
> > >
> > > -static struct bpf_testmod_ops __bpf_testmod_ops = {
> > > +static const struct bpf_testmod_ops __bpf_testmod_ops = {
> > > .test_1 = bpf_testmod_test_1,
> > > .test_2 = bpf_testmod_test_2,
> >
> > Is it safe to make __bpf_testmod_ops const here? In bpf_testmod_init(),
> > this struct is modified at runtime:
> >
> > tramp = (void **)&__bpf_testmod_ops.tramp_1;
> > while (tramp <= (void **)&__bpf_testmod_ops.tramp_40)
> > *tramp++ = bpf_testmod_tramp;
> >
> > Writing to a const-qualified object is undefined behavior and may cause a
> > protection fault when the compiler places this in read-only memory. Would
> > the module fail to load on systems where .rodata is actually read-only?
>
> Yup, that's indeed the bug caught by KASAN. Missed this mutation at
> init time, I'll leave __bpf_testmod_ops as mutable.
No. You're missing the point. The whole patch set is no go.
The pointer to cfi stub can be updated just as well.
More information about the Linux-stm32
mailing list