Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: prctl: Add prctl test for PR_GET_NAME

This patch covers the testing of PR_GET_NAME by
reading it's value from proc/self/task/pid/comm
and matching it with the value returned by PR_GET_NAME.
If the values are matched then it's successful, otherwise
it fails.

changes since v1:
- Handled fscanf,fopen error checking.
- Defined MAX_PATH_LEN.

Signed-off-by: Osama Muhammad <osmtendev@gmail.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

authored by

Osama Muhammad and committed by
Shuah Khan
d837813f 25cfe960

+32
+32
tools/testing/selftests/prctl/set-process-name.c
··· 12 12 #define CHANGE_NAME "changename" 13 13 #define EMPTY_NAME "" 14 14 #define TASK_COMM_LEN 16 15 + #define MAX_PATH_LEN 50 15 16 16 17 int set_name(char *name) 17 18 { ··· 48 47 return res; 49 48 } 50 49 50 + int check_name(void) 51 + { 52 + 53 + int pid; 54 + 55 + pid = getpid(); 56 + FILE *fptr = NULL; 57 + char path[MAX_PATH_LEN] = {}; 58 + char name[TASK_COMM_LEN] = {}; 59 + char output[TASK_COMM_LEN] = {}; 60 + int j; 61 + 62 + j = snprintf(path, MAX_PATH_LEN, "/proc/self/task/%d/comm", pid); 63 + fptr = fopen(path, "r"); 64 + if (!fptr) 65 + return -EIO; 66 + 67 + fscanf(fptr, "%s", output); 68 + if (ferror(fptr)) 69 + return -EIO; 70 + 71 + int res = prctl(PR_GET_NAME, name, NULL, NULL, NULL); 72 + 73 + if (res < 0) 74 + return -errno; 75 + 76 + return !strcmp(output, name); 77 + } 78 + 51 79 TEST(rename_process) { 52 80 53 81 EXPECT_GE(set_name(CHANGE_NAME), 0); ··· 87 57 88 58 EXPECT_GE(set_name(CHANGE_NAME), 0); 89 59 EXPECT_LT(check_null_pointer(CHANGE_NAME), 0); 60 + 61 + EXPECT_TRUE(check_name()); 90 62 } 91 63 92 64 TEST_HARNESS_MAIN