--- v25
+++ v26
@@ -14,16 +14,16 @@
include/linux/security.h | 2 +-
kernel/audit.c | 25 +++++++----------------
kernel/audit.h | 3 ++-
- kernel/auditsc.c | 33 +++++++++++--------------------
+ kernel/auditsc.c | 34 ++++++++++++-------------------
security/integrity/ima/ima_main.c | 8 ++++----
security/security.c | 12 ++++++++---
- 6 files changed, 35 insertions(+), 48 deletions(-)
+ 6 files changed, 36 insertions(+), 48 deletions(-)
diff --git a/include/linux/security.h b/include/linux/security.h
-index 6fa19899903e..175c8032b636 100644
+index 64f898e5e854..c1c31eb23859 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
-@@ -479,7 +479,7 @@ int security_cred_alloc_blank(struct cred *cred, gfp_t gfp);
+@@ -481,7 +481,7 @@ int security_cred_alloc_blank(struct cred *cred, gfp_t gfp);
void security_cred_free(struct cred *cred);
int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp);
void security_transfer_creds(struct cred *new, const struct cred *old);
@@ -33,7 +33,7 @@
int security_kernel_create_files_as(struct cred *new, struct inode *inode);
int security_kernel_module_request(char *kmod_name);
diff --git a/kernel/audit.c b/kernel/audit.c
-index 70df7ac1b357..c06133104695 100644
+index d92c7b894183..8ec64e6e8bc0 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -125,7 +125,7 @@ static u32 audit_backlog_wait_time = AUDIT_BACKLOG_WAIT_TIME;
@@ -92,15 +92,15 @@
audit_sig_uid = auid;
else
audit_sig_uid = uid;
-- security_task_getsecid(current, &blob);
+- security_task_getsecid_subj(current, &blob);
- /* scaffolding until audit_sig_sid is converted */
- audit_sig_sid = blob.secid[0];
-+ security_task_getsecid(current, &audit_sig_lsm);
++ security_task_getsecid_subj(current, &audit_sig_lsm);
}
return audit_signal_info_syscall(t);
diff --git a/kernel/audit.h b/kernel/audit.h
-index 3b9c0945225a..ce41886807bb 100644
+index 1522e100fd17..23a85a470121 100644
--- a/kernel/audit.h
+++ b/kernel/audit.h
@@ -9,6 +9,7 @@
@@ -121,7 +121,7 @@
struct audit_tree_refs *trees, *first_trees;
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
-index 59cb2c4ad149..768989b2f09e 100644
+index 6684927f12fc..573c6a8e505f 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -111,7 +111,7 @@ struct audit_aux_data_pids {
@@ -133,7 +133,7 @@
char target_comm[AUDIT_AUX_PIDS][TASK_COMM_LEN];
int pid_count;
};
-@@ -993,14 +993,14 @@ static inline void audit_free_context(struct audit_context *context)
+@@ -991,14 +991,14 @@ static inline void audit_free_context(struct audit_context *context)
}
static int audit_log_pid_context(struct audit_context *context, pid_t pid,
@@ -151,7 +151,7 @@
ab = audit_log_start(context, GFP_KERNEL, AUDIT_OBJ_PID);
if (!ab)
-@@ -1009,9 +1009,8 @@ static int audit_log_pid_context(struct audit_context *context, pid_t pid,
+@@ -1007,9 +1007,8 @@ static int audit_log_pid_context(struct audit_context *context, pid_t pid,
audit_log_format(ab, "opid=%d oauid=%d ouid=%d oses=%d", pid,
from_kuid(&init_user_ns, auid),
from_kuid(&init_user_ns, uid), sessionid);
@@ -163,7 +163,7 @@
audit_log_format(ab, " obj=(none)");
rc = 1;
} else {
-@@ -1582,7 +1581,7 @@ static void audit_log_exit(void)
+@@ -1580,7 +1579,7 @@ static void audit_log_exit(void)
axs->target_auid[i],
axs->target_uid[i],
axs->target_sessionid[i],
@@ -172,7 +172,7 @@
axs->target_comm[i]))
call_panic = 1;
}
-@@ -1591,7 +1590,7 @@ static void audit_log_exit(void)
+@@ -1589,7 +1588,7 @@ static void audit_log_exit(void)
audit_log_pid_context(context, context->target_pid,
context->target_auid, context->target_uid,
context->target_sessionid,
@@ -181,7 +181,7 @@
call_panic = 1;
if (context->pwd.dentry && context->pwd.mnt) {
-@@ -1769,7 +1768,7 @@ void __audit_syscall_exit(int success, long return_code)
+@@ -1765,7 +1764,7 @@ void __audit_syscall_exit(int success, long return_code)
context->aux = NULL;
context->aux_pids = NULL;
context->target_pid = 0;
@@ -190,7 +190,15 @@
context->sockaddr_len = 0;
context->type = 0;
context->fds[0] = -1;
-@@ -2421,15 +2420,12 @@ int __audit_sockaddr(int len, void *a)
+@@ -2319,6 +2318,7 @@ void __audit_ipc_obj(struct kern_ipc_perm *ipcp)
+ {
+ struct audit_context *context = audit_context();
+ struct lsmblob blob;
++
+ context->ipc.uid = ipcp->uid;
+ context->ipc.gid = ipcp->gid;
+ context->ipc.mode = ipcp->mode;
+@@ -2417,15 +2417,12 @@ int __audit_sockaddr(int len, void *a)
void __audit_ptrace(struct task_struct *t)
{
struct audit_context *context = audit_context();
@@ -200,14 +208,14 @@
context->target_auid = audit_get_loginuid(t);
context->target_uid = task_uid(t);
context->target_sessionid = audit_get_sessionid(t);
-- security_task_getsecid(t, &blob);
+- security_task_getsecid_obj(t, &blob);
- /* scaffolding - until target_sid is converted */
- context->target_sid = blob.secid[0];
-+ security_task_getsecid(t, &context->target_lsm);
++ security_task_getsecid_obj(t, &context->target_lsm);
memcpy(context->target_comm, t->comm, TASK_COMM_LEN);
}
-@@ -2445,7 +2441,6 @@ int audit_signal_info_syscall(struct task_struct *t)
+@@ -2441,7 +2438,6 @@ int audit_signal_info_syscall(struct task_struct *t)
struct audit_aux_data_pids *axp;
struct audit_context *ctx = audit_context();
kuid_t t_uid = task_uid(t);
@@ -215,30 +223,30 @@
if (!audit_signals || audit_dummy_context())
return 0;
-@@ -2457,9 +2452,7 @@ int audit_signal_info_syscall(struct task_struct *t)
+@@ -2453,9 +2449,7 @@ int audit_signal_info_syscall(struct task_struct *t)
ctx->target_auid = audit_get_loginuid(t);
ctx->target_uid = t_uid;
ctx->target_sessionid = audit_get_sessionid(t);
-- security_task_getsecid(t, &blob);
+- security_task_getsecid_obj(t, &blob);
- /* scaffolding until target_sid is converted */
- ctx->target_sid = blob.secid[0];
-+ security_task_getsecid(t, &ctx->target_lsm);
++ security_task_getsecid_obj(t, &ctx->target_lsm);
memcpy(ctx->target_comm, t->comm, TASK_COMM_LEN);
return 0;
}
-@@ -2480,9 +2473,7 @@ int audit_signal_info_syscall(struct task_struct *t)
+@@ -2476,9 +2470,7 @@ int audit_signal_info_syscall(struct task_struct *t)
axp->target_auid[axp->pid_count] = audit_get_loginuid(t);
axp->target_uid[axp->pid_count] = t_uid;
axp->target_sessionid[axp->pid_count] = audit_get_sessionid(t);
-- security_task_getsecid(t, &blob);
+- security_task_getsecid_obj(t, &blob);
- /* scaffolding until target_sid is converted */
- axp->target_sid[axp->pid_count] = blob.secid[0];
-+ security_task_getsecid(t, &axp->target_lsm[axp->pid_count]);
++ security_task_getsecid_obj(t, &axp->target_lsm[axp->pid_count]);
memcpy(axp->target_comm[axp->pid_count], t->comm, TASK_COMM_LEN);
axp->pid_count++;
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
-index 360c5e3760cc..5a6ba57beef3 100644
+index 9d1ed00eb349..b3e00340a97c 100644
--- a/security/integrity/ima/ima_main.c
+++ b/security/integrity/ima/ima_main.c
@@ -470,7 +470,6 @@ int ima_file_mprotect(struct vm_area_struct *vma, unsigned long prot)
@@ -248,7 +256,7 @@
- u32 secid;
struct lsmblob blob;
- security_task_getsecid(current, &blob);
+ security_task_getsecid_subj(current, &blob);
@@ -480,9 +479,10 @@ int ima_bprm_check(struct linux_binprm *bprm)
if (ret)
return ret;
@@ -264,10 +272,10 @@
/**
diff --git a/security/security.c b/security/security.c
-index 54bca6d52ab7..0d9a4b50f252 100644
+index 54f4a4ead69f..f5407a85641e 100644
--- a/security/security.c
+++ b/security/security.c
-@@ -1752,10 +1752,16 @@ void security_transfer_creds(struct cred *new, const struct cred *old)
+@@ -1796,10 +1796,16 @@ void security_transfer_creds(struct cred *new, const struct cred *old)
call_void_hook(cred_transfer, new, old);
}