Commit 2399463
bpf: possibly avoid extra masking for narrower load in verifier
Commit 31fd858 ("bpf: permits narrower load from bpf program
context fields") permits narrower load for certain ctx fields.
The commit however will already generate a masking even if
the prog-specific ctx conversion produces the result with
narrower size.
For example, for __sk_buff->protocol, the ctx conversion
loads the data into register with 2-byte load.
A narrower 2-byte load should not generate masking.
For __sk_buff->vlan_present, the conversion function
set the result as either 0 or 1, essentially a byte.
The narrower 2-byte or 1-byte load should not generate masking.
To avoid unnecessary masking, prog-specific *_is_valid_access
now passes converted_op_size back to verifier, which indicates
the valid data width after perceived future conversion.
Based on this information, verifier is able to avoid
unnecessary marking.
Since we want more information back from prog-specific
*_is_valid_access checking, all of them are packed into
one data structure for more clarity.
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>1 parent 72de465 commit 2399463
File tree
5 files changed
+97
-55
lines changed- include/linux
- kernel
- bpf
- trace
- net/core
5 files changed
+97
-55
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
152 | 161 | | |
153 | 162 | | |
154 | 163 | | |
| |||
157 | 166 | | |
158 | 167 | | |
159 | 168 | | |
160 | | - | |
| 169 | + | |
161 | 170 | | |
162 | 171 | | |
163 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
| 77 | + | |
77 | 78 | | |
78 | 79 | | |
79 | 80 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
761 | 761 | | |
762 | 762 | | |
763 | 763 | | |
764 | | - | |
| 764 | + | |
765 | 765 | | |
766 | 766 | | |
767 | 767 | | |
768 | 768 | | |
769 | 769 | | |
770 | 770 | | |
771 | | - | |
772 | | - | |
| 771 | + | |
| 772 | + | |
773 | 773 | | |
774 | 774 | | |
775 | 775 | | |
776 | 776 | | |
| 777 | + | |
| 778 | + | |
777 | 779 | | |
778 | | - | |
779 | | - | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
780 | 792 | | |
781 | 793 | | |
782 | 794 | | |
| |||
3388 | 3400 | | |
3389 | 3401 | | |
3390 | 3402 | | |
3391 | | - | |
| 3403 | + | |
3392 | 3404 | | |
3393 | 3405 | | |
3394 | 3406 | | |
| |||
3431 | 3443 | | |
3432 | 3444 | | |
3433 | 3445 | | |
3434 | | - | |
| 3446 | + | |
| 3447 | + | |
3435 | 3448 | | |
3436 | 3449 | | |
3437 | 3450 | | |
| |||
3453 | 3466 | | |
3454 | 3467 | | |
3455 | 3468 | | |
3456 | | - | |
| 3469 | + | |
3457 | 3470 | | |
3458 | 3471 | | |
3459 | 3472 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
479 | 479 | | |
480 | 480 | | |
481 | 481 | | |
482 | | - | |
| 482 | + | |
483 | 483 | | |
484 | 484 | | |
485 | 485 | | |
| |||
562 | 562 | | |
563 | 563 | | |
564 | 564 | | |
565 | | - | |
| 565 | + | |
566 | 566 | | |
567 | 567 | | |
568 | 568 | | |
| |||
581 | 581 | | |
582 | 582 | | |
583 | 583 | | |
584 | | - | |
| 584 | + | |
585 | 585 | | |
586 | 586 | | |
587 | 587 | | |
| |||
595 | 595 | | |
596 | 596 | | |
597 | 597 | | |
598 | | - | |
| 598 | + | |
| 599 | + | |
599 | 600 | | |
600 | | - | |
| 601 | + | |
601 | 602 | | |
602 | | - | |
| 603 | + | |
603 | 604 | | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
604 | 609 | | |
605 | 610 | | |
606 | 611 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2856 | 2856 | | |
2857 | 2857 | | |
2858 | 2858 | | |
| 2859 | + | |
| 2860 | + | |
| 2861 | + | |
| 2862 | + | |
| 2863 | + | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
| 2867 | + | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
| 2871 | + | |
| 2872 | + | |
| 2873 | + | |
| 2874 | + | |
| 2875 | + | |
| 2876 | + | |
| 2877 | + | |
| 2878 | + | |
| 2879 | + | |
| 2880 | + | |
| 2881 | + | |
| 2882 | + | |
| 2883 | + | |
| 2884 | + | |
| 2885 | + | |
| 2886 | + | |
| 2887 | + | |
2859 | 2888 | | |
2860 | | - | |
| 2889 | + | |
2861 | 2890 | | |
2862 | 2891 | | |
2863 | 2892 | | |
| |||
2875 | 2904 | | |
2876 | 2905 | | |
2877 | 2906 | | |
| 2907 | + | |
| 2908 | + | |
| 2909 | + | |
| 2910 | + | |
2878 | 2911 | | |
2879 | 2912 | | |
2880 | 2913 | | |
2881 | 2914 | | |
| 2915 | + | |
2882 | 2916 | | |
2883 | 2917 | | |
2884 | | - | |
2885 | | - | |
2886 | 2918 | | |
2887 | 2919 | | |
2888 | 2920 | | |
2889 | 2921 | | |
2890 | | - | |
| 2922 | + | |
| 2923 | + | |
| 2924 | + | |
2891 | 2925 | | |
2892 | | - | |
| 2926 | + | |
2893 | 2927 | | |
2894 | | - | |
| 2928 | + | |
2895 | 2929 | | |
| 2930 | + | |
| 2931 | + | |
| 2932 | + | |
2896 | 2933 | | |
2897 | 2934 | | |
2898 | 2935 | | |
| |||
2901 | 2938 | | |
2902 | 2939 | | |
2903 | 2940 | | |
2904 | | - | |
2905 | | - | |
| 2941 | + | |
2906 | 2942 | | |
2907 | 2943 | | |
2908 | 2944 | | |
| |||
2924 | 2960 | | |
2925 | 2961 | | |
2926 | 2962 | | |
2927 | | - | |
| 2963 | + | |
2928 | 2964 | | |
2929 | 2965 | | |
2930 | 2966 | | |
2931 | 2967 | | |
2932 | | - | |
2933 | | - | |
| 2968 | + | |
2934 | 2969 | | |
2935 | 2970 | | |
2936 | 2971 | | |
| |||
2950 | 2985 | | |
2951 | 2986 | | |
2952 | 2987 | | |
2953 | | - | |
2954 | | - | |
2955 | | - | |
2956 | | - | |
2957 | | - | |
2958 | | - | |
2959 | | - | |
2960 | | - | |
2961 | | - | |
2962 | | - | |
| 2988 | + | |
2963 | 2989 | | |
2964 | 2990 | | |
2965 | 2991 | | |
2966 | 2992 | | |
2967 | | - | |
2968 | | - | |
| 2993 | + | |
2969 | 2994 | | |
2970 | 2995 | | |
2971 | 2996 | | |
| |||
3028 | 3053 | | |
3029 | 3054 | | |
3030 | 3055 | | |
3031 | | - | |
3032 | | - | |
| 3056 | + | |
3033 | 3057 | | |
3034 | 3058 | | |
3035 | 3059 | | |
| |||
3045 | 3069 | | |
3046 | 3070 | | |
3047 | 3071 | | |
3048 | | - | |
3049 | | - | |
3050 | | - | |
3051 | | - | |
3052 | | - | |
3053 | | - | |
3054 | | - | |
3055 | | - | |
3056 | | - | |
3057 | | - | |
| 3072 | + | |
3058 | 3073 | | |
3059 | 3074 | | |
3060 | 3075 | | |
| |||
3071 | 3086 | | |
3072 | 3087 | | |
3073 | 3088 | | |
3074 | | - | |
3075 | | - | |
| 3089 | + | |
3076 | 3090 | | |
3077 | 3091 | | |
3078 | 3092 | | |
3079 | 3093 | | |
3080 | 3094 | | |
3081 | 3095 | | |
3082 | | - | |
| 3096 | + | |
3083 | 3097 | | |
3084 | 3098 | | |
3085 | | - | |
| 3099 | + | |
3086 | 3100 | | |
3087 | 3101 | | |
3088 | 3102 | | |
| |||
0 commit comments