Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bpf: Relax tuple len requirement for sk helpers.

__bpf_skc_lookup() safely handles incorrect values of tuple len,
hence we can allow zero to be passed as tuple len.
This patch alone doesn't make an observable verifier difference.
It's a trivial improvement that might simplify bpf programs.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/bpf/20240613013815.953-2-alexei.starovoitov@gmail.com

authored by

Alexei Starovoitov and committed by
Daniel Borkmann
124e8c2b cdbde084

+12 -12
+12 -12
net/core/filter.c
··· 6815 6815 .ret_type = RET_PTR_TO_SOCK_COMMON_OR_NULL, 6816 6816 .arg1_type = ARG_PTR_TO_CTX, 6817 6817 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6818 - .arg3_type = ARG_CONST_SIZE, 6818 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6819 6819 .arg4_type = ARG_ANYTHING, 6820 6820 .arg5_type = ARG_ANYTHING, 6821 6821 }; ··· 6834 6834 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 6835 6835 .arg1_type = ARG_PTR_TO_CTX, 6836 6836 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6837 - .arg3_type = ARG_CONST_SIZE, 6837 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6838 6838 .arg4_type = ARG_ANYTHING, 6839 6839 .arg5_type = ARG_ANYTHING, 6840 6840 }; ··· 6853 6853 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 6854 6854 .arg1_type = ARG_PTR_TO_CTX, 6855 6855 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6856 - .arg3_type = ARG_CONST_SIZE, 6856 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6857 6857 .arg4_type = ARG_ANYTHING, 6858 6858 .arg5_type = ARG_ANYTHING, 6859 6859 }; ··· 6877 6877 .ret_type = RET_PTR_TO_SOCK_COMMON_OR_NULL, 6878 6878 .arg1_type = ARG_PTR_TO_CTX, 6879 6879 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6880 - .arg3_type = ARG_CONST_SIZE, 6880 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6881 6881 .arg4_type = ARG_ANYTHING, 6882 6882 .arg5_type = ARG_ANYTHING, 6883 6883 }; ··· 6901 6901 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 6902 6902 .arg1_type = ARG_PTR_TO_CTX, 6903 6903 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6904 - .arg3_type = ARG_CONST_SIZE, 6904 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6905 6905 .arg4_type = ARG_ANYTHING, 6906 6906 .arg5_type = ARG_ANYTHING, 6907 6907 }; ··· 6925 6925 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 6926 6926 .arg1_type = ARG_PTR_TO_CTX, 6927 6927 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6928 - .arg3_type = ARG_CONST_SIZE, 6928 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6929 6929 .arg4_type = ARG_ANYTHING, 6930 6930 .arg5_type = ARG_ANYTHING, 6931 6931 }; ··· 6963 6963 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 6964 6964 .arg1_type = ARG_PTR_TO_CTX, 6965 6965 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6966 - .arg3_type = ARG_CONST_SIZE, 6966 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6967 6967 .arg4_type = ARG_ANYTHING, 6968 6968 .arg5_type = ARG_ANYTHING, 6969 6969 }; ··· 6987 6987 .ret_type = RET_PTR_TO_SOCK_COMMON_OR_NULL, 6988 6988 .arg1_type = ARG_PTR_TO_CTX, 6989 6989 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 6990 - .arg3_type = ARG_CONST_SIZE, 6990 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 6991 6991 .arg4_type = ARG_ANYTHING, 6992 6992 .arg5_type = ARG_ANYTHING, 6993 6993 }; ··· 7011 7011 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 7012 7012 .arg1_type = ARG_PTR_TO_CTX, 7013 7013 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 7014 - .arg3_type = ARG_CONST_SIZE, 7014 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 7015 7015 .arg4_type = ARG_ANYTHING, 7016 7016 .arg5_type = ARG_ANYTHING, 7017 7017 }; ··· 7031 7031 .ret_type = RET_PTR_TO_SOCK_COMMON_OR_NULL, 7032 7032 .arg1_type = ARG_PTR_TO_CTX, 7033 7033 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 7034 - .arg3_type = ARG_CONST_SIZE, 7034 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 7035 7035 .arg4_type = ARG_ANYTHING, 7036 7036 .arg5_type = ARG_ANYTHING, 7037 7037 }; ··· 7050 7050 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 7051 7051 .arg1_type = ARG_PTR_TO_CTX, 7052 7052 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 7053 - .arg3_type = ARG_CONST_SIZE, 7053 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 7054 7054 .arg4_type = ARG_ANYTHING, 7055 7055 .arg5_type = ARG_ANYTHING, 7056 7056 }; ··· 7069 7069 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 7070 7070 .arg1_type = ARG_PTR_TO_CTX, 7071 7071 .arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY, 7072 - .arg3_type = ARG_CONST_SIZE, 7072 + .arg3_type = ARG_CONST_SIZE_OR_ZERO, 7073 7073 .arg4_type = ARG_ANYTHING, 7074 7074 .arg5_type = ARG_ANYTHING, 7075 7075 };