From: Vasiliy Kulikov <segoon@openwall.com>
To: Serge Hallyn <serge.hallyn@canonical.com>
Cc: akpm@linux-foundation.org, daniel.lezcano@free.fr,
ebiederm@xmission.com, mingo@elte.hu, oleg@redhat.com,
rdunlap@xenotime.net, tj@kernel.org,
kernel-hardening@lists.openwall.com
Subject: [kernel-hardening] Re: [PATCH] shm: handle separate PID namespaces case
Date: Tue, 5 Jul 2011 18:50:33 +0400 [thread overview]
Message-ID: <20110705145033.GA3052@albatros> (raw)
In-Reply-To: <20110705142659.GA18290@peqn>
Hi Serge,
On Tue, Jul 05, 2011 at 09:26 -0500, Serge Hallyn wrote:
> > diff --git a/ipc/shm.c b/ipc/shm.c
> > index 22006f1..3baae98 100644
> > --- a/ipc/shm.c
> > +++ b/ipc/shm.c
> > @@ -239,7 +239,23 @@ static int shm_try_destroy_current(int id, void *p, void *data)
> > if (IS_ERR(shp))
> > return 0;
> >
> > - if (shp->shm_cprid != task_tgid_vnr(current)) {
> > + if (shp->shm_creator != current) {
> > + shm_unlock(shp);
> > + return 0;
> > + }
> > +
> > + /*
> > + * Mark it as orphaned to destroy the segment when
> > + * kernel.shm_forced_rmid is changed.
> > + * It is noop if the following shm_may_destroy() returns true.
> > + */
> > + shp->shm_creator = NULL;
>
> This function, shm_try_destroy_current(), only gets called by shm_exit()
> if the shm_forced_rmid is set, right? So something funky can happen if
> first shm_forced_rmid is 0 and some get created and the creating tasks
> exits, then shm_forced_rmid gets set to one, and the task pointer gets
> reused?
No, sinse this patch exit_shm() iterates all segments regardless of
shm_forced_rmid value (it is tried to _destroy_ the segment only if
shm_forced_rmid==1). The ->shm_creator is set when the segment is
created and explicitly NULL'ed when the task exits. As it has such
explicit rules, the ref counting is not needed at all.
Also ->shm_creator is not needed for anything, but for tracking whether
the creator has already exited, so keeping a reference neither to task
nor to pid is needed at all.
Thanks,
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
next prev parent reply other threads:[~2011-07-05 14:50 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-29 22:14 + ipc-introduce-shm_rmid_forced-sysctl.patch added to -mm tree akpm
[not found] ` <20110630134855.GA6165@mail.hallyn.com>
2011-06-30 13:57 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-03 18:00 ` Vasiliy Kulikov
2011-07-04 11:55 ` [kernel-hardening] [PATCH] shm: handle separate PID namespaces case Vasiliy Kulikov
2011-07-04 15:05 ` [kernel-hardening] " Oleg Nesterov
2011-07-04 15:26 ` Vasiliy Kulikov
2011-07-04 15:37 ` Oleg Nesterov
2011-07-04 15:48 ` Vasiliy Kulikov
2011-07-04 17:01 ` [kernel-hardening] [PATCH] shm: optimize locking and ipc_namespace getting Vasiliy Kulikov
2011-07-04 17:29 ` [kernel-hardening] " Oleg Nesterov
2011-07-04 17:51 ` Vasiliy Kulikov
2011-07-05 17:38 ` [kernel-hardening] [PATCH v2] " Vasiliy Kulikov
2011-07-05 17:37 ` [kernel-hardening] [PATCH v2] shm: handle separate PID namespaces case Vasiliy Kulikov
2011-07-15 6:45 ` [kernel-hardening] " Vasiliy Kulikov
2011-07-05 14:26 ` [kernel-hardening] Re: [PATCH] " Serge Hallyn
2011-07-05 14:50 ` Vasiliy Kulikov [this message]
2011-07-05 15:57 ` Serge Hallyn
2011-07-05 17:42 ` Vasiliy Kulikov
2011-07-06 16:31 ` Serge Hallyn
2011-07-06 16:57 ` Vasiliy Kulikov
2011-07-06 18:08 ` Oleg Nesterov
2011-07-06 18:35 ` Vasiliy Kulikov
2011-07-05 17:29 ` Vasiliy Kulikov
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=20110705145033.GA3052@albatros \
--to=segoon@openwall.com \
--cc=akpm@linux-foundation.org \
--cc=daniel.lezcano@free.fr \
--cc=ebiederm@xmission.com \
--cc=kernel-hardening@lists.openwall.com \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=rdunlap@xenotime.net \
--cc=serge.hallyn@canonical.com \
--cc=tj@kernel.org \
/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.