All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Grubb <sgrubb@redhat.com>
To: Richard Guy Briggs <rgb@redhat.com>
Cc: Linux-Audit Mailing List <linux-audit@redhat.com>
Subject: Re: [RFC PATCH ghak89 V1] audit: rename FILTER_TYPE to FILTER_EXCL
Date: Thu, 31 May 2018 17:29:57 -0400	[thread overview]
Message-ID: <2606099.eSVsdMVj4x@x2> (raw)
In-Reply-To: <3cc638761823cf16ea71f1c58165832f4b469864.1527798085.git.rgb@redhat.com>

On Thursday, May 31, 2018 4:23:09 PM EDT Richard Guy Briggs wrote:
> The AUDIT_FILTER_TYPE name is vague and misleading due to not describing
> where or when the filter is applied and obsolete due to its available
> filter fields having been expanded.
> 
> Userspace has already renamed it from AUDIT_FILTER_TYPE to
> AUDIT_FILTER_EXCLUDE without checking if it already exists.

Historically speaking, this is not why it is the way it is. But I think it 
doesn't mean that you cannot do something like this:

#define AUDIT_FILTER_EXCLUDE    AUDIT_FILTER_TYPE

It's easy then to add a #ifndef to the userspace code so that there is an 
easy migration. I also do not see any compiler warnings with the above in 
both /usr/include/linux/audit.h and /usr/include/libaudit.h.

-Steve

> In order to
> not cause userspace compile problems from duplicate definitions and to
> more accurately and inclusively rename it in the kernel, while providing
> a migration path for userspace, rename it to AUDIT_FILTER_EXCL.
> 
> See: https://github.com/linux-audit/audit-kernel/issues/89
> 
> Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
> ---
>  include/uapi/linux/audit.h |  3 ++-
>  kernel/audit.c             |  2 +-
>  kernel/auditfilter.c       | 10 +++++-----
>  3 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h
> index 04f9bd2..45dd7ef 100644
> --- a/include/uapi/linux/audit.h
> +++ b/include/uapi/linux/audit.h
> @@ -156,8 +156,9 @@
>  #define AUDIT_FILTER_ENTRY	0x02	/* Apply rule at syscall entry */
>  #define AUDIT_FILTER_WATCH	0x03	/* Apply rule to file system watches */
>  #define AUDIT_FILTER_EXIT	0x04	/* Apply rule at syscall exit */
> -#define AUDIT_FILTER_TYPE	0x05	/* Apply rule at audit_log_start */
> +#define AUDIT_FILTER_EXCL	0x05	/* Apply rule at audit_log_start */
>  #define AUDIT_FILTER_FS		0x06	/* Apply rule at __audit_inode_child */
> +#define AUDIT_FILTER_TYPE	AUDIT_FILTER_EXCL /* obsolete misleading naming
> */
> 
>  #define AUDIT_NR_FILTERS	7
> 
> diff --git a/kernel/audit.c b/kernel/audit.c
> index 3a18e59..089cede 100644
> --- a/kernel/audit.c
> +++ b/kernel/audit.c
> @@ -1754,7 +1754,7 @@ struct audit_buffer *audit_log_start(struct
> audit_context *ctx, gfp_t gfp_mask, if (audit_initialized !=
> AUDIT_INITIALIZED)
>  		return NULL;
> 
> -	if (unlikely(!audit_filter(type, AUDIT_FILTER_TYPE)))
> +	if (unlikely(!audit_filter(type, AUDIT_FILTER_EXCL)))
>  		return NULL;
> 
>  	/* NOTE: don't ever fail/sleep on these two conditions:
> diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
> index eaa3201..f17a42f5 100644
> --- a/kernel/auditfilter.c
> +++ b/kernel/auditfilter.c
> @@ -264,7 +264,7 @@ static inline struct audit_entry
> *audit_to_entry_common(struct audit_rule_data * case AUDIT_FILTER_TASK:
>  #endif
>  	case AUDIT_FILTER_USER:
> -	case AUDIT_FILTER_TYPE:
> +	case AUDIT_FILTER_EXCL:
>  	case AUDIT_FILTER_FS:
>  		;
>  	}
> @@ -337,7 +337,7 @@ static int audit_field_valid(struct audit_entry *entry,
> struct audit_field *f) {
>  	switch(f->type) {
>  	case AUDIT_MSGTYPE:
> -		if (entry->rule.listnr != AUDIT_FILTER_TYPE &&
> +		if (entry->rule.listnr != AUDIT_FILTER_EXCL &&
>  		    entry->rule.listnr != AUDIT_FILTER_USER)
>  			return -EINVAL;
>  		break;
> @@ -931,7 +931,7 @@ static inline int audit_add_rule(struct audit_entry
> *entry) /* If any of these, don't count towards total */
>  	switch(entry->rule.listnr) {
>  	case AUDIT_FILTER_USER:
> -	case AUDIT_FILTER_TYPE:
> +	case AUDIT_FILTER_EXCL:
>  	case AUDIT_FILTER_FS:
>  		dont_count = 1;
>  	}
> @@ -1013,7 +1013,7 @@ int audit_del_rule(struct audit_entry *entry)
>  	/* If any of these, don't count towards total */
>  	switch(entry->rule.listnr) {
>  	case AUDIT_FILTER_USER:
> -	case AUDIT_FILTER_TYPE:
> +	case AUDIT_FILTER_EXCL:
>  	case AUDIT_FILTER_FS:
>  		dont_count = 1;
>  	}
> @@ -1369,7 +1369,7 @@ int audit_filter(int msgtype, unsigned int listtype)
>  				break;
>  		}
>  		if (result > 0) {
> -			if (e->rule.action == AUDIT_NEVER || listtype == AUDIT_FILTER_TYPE)
> +			if (e->rule.action == AUDIT_NEVER || listtype == AUDIT_FILTER_EXCL)
>  				ret = 0;
>  			break;
>  		}

  reply	other threads:[~2018-05-31 21:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-31 20:23 [RFC PATCH ghak89 V1] audit: rename FILTER_TYPE to FILTER_EXCL Richard Guy Briggs
2018-05-31 21:29 ` Steve Grubb [this message]
2018-05-31 22:21   ` Richard Guy Briggs
2018-06-01 16:55     ` Steve Grubb
2018-06-01 17:58       ` Richard Guy Briggs
2018-06-01 19:03         ` Steve Grubb
2018-06-01 19:12           ` Richard Guy Briggs
2018-06-01 19:37             ` Steve Grubb
2018-06-01 20:19               ` Richard Guy Briggs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2606099.eSVsdMVj4x@x2 \
    --to=sgrubb@redhat.com \
    --cc=linux-audit@redhat.com \
    --cc=rgb@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.