bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()
set_memory_ro() can fail, leaving memory unprotected. Check its return and take it into account as an error. Link: https://github.com/KSPP/linux/issues/7 Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: linux-hardening@vger.kernel.org <linux-hardening@vger.kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org> Message-ID: <286def78955e04382b227cb3e4b6ba272a7442e3.1709850515.git.christophe.leroy@csgroup.eu> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
4d8926a040
commit
7d2cc63eca
@ -19263,10 +19263,14 @@ static int jit_subprogs(struct bpf_verifier_env *env)
|
||||
* bpf_prog_load will add the kallsyms for the main program.
|
||||
*/
|
||||
for (i = 1; i < env->subprog_cnt; i++) {
|
||||
bpf_prog_lock_ro(func[i]);
|
||||
bpf_prog_kallsyms_add(func[i]);
|
||||
err = bpf_prog_lock_ro(func[i]);
|
||||
if (err)
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
for (i = 1; i < env->subprog_cnt; i++)
|
||||
bpf_prog_kallsyms_add(func[i]);
|
||||
|
||||
/* Last step: make now unused interpreter insns from main
|
||||
* prog consistent for later dump requests, so they can
|
||||
* later look the same as if they were interpreted only.
|
||||
|
Reference in New Issue
Block a user