linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Jann Horn <jannh@google.com>
Cc: James Morris <jmorris@namei.org>,
	Casey Schaufler <casey@schaufler-ca.com>,
	John Johansen <john.johansen@canonical.com>,
	Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
	Paul Moore <paul@paul-moore.com>,
	Stephen Smalley <sds@tycho.nsa.gov>,
	Casey Schaufler <casey.schaufler@intel.com>,
	linux-security-module <linux-security-module@vger.kernel.org>,
	kernel list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 11/18] LSM: Lift LSM selection out of individual LSMs
Date: Sat, 15 Sep 2018 18:47:30 -0700	[thread overview]
Message-ID: <CAGXu5jKYqxZpRjct6zcUgh27bZDrEYPhejRzdCXc8fmLHX_Y=g@mail.gmail.com> (raw)
In-Reply-To: <CAG48ez1TPsz30WebxQPkZbjfPTyT2ui7L+4ZQ94FStCkWcJ0VA@mail.gmail.com>

On Sat, Sep 15, 2018 at 6:32 PM, Jann Horn <jannh@google.com> wrote:
> On Sun, Sep 16, 2018 at 3:14 AM Kees Cook <keescook@chromium.org> wrote:
>> In order to adjust LSM selection logic in the future, this moves the
>> selection logic up out of the individual LSMs, making their init functions
>> only run when actually enabled.
> [...]
>> +/* Is an LSM allowed to be enabled? */
>> +static bool __init lsm_enabled(struct lsm_info *lsm)
>> +{
>> +       /* Report explicit disabling. */
>> +       if (lsm->enabled && !*lsm->enabled) {
>> +               pr_info("%s disabled with boot parameter\n", lsm->name);
>> +               return false;
>> +       }
>> +
>> +       /* If LSM isn't exclusive, ignore exclusive LSM selection rules. */
>> +       if (lsm->type != LSM_TYPE_EXCLUSIVE)
>> +               return true;
>> +
>> +       /* Disabled if another exclusive LSM already selected. */
>> +       if (exclusive)
>> +               return false;
>
> What is this check for, given that you have the strcmp() just below
> here? From a quick look, it (together with everything else that
> touches the "exclusive" variable) seems superfluous to me, unless
> there are two LSMs with the same name (which really shouldn't happen,
> right?).
>
>> +       /* Disabled if this LSM isn't the chosen one. */
>> +       if (strcmp(lsm->name, chosen_lsm) != 0)
>> +               return false;
>> +
>> +       return true;
>> +}

Mainly it's for composition with later patches where the name check is
moved. It seemed easier to explain the logical progression with the
hunk here.

-Kees

-- 
Kees Cook
Pixel Security

  reply	other threads:[~2018-09-16  1:47 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-16  0:30 [PATCH 00/18] LSM: Prepare for explict LSM ordering Kees Cook
2018-09-16  0:30 ` [PATCH 01/18] vmlinux.lds.h: Avoid copy/paste of security_init section Kees Cook
2018-09-16  0:30 ` [PATCH 02/18] LSM: Rename .security_initcall section to .lsm_info Kees Cook
2018-09-16  0:30 ` [PATCH 03/18] LSM: Remove initcall tracing Kees Cook
2018-09-16  0:30 ` [PATCH 04/18] LSM: Convert from initcall to struct lsm_info Kees Cook
2018-09-16  0:30 ` [PATCH 05/18] vmlinux.lds.h: Move LSM_TABLE into INIT_DATA Kees Cook
2018-09-16  0:30 ` [PATCH 06/18] LSM: Convert security_initcall() into DEFINE_LSM() Kees Cook
2018-09-16  0:30 ` [PATCH 07/18] LSM: Add minor LSM initialization loop Kees Cook
2018-09-16  1:27   ` Jann Horn
2018-09-16  1:49     ` Kees Cook
2018-09-16  0:30 ` [PATCH 08/18] integrity: Initialize as LSM_TYPE_MINOR Kees Cook
2018-09-16  0:30 ` [PATCH 09/18] LSM: Record LSM name in struct lsm_info Kees Cook
2018-09-16  0:30 ` [PATCH 10/18] LSM: Plumb visibility into optional "enabled" state Kees Cook
2018-09-16  0:30 ` [PATCH 11/18] LSM: Lift LSM selection out of individual LSMs Kees Cook
2018-09-16  1:32   ` Jann Horn
2018-09-16  1:47     ` Kees Cook [this message]
2018-09-16  0:30 ` [PATCH 12/18] LSM: Introduce ordering details in struct lsm_info Kees Cook
2018-09-16  0:30 ` [PATCH 13/18] LoadPin: Initialize as LSM_TYPE_MINOR Kees Cook
2018-09-16  0:30 ` [PATCH 14/18] Yama: " Kees Cook
2018-09-16  0:30 ` [PATCH 15/18] capability: " Kees Cook
2018-09-16  0:30 ` [PATCH 16/18] LSM: Allow arbitrary LSM ordering Kees Cook
2018-09-16 18:49   ` Casey Schaufler
2018-09-16 23:00     ` Kees Cook
2018-09-17  0:46       ` Tetsuo Handa
2018-09-17 15:06       ` Casey Schaufler
2018-09-17 16:24         ` Kees Cook
2018-09-17 17:13           ` Casey Schaufler
2018-09-17 18:14             ` Kees Cook
2018-09-17 19:23               ` Casey Schaufler
2018-09-17 19:55                 ` John Johansen
2018-09-17 21:57                   ` Casey Schaufler
2018-09-17 22:36                     ` John Johansen
2018-09-17 23:10                       ` Mickaël Salaün
2018-09-17 23:20                         ` Kees Cook
2018-09-17 23:26                           ` John Johansen
2018-09-17 23:28                             ` Kees Cook
2018-09-17 23:40                               ` Casey Schaufler
2018-09-17 23:30                           ` Casey Schaufler
2018-09-17 23:47                             ` Mickaël Salaün
2018-09-18  0:00                               ` Casey Schaufler
2018-09-17 23:25                         ` John Johansen
2018-09-17 23:25                       ` Casey Schaufler
2018-09-18  0:00                       ` Kees Cook
2018-09-18  0:24                         ` Casey Schaufler
2018-09-18  0:45                           ` Kees Cook
2018-09-18  0:57                             ` Casey Schaufler
2018-09-18  0:59                               ` Kees Cook
2018-09-18  1:08                             ` John Johansen
2018-09-17 19:35               ` John Johansen
2018-09-16  0:30 ` [PATCH 17/18] LSM: Provide init debugging Kees Cook
2018-09-16  0:30 ` [PATCH 18/18] LSM: Don't ignore initialization failures Kees Cook

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='CAGXu5jKYqxZpRjct6zcUgh27bZDrEYPhejRzdCXc8fmLHX_Y=g@mail.gmail.com' \
    --to=keescook@chromium.org \
    --cc=casey.schaufler@intel.com \
    --cc=casey@schaufler-ca.com \
    --cc=jannh@google.com \
    --cc=jmorris@namei.org \
    --cc=john.johansen@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    --cc=sds@tycho.nsa.gov \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).