| From foo@baz Thu Sep 8 01:55:11 PM CEST 2022 |
| From: Ovidiu Panait <ovidiu.panait@windriver.com> |
| Date: Tue, 6 Sep 2022 18:38:54 +0300 |
| Subject: selftests/bpf: Fix test_align verifier log patterns |
| To: stable@vger.kernel.org |
| Cc: Stanislav Fomichev <sdf@google.com>, Daniel Borkmann <daniel@iogearbox.net>, Ovidiu Panait <ovidiu.panait@windriver.com> |
| Message-ID: <20220906153855.2515437-3-ovidiu.panait@windriver.com> |
| |
| From: Stanislav Fomichev <sdf@google.com> |
| |
| commit 5366d2269139ba8eb6a906d73a0819947e3e4e0a upstream. |
| |
| Commit 294f2fc6da27 ("bpf: Verifer, adjust_scalar_min_max_vals to always |
| call update_reg_bounds()") changed the way verifier logs some of its state, |
| adjust the test_align accordingly. Where possible, I tried to not copy-paste |
| the entire log line and resorted to dropping the last closing brace instead. |
| |
| Fixes: 294f2fc6da27 ("bpf: Verifer, adjust_scalar_min_max_vals to always call update_reg_bounds()") |
| Signed-off-by: Stanislav Fomichev <sdf@google.com> |
| Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
| Link: https://lore.kernel.org/bpf/20200515194904.229296-1-sdf@google.com |
| [OP: adjust for 4.14 selftests, apply only the relevant diffs] |
| Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| tools/testing/selftests/bpf/test_align.c | 27 ++++++++++++++------------- |
| 1 file changed, 14 insertions(+), 13 deletions(-) |
| |
| --- a/tools/testing/selftests/bpf/test_align.c |
| +++ b/tools/testing/selftests/bpf/test_align.c |
| @@ -363,15 +363,15 @@ static struct bpf_align_test tests[] = { |
| * is still (4n), fixed offset is not changed. |
| * Also, we create a new reg->id. |
| */ |
| - {29, "R5=pkt(id=4,off=18,r=0,umax_value=2040,var_off=(0x0; 0x7fc))"}, |
| + {29, "R5=pkt(id=4,off=18,r=0,umax_value=2040,var_off=(0x0; 0x7fc)"}, |
| /* At the time the word size load is performed from R5, |
| * its total fixed offset is NET_IP_ALIGN + reg->off (18) |
| * which is 20. Then the variable offset is (4n), so |
| * the total offset is 4-byte aligned and meets the |
| * load's requirements. |
| */ |
| - {33, "R4=pkt(id=4,off=22,r=22,umax_value=2040,var_off=(0x0; 0x7fc))"}, |
| - {33, "R5=pkt(id=4,off=18,r=22,umax_value=2040,var_off=(0x0; 0x7fc))"}, |
| + {33, "R4=pkt(id=4,off=22,r=22,umax_value=2040,var_off=(0x0; 0x7fc)"}, |
| + {33, "R5=pkt(id=4,off=18,r=22,umax_value=2040,var_off=(0x0; 0x7fc)"}, |
| }, |
| }, |
| { |
| @@ -414,15 +414,15 @@ static struct bpf_align_test tests[] = { |
| /* Adding 14 makes R6 be (4n+2) */ |
| {9, "R6=inv(id=0,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| /* Packet pointer has (4n+2) offset */ |
| - {11, "R5=pkt(id=1,off=0,r=0,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| - {13, "R4=pkt(id=1,off=4,r=0,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| + {11, "R5=pkt(id=1,off=0,r=0,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc)"}, |
| + {13, "R4=pkt(id=1,off=4,r=0,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc)"}, |
| /* At the time the word size load is performed from R5, |
| * its total fixed offset is NET_IP_ALIGN + reg->off (0) |
| * which is 2. Then the variable offset is (4n+2), so |
| * the total offset is 4-byte aligned and meets the |
| * load's requirements. |
| */ |
| - {15, "R5=pkt(id=1,off=0,r=4,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| + {15, "R5=pkt(id=1,off=0,r=4,umin_value=14,umax_value=1034,var_off=(0x2; 0x7fc)"}, |
| /* Newly read value in R6 was shifted left by 2, so has |
| * known alignment of 4. |
| */ |
| @@ -430,15 +430,15 @@ static struct bpf_align_test tests[] = { |
| /* Added (4n) to packet pointer's (4n+2) var_off, giving |
| * another (4n+2). |
| */ |
| - {19, "R5=pkt(id=2,off=0,r=0,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc))"}, |
| - {21, "R4=pkt(id=2,off=4,r=0,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc))"}, |
| + {19, "R5=pkt(id=2,off=0,r=0,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc)"}, |
| + {21, "R4=pkt(id=2,off=4,r=0,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc)"}, |
| /* At the time the word size load is performed from R5, |
| * its total fixed offset is NET_IP_ALIGN + reg->off (0) |
| * which is 2. Then the variable offset is (4n+2), so |
| * the total offset is 4-byte aligned and meets the |
| * load's requirements. |
| */ |
| - {23, "R5=pkt(id=2,off=0,r=4,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc))"}, |
| + {23, "R5=pkt(id=2,off=0,r=4,umin_value=14,umax_value=2054,var_off=(0x2; 0xffc)"}, |
| }, |
| }, |
| { |
| @@ -473,11 +473,11 @@ static struct bpf_align_test tests[] = { |
| .matches = { |
| {4, "R5=pkt_end(id=0,off=0,imm=0)"}, |
| /* (ptr - ptr) << 2 == unknown, (4n) */ |
| - {6, "R5=inv(id=0,smax_value=9223372036854775804,umax_value=18446744073709551612,var_off=(0x0; 0xfffffffffffffffc))"}, |
| + {6, "R5=inv(id=0,smax_value=9223372036854775804,umax_value=18446744073709551612,var_off=(0x0; 0xfffffffffffffffc)"}, |
| /* (4n) + 14 == (4n+2). We blow our bounds, because |
| * the add could overflow. |
| */ |
| - {7, "R5=inv(id=0,var_off=(0x2; 0xfffffffffffffffc))"}, |
| + {7, "R5=inv(id=0,smin_value=-9223372036854775806,smax_value=9223372036854775806,umin_value=2,umax_value=18446744073709551614,var_off=(0x2; 0xfffffffffffffffc)"}, |
| /* Checked s>=0 */ |
| {9, "R5=inv(id=0,umin_value=2,umax_value=9223372036854775806,var_off=(0x2; 0x7ffffffffffffffc))"}, |
| /* packet pointer + nonnegative (4n+2) */ |
| @@ -532,7 +532,7 @@ static struct bpf_align_test tests[] = { |
| /* New unknown value in R7 is (4n) */ |
| {11, "R7=inv(id=0,umax_value=1020,var_off=(0x0; 0x3fc))"}, |
| /* Subtracting it from R6 blows our unsigned bounds */ |
| - {12, "R6=inv(id=0,smin_value=-1006,smax_value=1034,var_off=(0x2; 0xfffffffffffffffc))"}, |
| + {12, "R6=inv(id=0,smin_value=-1006,smax_value=1034,umin_value=2,umax_value=18446744073709551614,var_off=(0x2; 0xfffffffffffffffc)"}, |
| /* Checked s>= 0 */ |
| {14, "R6=inv(id=0,umin_value=2,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| /* At the time the word size load is performed from R5, |
| @@ -541,7 +541,8 @@ static struct bpf_align_test tests[] = { |
| * the total offset is 4-byte aligned and meets the |
| * load's requirements. |
| */ |
| - {20, "R5=pkt(id=1,off=0,r=4,umin_value=2,umax_value=1034,var_off=(0x2; 0x7fc))"}, |
| + {20, "R5=pkt(id=1,off=0,r=4,umin_value=2,umax_value=1034,var_off=(0x2; 0x7fc)"}, |
| + |
| }, |
| }, |
| { |