lkml.org 
[lkml]   [2023]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2] selftests: prctl: Add new prctl test for PR_SET_NAME
    Date
    This patch will add the new test, which covers the prctl call
    PR_SET_NAME command. The test tries to give a name using the PR_SET_NAME
    call and then confirm it that it changed correctly by using PR_GET_NAME.
    It also tries to rename it with empty name.In the test PR_GET_NAME is
    tested by passing null pointer to it and check its behaviour.

    Signed-off-by: Osama Muhammad <osmtendev@gmail.com>

    ---
    changes since v1:
    -Used TASK_COMM_LEN instead of using numerical value 16.

    ---
    tools/testing/selftests/prctl/Makefile | 2 +-
    .../selftests/prctl/set-process-name.c | 62 +++++++++++++++++++
    2 files changed, 63 insertions(+), 1 deletion(-)
    create mode 100644 tools/testing/selftests/prctl/set-process-name.c

    diff --git a/tools/testing/selftests/prctl/Makefile b/tools/testing/selftests/prctl/Makefile
    index c058b81ee..cfc35d29f 100644
    --- a/tools/testing/selftests/prctl/Makefile
    +++ b/tools/testing/selftests/prctl/Makefile
    @@ -5,7 +5,7 @@ ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/)

    ifeq ($(ARCH),x86)
    TEST_PROGS := disable-tsc-ctxt-sw-stress-test disable-tsc-on-off-stress-test \
    - disable-tsc-test set-anon-vma-name-test
    + disable-tsc-test set-anon-vma-name-test set-process-name
    all: $(TEST_PROGS)

    include ../lib.mk
    diff --git a/tools/testing/selftests/prctl/set-process-name.c b/tools/testing/selftests/prctl/set-process-name.c
    new file mode 100644
    index 000000000..3bc5e0e09
    --- /dev/null
    +++ b/tools/testing/selftests/prctl/set-process-name.c
    @@ -0,0 +1,62 @@
    +// SPDX-License-Identifier: GPL-2.0
    +/*
    + * This test covers the PR_SET_NAME functionality of prctl calls
    + */
    +
    +#include <errno.h>
    +#include <sys/prctl.h>
    +#include <string.h>
    +
    +#include "../kselftest_harness.h"
    +
    +#define CHANGE_NAME "changename"
    +#define EMPTY_NAME ""
    +#define TASK_COMM_LEN 16
    +
    +int set_name(char *name)
    +{
    + int res;
    +
    + res = prctl(PR_SET_NAME, name, NULL, NULL, NULL);
    +
    + if (res < 0)
    + return -errno;
    + return res;
    +}
    +
    +int check_is_name_correct(char *check_name)
    +{
    + char name[TASK_COMM_LEN];
    + int res;
    +
    + res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
    +
    + if (res < 0)
    + return -errno;
    +
    + return !strcmp(name, check_name);
    +}
    +
    +int check_null_pointer(char *check_name)
    +{
    + char *name = NULL;
    + int res;
    +
    + res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
    +
    + return res;
    +}
    +
    +TEST(rename_process) {
    +
    + EXPECT_GE(set_name(CHANGE_NAME), 0);
    + EXPECT_TRUE(check_is_name_correct(CHANGE_NAME));
    +
    + EXPECT_GE(set_name(EMPTY_NAME), 0);
    + EXPECT_TRUE(check_is_name_correct(EMPTY_NAME));
    +
    + EXPECT_GE(set_name(CHANGE_NAME), 0);
    + EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
    +}
    +
    +TEST_HARNESS_MAIN
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-06-07 17:37    [W:4.770 / U:0.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site