Message ID | 20220831042629.130006-1-houtao@huaweicloud.com (mailing list archive) |
---|---|
Headers | show |
Series | fixes for concurrent htab updates | expand |
Hello: This series was applied to bpf/bpf-next.git (master) by Martin KaFai Lau <martin.lau@kernel.org>: On Wed, 31 Aug 2022 12:26:26 +0800 you wrote: > From: Hou Tao <houtao1@huawei.com> > > Hi, > > The patchset aims to fix the issues found during investigating the > syzkaller problem reported in [0]. It seems that the concurrent updates > to the same hash-table bucket may fail as shown in patch 1. > > [...] Here is the summary with links: - [bpf-next,v4,1/3] bpf: Disable preemption when increasing per-cpu map_locked https://git.kernel.org/bpf/bpf-next/c/2775da216287 - [bpf-next,v4,2/3] bpf: Propagate error from htab_lock_bucket() to userspace https://git.kernel.org/bpf/bpf-next/c/66a7a92e4d0d - [bpf-next,v4,3/3] selftests/bpf: Add test cases for htab update https://git.kernel.org/bpf/bpf-next/c/1c636b6277a2 You are awesome, thank you!
From: Hou Tao <houtao1@huawei.com> Hi, The patchset aims to fix the issues found during investigating the syzkaller problem reported in [0]. It seems that the concurrent updates to the same hash-table bucket may fail as shown in patch 1. Patch 1 uses preempt_disable() to fix the problem for htab_use_raw_lock() case. For !htab_use_raw_lock() case, the problem is left to "BPF specific memory allocator" patchset [1] in which !htab_use_raw_lock() will be removed. Patch 2 fixes the out-of-bound memory read problem reported in [0]. The problem has the root cause as patch 1 and it is fixed by handling -EBUSY from htab_lock_bucket() correctly. Patch 3 add two cases for hash-table update: one for the reentrancy of bpf_map_update_elem(), and another one for concurrent updates of the same hash-table bucket. Comments are always welcome. Regards, Tao [0]: https://lore.kernel.org/bpf/CACkBjsbuxaR6cv0kXJoVnBfL9ZJXjjoUcMpw_Ogc313jSrg14A@mail.gmail.com/ [1]: https://lore.kernel.org/bpf/20220819214232.18784-1-alexei.starovoitov@gmail.com/ Change Log: v4: * rebased on bpf-next * add htab_update to DENYLIST.s390x v3: https://lore.kernel.org/bpf/20220829023709.1958204-1-houtao@huaweicloud.com/ * patch 1: update commit message and add Fixes tag * patch 2: add Fixes tag * patch 3: elaborate the description of test cases v2: https://lore.kernel.org/bpf/bd60ef93-1c6a-2db2-557d-b09b92ad22bd@huaweicloud.com/ * Note the fix is for CONFIG_PREEMPT case in commit message and add Reviewed-by tag for patch 1 * Drop patch "bpf: Allow normally concurrent map updates for !htab_use_raw_lock() case" v1: https://lore.kernel.org/bpf/20220821033223.2598791-1-houtao@huaweicloud.com/ Hou Tao (3): bpf: Disable preemption when increasing per-cpu map_locked bpf: Propagate error from htab_lock_bucket() to userspace selftests/bpf: Add test cases for htab update kernel/bpf/hashtab.c | 30 ++++- tools/testing/selftests/bpf/DENYLIST.s390x | 1 + .../selftests/bpf/prog_tests/htab_update.c | 126 ++++++++++++++++++ .../testing/selftests/bpf/progs/htab_update.c | 29 ++++ 4 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/htab_update.c create mode 100644 tools/testing/selftests/bpf/progs/htab_update.c