Commit 5927f01
bpf: Fix issue in verifying allow_ptr_leaks
commit d75e30d upstream.
After we converted the capabilities of our networking-bpf program from
cap_sys_admin to cap_net_admin+cap_bpf, our networking-bpf program
failed to start. Because it failed the bpf verifier, and the error log
is "R3 pointer comparison prohibited".
A simple reproducer as follows,
SEC("cls-ingress")
int ingress(struct __sk_buff *skb)
{
struct iphdr *iph = (void *)(long)skb->data + sizeof(struct ethhdr);
if ((long)(iph + 1) > (long)skb->data_end)
return TC_ACT_STOLEN;
return TC_ACT_OK;
}
Per discussion with Yonghong and Alexei [1], comparison of two packet
pointers is not a pointer leak. This patch fixes it.
Our local kernel is 6.1.y and we expect this fix to be backported to
6.1.y, so stable is CCed.
[1]. https://lore.kernel.org/bpf/CAADnVQ+Nmspr7Si+pxWn8zkE7hX-7s93ugwC+94aXSy4uQ9vBg@mail.gmail.com/
Suggested-by: Yonghong Song <yonghong.song@linux.dev>
Suggested-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230823020703.3790-2-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>1 parent 247ee56 commit 5927f01
1 file changed
Lines changed: 9 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13597 | 13597 | | |
13598 | 13598 | | |
13599 | 13599 | | |
| 13600 | + | |
| 13601 | + | |
| 13602 | + | |
| 13603 | + | |
| 13604 | + | |
| 13605 | + | |
13600 | 13606 | | |
13601 | 13607 | | |
13602 | 13608 | | |
| |||
13608 | 13614 | | |
13609 | 13615 | | |
13610 | 13616 | | |
13611 | | - | |
| 13617 | + | |
| 13618 | + | |
| 13619 | + | |
13612 | 13620 | | |
13613 | 13621 | | |
13614 | 13622 | | |
13615 | 13623 | | |
13616 | | - | |
13617 | 13624 | | |
13618 | 13625 | | |
13619 | 13626 | | |
13620 | 13627 | | |
13621 | 13628 | | |
13622 | 13629 | | |
13623 | 13630 | | |
13624 | | - | |
13625 | | - | |
13626 | | - | |
13627 | | - | |
13628 | | - | |
13629 | | - | |
13630 | 13631 | | |
13631 | 13632 | | |
13632 | 13633 | | |
| |||
0 commit comments