selftests: clone3: Use libcap's cap_t definition
Make clone3_cap_checkpoint_restore use libcap's cap_t definition instead of its own definition, which ended up misaligned after libcap commit aca076443591ba18438b60e41294b59a324daf04. Also removes a redundant variable used to set CAP_CHECKPOINT_RESTORE on the custom-defined cap_t. Signed-off-by: Stefano Pigozzi <me@steffo.eu>
This commit is contained in:
parent
38cde27f74
commit
57ffa4e34b
1 changed files with 4 additions and 15 deletions
|
@ -89,15 +89,9 @@ static int test_clone3_set_tid(struct __test_metadata *_metadata,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct libcap {
|
|
||||||
struct __user_cap_header_struct hdr;
|
|
||||||
struct __user_cap_data_struct data[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
static int set_capability(void)
|
static int set_capability(void)
|
||||||
{
|
{
|
||||||
cap_value_t cap_values[] = { CAP_SETUID, CAP_SETGID };
|
cap_value_t caps_values[] = { CAP_SETUID, CAP_SETGID, CAP_CHECKPOINT_RESTORE };
|
||||||
struct libcap *cap;
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
cap_t caps;
|
cap_t caps;
|
||||||
|
|
||||||
|
@ -113,14 +107,9 @@ static int set_capability(void)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
cap_set_flag(caps, CAP_EFFECTIVE, 2, cap_values, CAP_SET);
|
/* Restore CAP_SETUID, CAP_SETGID, and CAP_CHECKPOINT_RESTORE */
|
||||||
cap_set_flag(caps, CAP_PERMITTED, 2, cap_values, CAP_SET);
|
cap_set_flag(caps, CAP_EFFECTIVE, 3, caps_values, CAP_SET);
|
||||||
|
cap_set_flag(caps, CAP_PERMITTED, 3, caps_values, CAP_SET);
|
||||||
cap = (struct libcap *) caps;
|
|
||||||
|
|
||||||
/* 40 -> CAP_CHECKPOINT_RESTORE */
|
|
||||||
cap->data[1].effective |= 1 << (40 - 32);
|
|
||||||
cap->data[1].permitted |= 1 << (40 - 32);
|
|
||||||
|
|
||||||
if (cap_set_proc(caps)) {
|
if (cap_set_proc(caps)) {
|
||||||
perror("cap_set_proc");
|
perror("cap_set_proc");
|
||||||
|
|
Loading…
Reference in a new issue