mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 10:17:32 +00:00
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>
This commit is contained in:
parent
25cfe960a8
commit
d837813ff4
@ -12,6 +12,7 @@
|
||||
#define CHANGE_NAME "changename"
|
||||
#define EMPTY_NAME ""
|
||||
#define TASK_COMM_LEN 16
|
||||
#define MAX_PATH_LEN 50
|
||||
|
||||
int set_name(char *name)
|
||||
{
|
||||
@ -47,6 +48,35 @@ int check_null_pointer(char *check_name)
|
||||
return res;
|
||||
}
|
||||
|
||||
int check_name(void)
|
||||
{
|
||||
|
||||
int pid;
|
||||
|
||||
pid = getpid();
|
||||
FILE *fptr = NULL;
|
||||
char path[MAX_PATH_LEN] = {};
|
||||
char name[TASK_COMM_LEN] = {};
|
||||
char output[TASK_COMM_LEN] = {};
|
||||
int j;
|
||||
|
||||
j = snprintf(path, MAX_PATH_LEN, "/proc/self/task/%d/comm", pid);
|
||||
fptr = fopen(path, "r");
|
||||
if (!fptr)
|
||||
return -EIO;
|
||||
|
||||
fscanf(fptr, "%s", output);
|
||||
if (ferror(fptr))
|
||||
return -EIO;
|
||||
|
||||
int res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
|
||||
|
||||
if (res < 0)
|
||||
return -errno;
|
||||
|
||||
return !strcmp(output, name);
|
||||
}
|
||||
|
||||
TEST(rename_process) {
|
||||
|
||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||
@ -57,6 +87,8 @@ TEST(rename_process) {
|
||||
|
||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
|
||||
|
||||
EXPECT_TRUE(check_name());
|
||||
}
|
||||
|
||||
TEST_HARNESS_MAIN
|
||||
|
Loading…
x
Reference in New Issue
Block a user