linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Alex Elsayed <eternaleye@gmail.com>
To: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org
Subject: Re: RFC: named anonymous vmas
Date: Wed, 26 Jun 2013 11:53:32 -0700	[thread overview]
Message-ID: <kqfdb6$haq$2@ger.gmane.org> (raw)
In-Reply-To: <CAMbhsRTdMaVR1LZRigumDqz_e5FgeyfJLrSHCDs8t7ywrmumTQ@mail.gmail.com>

Colin Cross wrote:

> On Mon, Jun 24, 2013 at 4:48 AM, Christoph Hellwig <hch@infradead.org>
> wrote:
>> On Sat, Jun 22, 2013 at 12:47:29PM -0700, Alex Elsayed wrote:
>>> Couldn't this be done by having a root-only tmpfs, and having a
>>> userspace component that creates per-app directories with restrictive
>>> permissions on startup/app install? Then each app creates files in its
>>> own directory, and can pass the fds around.
> 
> If each app gets its own writable directory that's not really
> different than a world writable tmpfs.  It requires something that
> watches for apps to exit for any reason and cleans up their
> directories, and it requires each app to come up with an unused name
> when it wants to create a file, and the kernel can give you both very
> cleanly.

Not so far as I can tell. I'm thinking specifically in the Android model of 
'one user per app', and as I see it the issues with a world writable tmpfs 
would be:

1.) Race conditions and all the sticky bit bugs of history - app A tries to 
create file foo, but app C is doing the same. This is resolved with per-app 
directories and restrictive permissions.

2.) Resource exhaustion - implementing this for a mmap'ed device node as 
described in HCH's mail would amount to implementing some sort of quota 
support. A world-writable tmpfs would require user quotas. A dir-per-app 
tmpfs could mount a separate, limited tmpfs on each even in the absence of 
user quotas, and mount -o remount,size=$foo works to change those limits 
(within certain bounds of behavior).

3.) Cleanup - doing this with a device makes it simple, yes; once the FDs 
are closed the mapping goes away. But if the only way the mapping gets 
shared is via FD passing, and your users are all via a platform library, 
unlink() after open(O_CREAT) would get you the same behavior as I understand 
it. At that point, the only thing to clean up is the per-app directory 
itself, which can be done on app uninstall IIUC.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2013-06-26 18:53 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-21 23:42 Colin Cross
2013-06-22  5:12 ` Kyungmin Park
2013-06-22  5:20   ` Colin Cross
2013-06-22 10:31 ` Christoph Hellwig
2013-06-22 17:30   ` Colin Cross
2013-06-22 19:47     ` Alex Elsayed
2013-06-24 11:48       ` Christoph Hellwig
2013-06-24 17:26         ` Colin Cross
2013-06-24 23:45           ` John Stultz
2013-06-26 18:53           ` Alex Elsayed [this message]
2013-07-14  0:57         ` Sam Ben
2013-08-01  8:29     ` Christoph Hellwig
2013-08-01  8:36       ` Rich Felker
2013-08-02 15:11         ` Christoph Hellwig
2013-08-03 23:54         ` KOSAKI Motohiro
2013-07-14  0:27 ` Sam Ben

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='kqfdb6$haq$2@ger.gmane.org' \
    --to=eternaleye@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox