diff options
author | Alex Gartrell <agartrell@fb.com> | 2015-07-23 14:24:40 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-27 00:54:10 -0700 |
commit | 24b4d2abd0bd628f396dada3e915d395cbf459eb (patch) | |
tree | ff4993b4c6f7c86b2f325d93d5c944446e5d5c61 /net | |
parent | 6ecfdd28c8a6504349ca8501316b1ed3f639ce44 (diff) | |
download | op-kernel-dev-24b4d2abd0bd628f396dada3e915d395cbf459eb.zip op-kernel-dev-24b4d2abd0bd628f396dada3e915d395cbf459eb.tar.gz |
ebpf: Allow dereferences of PTR_TO_STACK registers
mov %rsp, %r1 ; r1 = rsp
add $-8, %r1 ; r1 = rsp - 8
store_q $123, -8(%rsp) ; *(u64*)r1 = 123 <- valid
store_q $123, (%r1) ; *(u64*)r1 = 123 <- previously invalid
mov $0, %r0
exit ; Always need to exit
And we'd get the following error:
0: (bf) r1 = r10
1: (07) r1 += -8
2: (7a) *(u64 *)(r10 -8) = 999
3: (7a) *(u64 *)(r1 +0) = 999
R1 invalid mem access 'fp'
Unable to load program
We already know that a register is a stack address and the appropriate
offset, so we should be able to validate those references as well.
Signed-off-by: Alex Gartrell <agartrell@fb.com>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions