mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +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 CHANGE_NAME "changename"
|
||||||
#define EMPTY_NAME ""
|
#define EMPTY_NAME ""
|
||||||
#define TASK_COMM_LEN 16
|
#define TASK_COMM_LEN 16
|
||||||
|
#define MAX_PATH_LEN 50
|
||||||
|
|
||||||
int set_name(char *name)
|
int set_name(char *name)
|
||||||
{
|
{
|
||||||
@ -47,6 +48,35 @@ int check_null_pointer(char *check_name)
|
|||||||
return res;
|
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) {
|
TEST(rename_process) {
|
||||||
|
|
||||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||||
@ -57,6 +87,8 @@ TEST(rename_process) {
|
|||||||
|
|
||||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||||
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
|
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
|
||||||
|
|
||||||
|
EXPECT_TRUE(check_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_HARNESS_MAIN
|
TEST_HARNESS_MAIN
|
||||||
|
Loading…
x
Reference in New Issue
Block a user