On Wed, Dec 04, 2019 at 09:38:10AM -0500, Paul Moore wrote:
SNIP
> +
> +static const char * const bpf_audit_str[] = {
> + [BPF_AUDIT_LOAD] = "LOAD",
> + [BPF_AUDIT_UNLOAD] = "UNLOAD",
> +};
> +
> +static void bpf_audit_prog(const struct bpf_prog *prog, enum bpf_audit op)
> +{
> + struct audit_context *ctx = NULL;
> + struct audit_buffer *ab;
> +
> + if (audit_enabled == AUDIT_OFF)
> + return;
> + if (op == BPF_AUDIT_LOAD)
> + ctx = audit_context();
> + ab = audit_log_start(ctx, GFP_ATOMIC, AUDIT_BPF);
> + if (unlikely(!ab))
> + return;
> + audit_log_format(ab, "prog-id=%u op=%s",
> + prog->aux->id, bpf_audit_str[op]);
> + audit_log_end(ab);
> +}
As mentioned previously, I still think it might be a good idea to
ensure "op" is within the bounds of bpf_audit_str, but the audit bits
look reasonable to me.
ok, I'll add that, I'll send out full patch
thanks for the review,
jirka