On Thursday, November 13, 2014 03:29:10 PM Richard Guy Briggs wrote:
 The version field defined in the audit status structure was found to
have
 limitations in terms of its expressibility of features supported.  This is
 distict from the get/set features call to be able to command those features
 that are present.
 
 Converting this field from a version number to a feature bitmap will allow
 distributions to selectively backport and support certain features and will
 allow upstream to be able to deprecate features in the future.  It will
 allow userspace clients to first query the kernel for which features are
 actually present and supported.  Currently, EINVAL is returned rather than
 EOPNOTSUP, which isn't helpful in determining if there was an error in the
 command, or if it simply isn't supported yet.  Past features are not
 represented by this bitmap, but their use may be converted to EOPNOTSUP if
 needed in the future.
 
 Since "version" is too generic to convert with a #define, use a union in the
 struct status, introducing the member "feature_bitmap" unionized with
 "version".
 
 Convert existing AUDIT_VERSION_* macros over to AUDIT_FEATURE_BITMAP*
 counterparts, leaving the former for backwards compatibility.
 
 Signed-off-by: Richard Guy Briggs <rgb(a)redhat.com>
 ---
  include/uapi/linux/audit.h |   17 +++++++++++++----
  kernel/audit.c             |    2 +-
  2 files changed, 14 insertions(+), 5 deletions(-) 
Looks good for the most part, just a naming nit pick and a question about the 
deprecated AUDIT_VERSION_* defines; see below ...
 diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h
 index 4d100c8..74aa584 100644
 --- a/include/uapi/linux/audit.h
 +++ b/include/uapi/linux/audit.h
 @@ -322,9 +322,15 @@ enum {
  #define AUDIT_STATUS_BACKLOG_LIMIT	0x0010
  #define AUDIT_STATUS_BACKLOG_WAIT_TIME	0x0020
 
 -#define AUDIT_VERSION_BACKLOG_LIMIT	1
 -#define AUDIT_VERSION_BACKLOG_WAIT_TIME	2
 -#define AUDIT_VERSION_LATEST AUDIT_VERSION_BACKLOG_WAIT_TIME
 +#define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT	0x00000001
 +#define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME	0x00000002
 +#define AUDIT_FEATURE_BITMAP ( AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | \
 +				                AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME ) 
How about AUDIT_FEATURE_BIMAP_ALL instead of just AUDIT_FEATURE_BITMAP?
 +/* deprecated: AUDIT_VERSION_* */
 +#define AUDIT_VERSION_LATEST 		AUDIT_FEATURE_BITMAP
 +#define AUDIT_VERSION_BACKLOG_LIMIT	AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT
 +#define AUDIT_VERSION_BACKLOG_WAIT_TIME
 ...                                AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 
So what terrible things happen to userspace if AUDIT_VERSION_BACKLOG_WAIT_TIME 
becomes 0x03 instead of 0x02?
-- 
paul moore
security and virtualization @ redhat