From 23acde467b555e6699b708da088e7aeda1071efe Mon Sep 17 00:00:00 2001 From: Herman Chen Date: Fri, 26 Sep 2025 11:10:17 +0800 Subject: [PATCH] fix[test]: Fix shm test crash on old kernel Signed-off-by: Herman Chen Change-Id: Iec5f2ffd6f39b877f8b97abe29751543b67a6aa5 --- kmpp/base/test/kmpp_obj_test.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/kmpp/base/test/kmpp_obj_test.c b/kmpp/base/test/kmpp_obj_test.c index 77c6675d..c4f48c08 100644 --- a/kmpp/base/test/kmpp_obj_test.c +++ b/kmpp/base/test/kmpp_obj_test.c @@ -245,24 +245,34 @@ static rk_s32 kmpp_shm_test(const char *name, rk_u32 flag) (void)name; (void)flag; + memset(shm, 0, sizeof(shm)); + for (i = 0; i < (RK_S32)MPP_ARRAY_ELEMS(sizes); i++) { kmpp_shm_get_f(&shm[i], sizes[i]); if (!shm[i]) { mpp_log_f("shm get size %d failed\n", sizes[i]); ret = rk_nok; + break; } test_detail("shm get size %d addr %p\n", sizes[i], kmpp_shm_to_entry_f(shm[i])); } for (i = 0; i < (RK_S32)MPP_ARRAY_ELEMS(sizes); i++) { + if (!shm[i]) + continue; + if (kmpp_shm_put_f(shm[i])) { mpp_log_f("shm put size %d failed\n", sizes[i]); ret = rk_nok; + break; } shm[i] = NULL; } + if (ret) + return ret; + for (i = (RK_S32)MPP_ARRAY_ELEMS(sizes) - 1; i >= 0; i--) { kmpp_shm_get_f(&shm[i], sizes[i]); if (!shm[i]) { @@ -270,11 +280,15 @@ static rk_s32 kmpp_shm_test(const char *name, rk_u32 flag) ret = rk_nok; } + if (ret) + break; + ptr = kmpp_shm_to_entry_f(shm[i]); test_detail("shm get size %d addr %p\n", sizes[i], ptr); - memset(ptr, 0, sizes[i]); + if (ptr) + memset(ptr, 0, sizes[i]); if (kmpp_shm_put_f(shm[i])) { mpp_log_f("shm put size %d failed\n", sizes[i]);