Messages in this thread | | | From | Hannes Frederic Sowa <> | Subject | Re: [PATCH net-next v2] net: bpf: make eBPF interpreter images read-only | Date | Tue, 02 Sep 2014 23:35:31 +0200 |
| |
On Tue, Sep 2, 2014, at 23:31, Alexei Starovoitov wrote: > On Tue, Sep 2, 2014 at 1:53 PM, Hannes Frederic Sowa > <hannes@stressinduktion.org> wrote: > > From: Daniel Borkmann <dborkman@redhat.com> > > > > With eBPF getting more extended and exposure to user space is on it's way, > > hardening the memory range the interpreter uses to steer its command flow > > seems appropriate. This patch moves the to be interpreted bytecode to > > read-only pages. > ... > > 11 files changed, 144 insertions(+), 32 deletions(-) > > nice. quite short. > > > +#ifdef CONFIG_DEBUG_SET_MODULE_RONX > > +static inline void bpf_prog_lock_ro(struct bpf_prog *fp) > > +{ > > + set_memory_ro((unsigned long)fp, fp->pages); > > since ronx are ifdef checked together, > would probably make sense to set nx too?
NX bit is already set, because we didn't request page with PAGE_KERNEL_EXEC.
E.g. in kernel_page_tables: 0xffffc90000a94000-0xffffc90000a96000 8K ro GLB NX pte
> > +static inline void bpf_prog_unlock_ro(struct bpf_prog *fp) > > +{ > > + set_memory_rw((unsigned long)fp, fp->pages); > > why rw is needed? > since fp is allocated with vmalloc, vfree doesn't need > to touch the pages to free them, no?
We will check that. It basically was copied from jit hardening code. Maybe we can omit the call.
Thanks, Hannes
| |