]> asedeno.scripts.mit.edu Git - linux.git/commit
Merge branch 'bpf-varstack-fixes'
authorDaniel Borkmann <daniel@iogearbox.net>
Fri, 5 Apr 2019 14:50:08 +0000 (16:50 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 5 Apr 2019 14:50:09 +0000 (16:50 +0200)
commit347807d3876aa9c75f64001c736e0a16a6b21acf
tree91f257572d01b1f53adb0ebf05bd74edf17e7bc5
parent636e78b1cdb40b77a79b143dbd9d94847b360efa
parent1fbd20f8b77b366ea4aeb92ade72daa7f36a7e3b
Merge branch 'bpf-varstack-fixes'

Andrey Ignatov says:

====================
v2->v3:
- sanity check max value for variable offset.

v1->v2:
- rely on meta = NULL to reject var_off stack access to uninit buffer.

This patch set is a follow-up for discussion [1].

It fixes variable offset stack access handling for raw and unprivileged
mode, rejecting both of them, and sanity checks max variable offset value.

Patch 1 handles raw (uninitialized) mode.
Patch 2 adds test for raw mode.
Patch 3 handles unprivileged mode.
Patch 4 adds test for unprivileged mode.
Patch 5 adds sanity check for max value of variable offset.
Patch 6 adds test for variable offset max value checking.
Patch 7 is a minor fix in verbose log.

Unprivileged mode is an interesting case since one (and only?) way to come
up with variable offset is to use pointer arithmetics. Though pointer
arithmetics is already prohibited for unprivileged mode. I'm not sure if
it's enough though and it seems like a good idea to still reject variable
offset for unpriv in check_stack_boundary(). Please see patches 3 and 4
for more details on this.

[1] https://marc.info/?l=linux-netdev&m=155419526427742&w=2
====================

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>