diff options
| author | Paul Moore <paul@paul-moore.com> | 2025-11-18 19:18:10 -0500 |
|---|---|---|
| committer | Paul Moore <paul@paul-moore.com> | 2025-11-19 10:32:06 -0500 |
| commit | 9a948eefad594c42717f29824dd40d6dc0b7aa13 (patch) | |
| tree | 52619ea20b2c2f7956109a43d3086ef2a786e2dc | |
| parent | 0e6ebf877843717ced4ada5c09c7196cede5054c (diff) | |
lsm: use unrcu_pointer() for current->cred in security_init()
We need to directly allocate the cred's LSM state for the initial task
when we initialize the LSM framework. Unfortunately, this results in a
RCU related type mismatch, use the unrcu_pointer() macro to handle this
a bit more elegantly.
The explicit type casting still remains as we need to work around the
constification of current->cred in this particular case.
Reviewed-by: Xiu Jianfeng <xiujianfeng@huawei.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
| -rw-r--r-- | security/lsm_init.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/security/lsm_init.c b/security/lsm_init.c index 6bb67d41ce52..05bd52e6b1f2 100644 --- a/security/lsm_init.c +++ b/security/lsm_init.c @@ -467,7 +467,8 @@ int __init security_init(void) blob_sizes.lbs_inode, 0, SLAB_PANIC, NULL); - if (lsm_cred_alloc((struct cred __rcu *)current->cred, GFP_KERNEL)) + if (lsm_cred_alloc((struct cred *)unrcu_pointer(current->cred), + GFP_KERNEL)) panic("early LSM cred alloc failed\n"); if (lsm_task_alloc(current)) panic("early LSM task alloc failed\n"); |