]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'allow variable-offset stack acces'
authorAlexei Starovoitov <ast@kernel.org>
Wed, 10 Feb 2021 18:44:19 +0000 (10:44 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 10 Feb 2021 19:10:45 +0000 (11:10 -0800)
commit7e263dd2715e24a962f401263cab6c5569b55164
tree93a8834f71d6cab87fdaabd0eace79d096388f6a
parentdde5664135d9d457c180bf8b6b1cbb10fc6ef7c2
parentb83fd50e606e18da732a3241c3fcc8459488ab8f
Merge branch 'allow variable-offset stack acces'

Andrei Matei says:

====================

Before this patch, variable offset access to the stack was dissalowed
for regular instructions, but was allowed for "indirect" accesses (i.e.
helpers). This patch removes the restriction, allowing reading and
writing to the stack through stack pointers with variable offsets. This
makes stack-allocated buffers more usable in programs, and brings stack
pointers closer to other types of pointers.

The motivation is being able to use stack-allocated buffers for data
manipulation. When the stack size limit is sufficient, allocating
buffers on the stack is simpler than per-cpu arrays, or other
alternatives.

V2 -> V3

- var-offset writes mark all the stack slots in range as initialized, so
  that future reads are not rejected.
- rewrote the C test to not use uprobes, as per Andrii's suggestion.
- addressed other review comments from Alexei.

V1 -> V2

- add support for var-offset stack writes, in addition to reads
- add a C test
- made variable offset direct reads no longer destroy spilled registers
  in the access range
- address review nits
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>