Message ID | 20181002005505.6112-11-keescook@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | LSM: Explict LSM ordering | expand |
On Mon, 1 Oct 2018, Kees Cook wrote: > LSM initialization failures have traditionally been ignored. We should > at least WARN when something goes wrong. I guess we could have a boot param which specifies what to do if any LSM fails to init, as I think some folks will want to stop execution at that point. Thoughts? > > Signed-off-by: Kees Cook <keescook@chromium.org> > Reviewed-by: Casey Schaufler <casey@schaufler-ca.com> > Reviewed-by: John Johansen <john.johansen@canonical.com> > --- > security/security.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/security/security.c b/security/security.c > index 395f804f6a91..2055af907eba 100644 > --- a/security/security.c > +++ b/security/security.c > @@ -55,10 +55,12 @@ static __initdata bool debug; > static void __init major_lsm_init(void) > { > struct lsm_info *lsm; > + int ret; > > for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { > init_debug("initializing %s\n", lsm->name); > - lsm->init(); > + ret = lsm->init(); > + WARN(ret, "%s failed to initialize: %d\n", lsm->name, ret); > } > } > >
On Tue, Oct 2, 2018 at 2:20 PM, James Morris <jmorris@namei.org> wrote: > On Mon, 1 Oct 2018, Kees Cook wrote: > >> LSM initialization failures have traditionally been ignored. We should >> at least WARN when something goes wrong. > > I guess we could have a boot param which specifies what to do if any LSM > fails to init, as I think some folks will want to stop execution at that > point. > > Thoughts? I'm not opposed, but I won't author it because Linus will yell at me about introducing a "machine killing" option. -Kees
diff --git a/security/security.c b/security/security.c index 395f804f6a91..2055af907eba 100644 --- a/security/security.c +++ b/security/security.c @@ -55,10 +55,12 @@ static __initdata bool debug; static void __init major_lsm_init(void) { struct lsm_info *lsm; + int ret; for (lsm = __start_lsm_info; lsm < __end_lsm_info; lsm++) { init_debug("initializing %s\n", lsm->name); - lsm->init(); + ret = lsm->init(); + WARN(ret, "%s failed to initialize: %d\n", lsm->name, ret); } }