From 57ffa4e34b87b52c0c40d6958fb8dfd79cea29e9 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 29 Aug 2024 14:37:43 +0200 Subject: [PATCH] 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 --- .../clone3/clone3_cap_checkpoint_restore.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c b/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c index 31b56d625655..9f4ebc94a361 100644 --- a/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c +++ b/tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c @@ -89,15 +89,9 @@ static int test_clone3_set_tid(struct __test_metadata *_metadata, return ret; } -struct libcap { - struct __user_cap_header_struct hdr; - struct __user_cap_data_struct data[2]; -}; - static int set_capability(void) { - cap_value_t cap_values[] = { CAP_SETUID, CAP_SETGID }; - struct libcap *cap; + cap_value_t caps_values[] = { CAP_SETUID, CAP_SETGID, CAP_CHECKPOINT_RESTORE }; int ret = -1; cap_t caps; @@ -113,14 +107,9 @@ static int set_capability(void) goto out; } - cap_set_flag(caps, CAP_EFFECTIVE, 2, cap_values, CAP_SET); - cap_set_flag(caps, CAP_PERMITTED, 2, cap_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); + /* Restore CAP_SETUID, CAP_SETGID, and CAP_CHECKPOINT_RESTORE */ + cap_set_flag(caps, CAP_EFFECTIVE, 3, caps_values, CAP_SET); + cap_set_flag(caps, CAP_PERMITTED, 3, caps_values, CAP_SET); if (cap_set_proc(caps)) { perror("cap_set_proc");