Messages in this thread | | | From | Kees Cook <> | Date | Tue, 26 Jun 2018 17:26:01 -0700 | Subject | Re: set_memory_* (was: Re: BUG: unable to handle kernel paging request in bpf_int_jit_compile) |
| |
On Tue, Jun 26, 2018 at 3:53 PM, Daniel Borkmann <daniel@iogearbox.net> wrote: > In any case, for pairs like set_memory_ro() + set_memory_rw() that are also used > outside of bpf e.g. STRICT_MODULE_RWX and friends which are mostly default these > days for some archs, is the choice to not check errors from there by design or from > historical context that it originated from 'debugging code' in that sense (DEBUG_RODATA / > DEBUG_SET_MODULE_RONX) earlier? Also if no-one checks for errors (and if that would > infact be the recommendation it is agreed upon) should the API be changed to void, > or generally should actual error checking occur on these + potential rollback; but > then question is what about restoring part from prior set_memory_ro() via set_memory_rw()? > Kees/others, do you happen to have some more context on recommended use around this > by any chance? (Would probably also help if we add some doc around assumptions into > include/linux/set_memory.h for future users.)
If set_memory_* can fail, I think it needs to be __must_check, and all the callers need to deal with it gracefully. Those markings aren't "advisory": they're expected to actually do what they say.
-Kees
-- Kees Cook Pixel Security
| |