Doing some refactoring resulted in a kernel splat when reading sock_ops fields. Patch 1, has the details and proposed fix for sock_ops sk field access. Patch 2, has the details and proposed fix for reading sock_ops->sk field Patch 3, Gives a reproducer and test to verify the fix. I used the netcnt program to test this because I wanted a splat to be generated which can only be done if we have real traffic exercising the code. Patch 4, Is an optional patch. While doing above I wanted to also verify loads were OK. The code looked good, but I wanted some xlated code to review as well. It seems like a good idea to add it here or at least shouldn't hurt. I could push it into bpf-next if folks want. Patch 5, Add reproducers for reading scok_ops->sk field. I split Patch1 and Patch2 into two two patches because they have different fixes tags. Seems like this will help with backporting. They could be squashed though if folks want. For selftests I was fairly verbose creating three patches each with the associated xlated code to handle each of the three cases. My hope is this helps the reader understand issues and review fixes. Its more or less how I debugged the issue and created reproducers so it at least helped me to have them logically different patches. --- John Fastabend (5): bpf: sock_ops ctx access may stomp registers in corner case bpf: sock_ops sk access may stomp registers when dst_reg = src_reg bpf, selftests: Add tests for ctx access in sock_ops with single register bpf, selftests: Add tests for sock_ops load with r9,r8.r7 registers bpf, selftests: Add tests to sock_ops for loading sk net/core/filter.c | 75 +++++++++++++++++--- .../testing/selftests/bpf/progs/test_tcpbpf_kern.c | 41 +++++++++++ 2 files changed, 103 insertions(+), 13 deletions(-) -- Signature