kernel: getname might sleep in kprobe handler (#670)

This commit is contained in:
weishu
2023-06-22 10:54:50 +08:00
committed by GitHub
parent 1cda4ba245
commit 79bb9813ef
2 changed files with 41 additions and 24 deletions

View File

@@ -52,6 +52,8 @@ static inline bool is_isolated_uid(uid_t uid)
appid <= LAST_APP_ZYGOTE_ISOLATED_UID);
}
static struct group_info root_groups = { .usage = ATOMIC_INIT(2) };
static void setup_groups(struct root_profile *profile, struct cred *cred)
{
if (profile->groups_count > KSU_MAX_GROUPS) {
@@ -60,6 +62,14 @@ static void setup_groups(struct root_profile *profile, struct cred *cred)
return;
}
if (profile->groups_count == 1 && profile->groups[0] == 0) {
// it is root groups, setgroup to root and return early!
if (cred->group_info)
put_group_info(cred->group_info);
cred->group_info = get_group_info(&root_groups);
return;
}
u32 ngroups = profile->groups_count;
struct group_info *group_info = groups_alloc(ngroups);
if (!group_info) {