de7b992710
Add a regression test to check against invalid check_and_init_map_value call inside prealloc_lru_pop. The kptr should not be reset to NULL once we set it after deleting the map element. Hence, we trigger a program that updates the element causing its reuse, and checks whether the unref kptr is reset or not. If it is, prealloc_lru_pop does an incorrect check_and_init_map_value call and the test fails. Acked-by: Yonghong Song <yhs@fb.com> Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Link: https://lore.kernel.org/r/20220809213033.24147-4-memxor@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
22 lines
462 B
C
22 lines
462 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <test_progs.h>
|
|
|
|
#include "lru_bug.skel.h"
|
|
|
|
void test_lru_bug(void)
|
|
{
|
|
struct lru_bug *skel;
|
|
int ret;
|
|
|
|
skel = lru_bug__open_and_load();
|
|
if (!ASSERT_OK_PTR(skel, "lru_bug__open_and_load"))
|
|
return;
|
|
ret = lru_bug__attach(skel);
|
|
if (!ASSERT_OK(ret, "lru_bug__attach"))
|
|
goto end;
|
|
usleep(1);
|
|
ASSERT_OK(skel->data->result, "prealloc_lru_pop doesn't call check_and_init_map_value");
|
|
end:
|
|
lru_bug__destroy(skel);
|
|
}
|