]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
selftests/riscv: ptrace: Fix memory leak of regset_data in vector tests
authorWang Yan <wangyan01@kylinos.cn>
Fri, 10 Jul 2026 08:34:37 +0000 (16:34 +0800)
committerPaul Walmsley <pjw@kernel.org>
Fri, 10 Jul 2026 15:32:35 +0000 (09:32 -0600)
The regset_data buffer allocated with calloc() in the parent process
of several vector ptrace tests is never freed before returning,
causing memory leaks in:

- ptrace_v_not_enabled
- ptrace_v_early_debug
- ptrace_v_syscall_clobbering
- v_csr_invalid/ptrace_v_invalid_values
- v_csr_valid/ptrace_v_valid_values

Add free(regset_data) before kill(pid, SIGKILL) to release the
allocated buffer.

Signed-off-by: Wang Yan <wangyan01@kylinos.cn>
Reviewed-by: Sergey Matyukevich <geomatsi@gmail.com>
Link: https://patch.msgid.link/20260710083437.489648-1-wangyan01@kylinos.cn
[pjw@kernel.org: Fixed Sergey's E-mail address]
Signed-off-by: Paul Walmsley <pjw@kernel.org>
tools/testing/selftests/riscv/vector/validate_v_ptrace.c

index b038e2175c80504b55c9cc9541b513f228c1f312..a388b7963d4771b594f96f35bc540947ac8ae73b 100644 (file)
@@ -75,7 +75,7 @@ TEST(ptrace_v_not_enabled)
                ASSERT_EQ(-1, ret);
 
                /* cleanup */
-
+               free(regset_data);
                ASSERT_EQ(0, kill(pid, SIGKILL));
        }
 }
@@ -207,7 +207,7 @@ TEST(ptrace_v_early_debug)
                EXPECT_EQ(vl_csr, regset_data->vl);
 
                /* cleanup */
-
+               free(regset_data);
                ASSERT_EQ(0, kill(pid, SIGKILL));
        }
 }
@@ -331,7 +331,7 @@ TEST(ptrace_v_syscall_clobbering)
                EXPECT_EQ(0UL, regset_data->vl);
 
                /* cleanup */
-
+               free(regset_data);
                ASSERT_EQ(0, kill(pid, SIGKILL));
        }
 }
@@ -649,7 +649,7 @@ TEST_F(v_csr_invalid, ptrace_v_invalid_values)
                ASSERT_EQ(ret, -1);
 
                /* cleanup */
-
+               free(regset_data);
                ASSERT_EQ(0, kill(pid, SIGKILL));
        }
 }
@@ -911,7 +911,7 @@ TEST_F(v_csr_valid, ptrace_v_valid_values)
                EXPECT_EQ(regset_data->vlenb, vlenb);
 
                /* cleanup */
-
+               free(regset_data);
                ASSERT_EQ(0, kill(pid, SIGKILL));
        }
 }