On 2018-03-06 13:53, Paul Moore wrote:
 On Tue, Mar 6, 2018 at 9:38 AM, Paul Moore
<paul(a)paul-moore.com> wrote:
 > On Mon, Mar 5, 2018 at 10:24 PM, Richard Guy Briggs <rgb(a)redhat.com> wrote:
 >> On 2018-03-05 15:05, Greg Edwards wrote:
 >>> If you pass in an invalid audit boot parameter value, e.g.
"audit=off",
 >>> the kernel panics very early in boot before the regular console is
 >>> initialized.  Unless you have earlyprintk enabled, there is no
 >>> indication of what the problem is on the console.
 >>>
 >>> Convert the panic() calls to pr_err(), and leave auditing enabled if an
 >>> invalid parameter value was passed in.
 >>>
 >>> Modify the parameter to also accept "on" or "off" as
valid values, and
 >>> update the documentation accordingly.
 >>>
 >>> Signed-off-by: Greg Edwards <gedwards(a)ddn.com>
 >>> ---
 >>> Changes v2 -> v3:
 >>>   - convert panic() calls to pr_err()
 >>>   - add handling of "on"/"off" as valid values
 >>>   - update documentation
 >>>
 >>> Changes v1 -> v2:
 >>>   - default to auditing enabled for the error case
 >>>
 >>>  Documentation/admin-guide/kernel-parameters.txt | 14 +++++++-------
 >>>  kernel/audit.c                                  | 21 ++++++++++++++-------
 >>>  2 files changed, 21 insertions(+), 14 deletions(-)
 >>>
 >>> diff --git a/Documentation/admin-guide/kernel-parameters.txt
b/Documentation/admin-guide/kernel-parameters.txt
 >>> index 1d1d53f85ddd..0b926779315c 100644
 >>> --- a/Documentation/admin-guide/kernel-parameters.txt
 >>> +++ b/Documentation/admin-guide/kernel-parameters.txt
 >>> @@ -389,15 +389,15 @@
 >>>                       Use software keyboard repeat
 >>>
 >>>       audit=          [KNL] Enable the audit sub-system
 >>> -                     Format: { "0" | "1" } (0 =
disabled, 1 = enabled)
 >>> -                     0 - kernel audit is disabled and can not be enabled
 >>> -                         until the next reboot
 >>> +                     Format: { "0" | "1" |
"off" | "on" }
 >>> +                     0 | off - kernel audit is disabled and can not be
 >>> +                         enabled until the next reboot
 >>>                       unset - kernel audit is initialized but disabled and
 >>>                           will be fully enabled by the userspace auditd.
 >>> -                     1 - kernel audit is initialized and partially
enabled,
 >>> -                         storing at most audit_backlog_limit messages in
 >>> -                         RAM until it is fully enabled by the userspace
 >>> -                         auditd.
 >>> +                     1 | on - kernel audit is initialized and partially
 >>> +                         enabled, storing at most audit_backlog_limit
 >>> +                         messages in RAM until it is fully enabled by the
 >>> +                         userspace auditd.
 >>>                       Default: unset
 >>>
 >>>       audit_backlog_limit= [KNL] Set the audit queue size limit.
 >>> diff --git a/kernel/audit.c b/kernel/audit.c
 >>> index 227db99b0f19..8fccea5ded71 100644
 >>> --- a/kernel/audit.c
 >>> +++ b/kernel/audit.c
 >>> @@ -1567,19 +1567,26 @@ static int __init audit_init(void)
 >>>  }
 >>>  postcore_initcall(audit_init);
 >>>
 >>> -/* Process kernel command-line parameter at boot time.  audit=0 or audit=1.
*/
 >>> +/*
 >>> + * Process kernel command-line parameter at boot time.
 >>> + * audit={0|off} or audit={1|on}.
 >>> + */
 >>>  static int __init audit_enable(char *str)
 >>>  {
 >>> -     long val;
 >>> -
 >>> -     if (kstrtol(str, 0, &val))
 >>> -             panic("audit: invalid 'audit' parameter value
(%s)\n", str);
 >>> -     audit_default = (val ? AUDIT_ON : AUDIT_OFF);
 >>> +     if (!strcasecmp(str, "off") || !strcmp(str, "0"))
 >>> +             audit_default = AUDIT_OFF;
 >>> +     else if (!strcasecmp(str, "on") || !strcmp(str,
"1"))
 >>> +             audit_default = AUDIT_ON;
 >>> +     else {
 >>> +             pr_err("audit: invalid 'audit' parameter value
(%s)\n", str);
 >>> +             audit_default = AUDIT_ON;
 >>> +     }
 >>>
 >>>       if (audit_default == AUDIT_OFF)
 >>>               audit_initialized = AUDIT_DISABLED;
 >>>       if (audit_set_enabled(audit_default))
 >>> -             panic("audit: error setting audit state (%d)\n",
audit_default);
 >>> +             pr_err("audit: error setting audit state (%d)\n",
 >>> +                    audit_default);
 >>
 >> This patch looks good.
 >
 > On quick glance, I agree.  I'll look at it a bit closer later today
 > and likely merge it.
 >
 > Thanks Greg.
 
 It's merge now.  Thanks again everyone! 
If you haven't already, please add my Reviewed-by:
 paul moore 
- RGB
--
Richard Guy Briggs <rgb(a)redhat.com>
Sr. S/W Engineer, Kernel Security, Base Operating Systems
Remote, Ottawa, Red Hat Canada
IRC: rgb, SunRaycer
Voice: +1.647.777.2635, Internal: (81) 32635