All of lore.kernel.org
 help / color / mirror / Atom feed
From: Casey Schaufler <casey@schaufler-ca.com>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: jmorris@namei.org, linux-security-module@vger.kernel.org,
	selinux@tycho.nsa.gov, john.johansen@canonical.com,
	eparis@redhat.com, keescook@chromium.org,
	Casey Schaufler <casey@schaufler-ca.com>
Subject: Re: [PATCH v12 3/9] LSM: Multiple concurrent LSMs
Date: Mon, 21 Jan 2013 18:10:04 -0800	[thread overview]
Message-ID: <50FDF4FC.1010308@schaufler-ca.com> (raw)
In-Reply-To: <201301221009.JDB30838.tFFMVFLOQJSOOH@I-love.SAKURA.ne.jp>

On 1/21/2013 5:09 PM, Tetsuo Handa wrote:
> Casey Schaufler wrote:
>> True enough, but the one example we have of LSM unloading is going
>> to leave droppings. I don't want to go anywhere near module unloading,
>> even for LSMs that don't use the official mechanisms, without a story
>> on how they're going to get cleaned up.
>> I'm not sure that we're missing anything beyond locking
>> (as you have pointed out) and cleaning up, which you're
>> less concerned about than I. What I am *not* ready to do
>> is stand up and say that I believe all the bases are covered.
> You want to make sure that all blobs used by a LSM module are cleaned up before
> unloading that module, don't you?

That is necessary, but not sufficient. The lsm_blob needs to
be cleaned up as well. And the rub is that you need to use the
LSM provided free functions, but you can't count on them
working once the LSM is disabled because the LSM is, after
all, disabled.

> I think "clean unloading" (i.e. cleaning up blobs used by that module) makes
> sense only after "safe unloading" (i.e. making sure that that module is no
> longer referenced) is implemented.
>
> And if we want to implement "safe unloading", I think we need to add
> "struct module *owner;" to "struct security_operations" and use refcounter like
>
> #define call_void_hook(FUNC, ...)					\
> 	do {								\
> 		struct security_operations *sop;			\
> 		struct module *module;					\
> 									\
> 		list_for_each_entry(sop, &lsm_hooks[lsm_##FUNC],	\
> 					list[lsm_##FUNC]) {		\
> 			if (!try_module_get(sop->owner))		\
> 				continue;				\
> 			sop->FUNC(__VA_ARGS__);				\
> 			module_put(sop->owner);				\
> 	} while (0)

I'm not familiar with try_module_get(), but unless it is trivial,
and maybe even then, I have no interest in adding its overhead
in that loop.

> Given that a mechanism for "safe unloading" is implemented, below is my answer
> for "clean unloading".
>
>   TOMOYO can manage blobs without using "void *security;" embedded into various
>   objects. In other words, TOMOYO can manage blobs using linked lists (which
>   are fully reachable from module unloading function) embedded into TOMOYO.
>   Thus, it is trivially easy to release blobs used by TOMOYO upon unloading.
>   Ditto for TOMOYO-like LKM-based LSM modules.

I'm willing to look at this later.

> I haven't added module_exit() function because "safe unloading" mechanism is
> missing. If "safe unloading" mechanism is implemented, TOMOYO can support both
> runtime loading/registration and unregistration/unloading.
>


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

  parent reply	other threads:[~2013-01-22  2:10 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-08  1:54 [PATCH v12 0/9] LSM: Multiple concurrent LSMs Casey Schaufler
2013-01-08  1:54 ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 1/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 2/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 3/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
     [not found]   ` <201301092211.CGF18746.LMOHJFOOFQtVSF@I-love.SAKURA.ne.jp>
2013-01-09 16:26     ` Casey Schaufler
     [not found]       ` <50EE9BAE.5010101@canonical.com>
     [not found]         ` <201301102159.JAE81243.tOFLQVOMHSJOFF@I-love.SAKURA.ne.jp>
     [not found]           ` <50EEBD8B.2090000@canonical.com>
2013-01-10 16:20             ` Casey Schaufler
     [not found]       ` <201301212142.FGF86433.OVQJFMHFLtFSOO@I-love.SAKURA.ne.jp>
2013-01-21 22:31         ` Casey Schaufler
     [not found]           ` <201301220819.AFB21360.OFOQHJFSFVtLMO@I-love.SAKURA.ne.jp>
2013-01-21 23:45             ` Casey Schaufler
     [not found]               ` <201301221009.JDB30838.tFFMVFLOQJSOOH@I-love.SAKURA.ne.jp>
2013-01-22  2:10                 ` Casey Schaufler [this message]
     [not found]                   ` <201301221623.JIH35408.LFSJQFOFOOHVMt@I-love.SAKURA.ne.jp>
2013-01-22 19:43                     ` Casey Schaufler
     [not found]                       ` <201301232030.HAH52121.VFtOSLHQFJOOMF@I-love.SAKURA.ne.jp>
2013-01-23 16:18                         ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 4/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 5/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 6/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 7/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 8/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  2:09 ` [PATCH v12 9/9] " Casey Schaufler
2013-01-08  2:09   ` Casey Schaufler
2013-01-08  3:01 ` [PATCH v12 0/9] " Stephen Rothwell
2013-01-08  3:59   ` Stephen Rothwell
2013-01-08  4:11     ` Casey Schaufler
2013-01-08  4:11       ` Casey Schaufler
2013-01-08  6:34       ` Vasily Kulikov
2013-01-08  4:02   ` Casey Schaufler
2013-01-08  4:02     ` Casey Schaufler
2013-01-08  6:38     ` Vasily Kulikov
2013-01-08  9:12     ` James Morris
2013-01-08  9:12       ` James Morris
2013-01-08 17:14       ` Casey Schaufler
2013-01-08 17:14         ` Casey Schaufler
2013-01-08 20:19         ` Kees Cook
2013-01-09 13:42         ` James Morris
2013-01-09 13:42           ` James Morris
2013-01-09 17:07           ` Casey Schaufler
2013-01-09 17:07             ` Casey Schaufler
2013-01-08 20:40       ` John Johansen
2013-01-09 13:28         ` James Morris
2013-01-09 13:28           ` James Morris
2013-01-10 10:25           ` John Johansen
2013-01-10 13:23             ` Tetsuo Handa
2013-01-11  0:46             ` Eric W. Biederman
2013-01-11  0:46               ` Eric W. Biederman
2013-01-11  0:57               ` John Johansen
2013-01-11  1:13                 ` Eric W. Biederman
2013-01-11  1:13                   ` Eric W. Biederman
2013-01-11  1:15                   ` John Johansen
2013-01-11 18:13               ` Casey Schaufler
2013-01-11 18:13                 ` Casey Schaufler
2013-01-11 19:35                 ` Eric W. Biederman
2013-01-11 19:35                   ` Eric W. Biederman
2013-01-08 17:47 ` Stephen Smalley
2013-01-08 17:47   ` Stephen Smalley
2013-01-08 18:17   ` Casey Schaufler
2013-01-08 18:17     ` Casey Schaufler
2013-01-08 20:01   ` John Johansen
2013-01-15  4:17   ` Casey Schaufler
2013-01-15  4:17     ` Casey Schaufler
2013-01-08 20:22 ` 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=50FDF4FC.1010308@schaufler-ca.com \
    --to=casey@schaufler-ca.com \
    --cc=eparis@redhat.com \
    --cc=jmorris@namei.org \
    --cc=john.johansen@canonical.com \
    --cc=keescook@chromium.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=selinux@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 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.