[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200724095232.5f9d3f17@oasis.local.home>
Date: Fri, 24 Jul 2020 09:52:32 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: "ThiƩbaud Weksteen" <tweek@...gle.com>
Cc: Paul Moore <paul@...l-moore.com>, Nick Kralevich <nnk@...gle.com>,
Joel Fernandes <joelaf@...gle.com>,
Stephen Smalley <stephen.smalley.work@...il.com>,
Eric Paris <eparis@...isplace.org>,
Ingo Molnar <mingo@...hat.com>,
Mauro Carvalho Chehab <mchehab+huawei@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
Rob Herring <robh@...nel.org>, linux-kernel@...r.kernel.org,
selinux@...r.kernel.org
Subject: Re: [PATCH] selinux: add tracepoint on denials
On Fri, 24 Jul 2020 11:15:03 +0200
"ThiƩbaud Weksteen" <tweek@...gle.com> wrote:
> diff --git a/security/selinux/avc.c b/security/selinux/avc.c
> index d18cb32a242a..85d2e22ab656 100644
> --- a/security/selinux/avc.c
> +++ b/security/selinux/avc.c
> @@ -31,6 +31,9 @@
> #include "avc_ss.h"
> #include "classmap.h"
>
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/selinux.h>
> +
> #define AVC_CACHE_SLOTS 512
> #define AVC_DEF_CACHE_THRESHOLD 512
> #define AVC_CACHE_RECLAIM 16
> @@ -672,6 +675,9 @@ static void avc_audit_pre_callback(struct audit_buffer *ab, void *a)
> return;
> }
>
> + if (sad->denied)
First, I would like to deny sadness as well ;-)
Now, there is a way to add that branch within the "nop" area of the
trace event, and remove the conditional branch from the main code.
> + trace_selinux_denied(sad->tclass, av);
> +
Instead have this:
trace_selinux_denied(sad, av);
> perms = secclass_map[sad->tclass-1].perms;
>
> audit_log_format(ab, " {");
> --- /dev/null
> +++ b/include/trace/events/selinux.h
> @@ -0,0 +1,35 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM selinux
> +
> +#if !defined(_TRACE_SELINUX_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_SELINUX_H
> +
> +#include <linux/ktime.h>
> +#include <linux/tracepoint.h>
> +
> +TRACE_EVENT(selinux_denied,
TRACE_EVENT_CONDITION(selinux_denied,
> +
> + TP_PROTO(int cls, int av),
TP_PROTO(struct selinux_audit_data sad, int av)
> +
> + TP_ARGS(cls, av),
> +
TP_CONDITION(sad->denied),
The above condition will be tested before calling the tracepoint. But
only if the trace event is enabled.
> + TP_STRUCT__entry(
> + __field(int, cls)
> + __field(int, av)
> + ),
> +
> + TP_fast_assign(
> + __entry->cls = cls;
__entry->cls = sad->tclass;
> + __entry->av = av;
> + ),
> +
> + TP_printk("denied %d %d",
> + __entry->cls,
> + __entry->av)
> +);
> +
> +#endif
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
-- Steve
Powered by blists - more mailing lists