mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 03:35:32 -04:00
cred: delete task_euid()
task_euid() is a very weird operation. You can see how weird it is by grepping for task_euid() - binder is its only user. task_euid() obtains the objective effective UID - it looks at the credentials of the task for purposes of acting on it as an object, but then accesses the effective UID (which the credentials.7 man page describes as "[...] used by the kernel to determine the permissions that the process will have when accessing shared resources [...]"). Since usage in Binder has now been removed, get rid of the resulting dead code. Changes to the zh_CN translation was carried out with the help of Gemini and Google Translate, and since adjusted as per Alex Shi's feedback. Suggested-by: Jann Horn <jannh@google.com> Reviewed-by: Gary Guo <gary@garyguo.net> Signed-off-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:
@@ -393,16 +393,14 @@ the credentials so obtained when they're finished with.
|
||||
The result of ``__task_cred()`` should not be passed directly to
|
||||
``get_cred()`` as this may race with ``commit_cred()``.
|
||||
|
||||
There are a couple of convenience functions to access bits of another task's
|
||||
credentials, hiding the RCU magic from the caller::
|
||||
There is a convenience function to access bits of another task's credentials,
|
||||
hiding the RCU magic from the caller::
|
||||
|
||||
uid_t task_uid(task) Task's real UID
|
||||
uid_t task_euid(task) Task's effective UID
|
||||
|
||||
If the caller is holding the RCU read lock at the time anyway, then::
|
||||
|
||||
__task_cred(task)->uid
|
||||
__task_cred(task)->euid
|
||||
|
||||
should be used instead. Similarly, if multiple aspects of a task's credentials
|
||||
need to be accessed, RCU read lock should be used, ``__task_cred()`` called,
|
||||
|
||||
@@ -337,15 +337,13 @@ const指针上操作,因此不需要进行类型转换,但需要临时放弃
|
||||
``__task_cred()`` 的结果不应直接传递给 ``get_cred()`` ,
|
||||
因为这可能与 ``commit_cred()`` 发生竞争条件。
|
||||
|
||||
还有一些方便的函数可以访问另一个任务凭据的特定部分,将RCU操作对调用方隐藏起来::
|
||||
有一个方便的函数可用于访问另一个任务凭据的特定部分,从而对调用方隐藏RCU机制::
|
||||
|
||||
uid_t task_uid(task) Task's real UID
|
||||
uid_t task_euid(task) Task's effective UID
|
||||
|
||||
如果调用方在此时已经持有RCU读锁,则应使用::
|
||||
|
||||
__task_cred(task)->uid
|
||||
__task_cred(task)->euid
|
||||
|
||||
类似地,如果需要访问任务凭据的多个方面,应使用RCU读锁,调用 ``__task_cred()``
|
||||
函数,将结果存储在临时指针中,然后从临时指针中调用凭据的各个方面,最后释放锁。
|
||||
|
||||
@@ -371,7 +371,6 @@ DEFINE_FREE(put_cred, struct cred *, if (!IS_ERR_OR_NULL(_T)) put_cred(_T))
|
||||
})
|
||||
|
||||
#define task_uid(task) (task_cred_xxx((task), uid))
|
||||
#define task_euid(task) (task_cred_xxx((task), euid))
|
||||
#define task_ucounts(task) (task_cred_xxx((task), ucounts))
|
||||
|
||||
#define current_cred_xxx(xxx) \
|
||||
|
||||
@@ -28,11 +28,6 @@ __rust_helper kuid_t rust_helper_task_uid(struct task_struct *task)
|
||||
return task_uid(task);
|
||||
}
|
||||
|
||||
__rust_helper kuid_t rust_helper_task_euid(struct task_struct *task)
|
||||
{
|
||||
return task_euid(task);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_USER_NS
|
||||
__rust_helper uid_t rust_helper_from_kuid(struct user_namespace *to, kuid_t uid)
|
||||
{
|
||||
|
||||
@@ -217,16 +217,6 @@ pub fn uid(&self) -> Kuid {
|
||||
Kuid::from_raw(unsafe { bindings::task_uid(self.as_ptr()) })
|
||||
}
|
||||
|
||||
/// Returns the objective effective UID of the given task.
|
||||
///
|
||||
/// You should probably not be using this; the effective UID is normally
|
||||
/// only relevant in subjective credentials.
|
||||
#[inline]
|
||||
pub fn euid(&self) -> Kuid {
|
||||
// SAFETY: It's always safe to call `task_euid` on a valid task.
|
||||
Kuid::from_raw(unsafe { bindings::task_euid(self.as_ptr()) })
|
||||
}
|
||||
|
||||
/// Determines whether the given task has pending signals.
|
||||
#[inline]
|
||||
pub fn signal_pending(&self) -> bool {
|
||||
|
||||
Reference in New Issue
Block a user