landlock: Log the TGID of the domain creator

As for other Audit's "pid" fields, Landlock should use the task's TGID
instead of its TID.  Fix this issue by keeping a reference to the TGID
of the domain creator.

Existing tests already check for the PID but only with the thread group
leader, so always the TGID.  A following patch adds dedicated tests for
non-leader thread.

Remove the current_real_cred() check which does not make sense because
we only reference a struct pid, whereas a previous version did reference
a struct cred instead.

Cc: Christian Brauner <brauner@kernel.org>
Cc: Paul Moore <paul@paul-moore.com>
Reviewed-by: Günther Noack <gnoack3000@gmail.com>
Link: https://lore.kernel.org/r/20250410171725.1265860-1-mic@digikod.net
Signed-off-by: Mickaël Salaün <mic@digikod.net>
This commit is contained in:
Mickaël Salaün 2025-04-10 19:17:21 +02:00
parent fe81536af3
commit 4767af82a0
No known key found for this signature in database
GPG Key ID: E5E3D0E88C82F6D2
1 changed files with 2 additions and 2 deletions

View File

@ -16,6 +16,7 @@
#include <linux/path.h> #include <linux/path.h>
#include <linux/pid.h> #include <linux/pid.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/signal.h>
#include <linux/uidgid.h> #include <linux/uidgid.h>
#include "access.h" #include "access.h"
@ -99,8 +100,7 @@ static struct landlock_details *get_current_details(void)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
memcpy(details->exe_path, path_str, path_size); memcpy(details->exe_path, path_str, path_size);
WARN_ON_ONCE(current_cred() != current_real_cred()); details->pid = get_pid(task_tgid(current));
details->pid = get_pid(task_pid(current));
details->uid = from_kuid(&init_user_ns, current_uid()); details->uid = from_kuid(&init_user_ns, current_uid());
get_task_comm(details->comm, current); get_task_comm(details->comm, current);
return details; return details;