diff options
-rw-r--r-- | kernel/audit.h | 1 | ||||
-rw-r--r-- | kernel/auditsc.c | 12 |
2 files changed, 10 insertions, 3 deletions
diff --git a/kernel/audit.h b/kernel/audit.h index ddfce2ea4891..bb3a4e14b7e5 100644 --- a/kernel/audit.h +++ b/kernel/audit.h | |||
@@ -68,6 +68,7 @@ struct audit_cap_data { | |||
68 | unsigned int fE; /* effective bit of file cap */ | 68 | unsigned int fE; /* effective bit of file cap */ |
69 | kernel_cap_t effective; /* effective set of process */ | 69 | kernel_cap_t effective; /* effective set of process */ |
70 | }; | 70 | }; |
71 | kernel_cap_t ambient; | ||
71 | }; | 72 | }; |
72 | 73 | ||
73 | /* When fs/namei.c:getname() is called, we store the pointer in name and bump | 74 | /* When fs/namei.c:getname() is called, we store the pointer in name and bump |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index b2dcbe637b7c..5fa68d10032f 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -1260,6 +1260,7 @@ static void show_special(struct audit_context *context, int *call_panic) | |||
1260 | audit_log_cap(ab, "cap_pi", &context->capset.cap.inheritable); | 1260 | audit_log_cap(ab, "cap_pi", &context->capset.cap.inheritable); |
1261 | audit_log_cap(ab, "cap_pp", &context->capset.cap.permitted); | 1261 | audit_log_cap(ab, "cap_pp", &context->capset.cap.permitted); |
1262 | audit_log_cap(ab, "cap_pe", &context->capset.cap.effective); | 1262 | audit_log_cap(ab, "cap_pe", &context->capset.cap.effective); |
1263 | audit_log_cap(ab, "cap_pa", &context->capset.cap.ambient); | ||
1263 | break; | 1264 | break; |
1264 | case AUDIT_MMAP: | 1265 | case AUDIT_MMAP: |
1265 | audit_log_format(ab, "fd=%d flags=0x%x", context->mmap.fd, | 1266 | audit_log_format(ab, "fd=%d flags=0x%x", context->mmap.fd, |
@@ -1381,9 +1382,11 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts | |||
1381 | audit_log_cap(ab, "old_pp", &axs->old_pcap.permitted); | 1382 | audit_log_cap(ab, "old_pp", &axs->old_pcap.permitted); |
1382 | audit_log_cap(ab, "old_pi", &axs->old_pcap.inheritable); | 1383 | audit_log_cap(ab, "old_pi", &axs->old_pcap.inheritable); |
1383 | audit_log_cap(ab, "old_pe", &axs->old_pcap.effective); | 1384 | audit_log_cap(ab, "old_pe", &axs->old_pcap.effective); |
1384 | audit_log_cap(ab, "new_pp", &axs->new_pcap.permitted); | 1385 | audit_log_cap(ab, "old_pa", &axs->old_pcap.ambient); |
1385 | audit_log_cap(ab, "new_pi", &axs->new_pcap.inheritable); | 1386 | audit_log_cap(ab, "pp", &axs->new_pcap.permitted); |
1386 | audit_log_cap(ab, "new_pe", &axs->new_pcap.effective); | 1387 | audit_log_cap(ab, "pi", &axs->new_pcap.inheritable); |
1388 | audit_log_cap(ab, "pe", &axs->new_pcap.effective); | ||
1389 | audit_log_cap(ab, "pa", &axs->new_pcap.ambient); | ||
1387 | break; } | 1390 | break; } |
1388 | 1391 | ||
1389 | } | 1392 | } |
@@ -2341,10 +2344,12 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm, | |||
2341 | ax->old_pcap.permitted = old->cap_permitted; | 2344 | ax->old_pcap.permitted = old->cap_permitted; |
2342 | ax->old_pcap.inheritable = old->cap_inheritable; | 2345 | ax->old_pcap.inheritable = old->cap_inheritable; |
2343 | ax->old_pcap.effective = old->cap_effective; | 2346 | ax->old_pcap.effective = old->cap_effective; |
2347 | ax->old_pcap.ambient = old->cap_ambient; | ||
2344 | 2348 | ||
2345 | ax->new_pcap.permitted = new->cap_permitted; | 2349 | ax->new_pcap.permitted = new->cap_permitted; |
2346 | ax->new_pcap.inheritable = new->cap_inheritable; | 2350 | ax->new_pcap.inheritable = new->cap_inheritable; |
2347 | ax->new_pcap.effective = new->cap_effective; | 2351 | ax->new_pcap.effective = new->cap_effective; |
2352 | ax->new_pcap.ambient = new->cap_ambient; | ||
2348 | return 0; | 2353 | return 0; |
2349 | } | 2354 | } |
2350 | 2355 | ||
@@ -2363,6 +2368,7 @@ void __audit_log_capset(const struct cred *new, const struct cred *old) | |||
2363 | context->capset.cap.effective = new->cap_effective; | 2368 | context->capset.cap.effective = new->cap_effective; |
2364 | context->capset.cap.inheritable = new->cap_effective; | 2369 | context->capset.cap.inheritable = new->cap_effective; |
2365 | context->capset.cap.permitted = new->cap_permitted; | 2370 | context->capset.cap.permitted = new->cap_permitted; |
2371 | context->capset.cap.ambient = new->cap_ambient; | ||
2366 | context->type = AUDIT_CAPSET; | 2372 | context->type = AUDIT_CAPSET; |
2367 | } | 2373 | } |
2368 | 2374 | ||