From: Greg Kroah-Hartman <greg@kroah.com>
To: David Herrmann <dh.herrmann@gmail.com>
Cc: Matthew Wilcox <matthew@wil.cx>, Ryan Lortie <desrt@desrt.ca>,
Hugh Dickins <hughd@google.com>, Kay Sievers <kay@vrfy.org>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Daniel Mack <zonque@gmail.com>,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
Karol Lewandowski <k.lewandowsk@samsung.com>,
Lennart Poettering <lennart@poettering.net>,
Johannes Weiner <hannes@cmpxchg.org>, Tejun Heo <tj@kernel.org>,
"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Alexander Viro <viro@zeniv.linux.org.uk>
Subject: Re: [PATCH 0/6] File Sealing & memfd_create()
Date: Wed, 19 Mar 2014 19:55:30 -0700 [thread overview]
Message-ID: <20140320025530.GA25469@kroah.com> (raw)
In-Reply-To: <1395256011-2423-1-git-send-email-dh.herrmann@gmail.com>
On Wed, Mar 19, 2014 at 08:06:45PM +0100, David Herrmann wrote:
> Hi
>
> This series introduces the concept of "file sealing". Sealing a file restricts
> the set of allowed operations on the file in question. Multiple seals are
> defined and each seal will cause a different set of operations to return EPERM
> if it is set. The following seals are introduced:
>
> * SEAL_SHRINK: If set, the inode size cannot be reduced
> * SEAL_GROW: If set, the inode size cannot be increased
> * SEAL_WRITE: If set, the file content cannot be modified
>
> Unlike existing techniques that provide similar protection, sealing allows
> file-sharing without any trust-relationship. This is enforced by rejecting seal
> modifications if you don't own an exclusive reference to the given file. So if
> you own a file-descriptor, you can be sure that no-one besides you can modify
> the seals on the given file. This allows mapping shared files from untrusted
> parties without the fear of the file getting truncated or modified by an
> attacker.
>
> Several use-cases exist that could make great use of sealing:
>
> 1) Graphics Compositors
> If a graphics client creates a memory-backed render-buffer and passes a
> file-decsriptor to it to the graphics server for display, the server
> _has_ to setup SIGBUS handlers whenever mapping the given file. Otherwise,
> the client might run ftruncate() or O_TRUNC on the on file in parallel,
> thus crashing the server.
> With sealing, a compositor can reject any incoming file-descriptor that
> does _not_ have SEAL_SHRINK set. This way, any memory-mappings are
> guaranteed to stay accessible. Furthermore, we still allow clients to
> increase the buffer-size in case they want to resize the render-buffer for
> the next frame. We also allow parallel writes so the client can render new
> frames into the same buffer (client is responsible of never rendering into
> a front-buffer if you want to avoid artifacts).
>
> Real use-case: Wayland wl_shm buffers can be transparently converted
Very nice, the Enlightenment developers have been asking for something
like this for a while, it should help them out a lot as well.
And thanks for the man pages and test code, if only all new apis came
with that already...
greg k-h
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <greg@kroah.com>
To: David Herrmann <dh.herrmann@gmail.com>
Cc: Matthew Wilcox <matthew@wil.cx>, Ryan Lortie <desrt@desrt.ca>,
Hugh Dickins <hughd@google.com>, Kay Sievers <kay@vrfy.org>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Daniel Mack <zonque@gmail.com>,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
Karol Lewandowski <k.lewandowsk@samsung.com>,
Lennart Poettering <lennart@poettering.net>,
Johannes Weiner <hannes@cmpxchg.org>, Tejun Heo <tj@kernel.org>,
"Michael Kerrisk \(man-pages\)" <mtk.manpages@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Alexander Viro <viro@zeniv.linux.org.uk>
Subject: Re: [PATCH 0/6] File Sealing & memfd_create()
Date: Wed, 19 Mar 2014 19:55:30 -0700 [thread overview]
Message-ID: <20140320025530.GA25469@kroah.com> (raw)
In-Reply-To: <1395256011-2423-1-git-send-email-dh.herrmann@gmail.com>
On Wed, Mar 19, 2014 at 08:06:45PM +0100, David Herrmann wrote:
> Hi
>
> This series introduces the concept of "file sealing". Sealing a file restricts
> the set of allowed operations on the file in question. Multiple seals are
> defined and each seal will cause a different set of operations to return EPERM
> if it is set. The following seals are introduced:
>
> * SEAL_SHRINK: If set, the inode size cannot be reduced
> * SEAL_GROW: If set, the inode size cannot be increased
> * SEAL_WRITE: If set, the file content cannot be modified
>
> Unlike existing techniques that provide similar protection, sealing allows
> file-sharing without any trust-relationship. This is enforced by rejecting seal
> modifications if you don't own an exclusive reference to the given file. So if
> you own a file-descriptor, you can be sure that no-one besides you can modify
> the seals on the given file. This allows mapping shared files from untrusted
> parties without the fear of the file getting truncated or modified by an
> attacker.
>
> Several use-cases exist that could make great use of sealing:
>
> 1) Graphics Compositors
> If a graphics client creates a memory-backed render-buffer and passes a
> file-decsriptor to it to the graphics server for display, the server
> _has_ to setup SIGBUS handlers whenever mapping the given file. Otherwise,
> the client might run ftruncate() or O_TRUNC on the on file in parallel,
> thus crashing the server.
> With sealing, a compositor can reject any incoming file-descriptor that
> does _not_ have SEAL_SHRINK set. This way, any memory-mappings are
> guaranteed to stay accessible. Furthermore, we still allow clients to
> increase the buffer-size in case they want to resize the render-buffer for
> the next frame. We also allow parallel writes so the client can render new
> frames into the same buffer (client is responsible of never rendering into
> a front-buffer if you want to avoid artifacts).
>
> Real use-case: Wayland wl_shm buffers can be transparently converted
Very nice, the Enlightenment developers have been asking for something
like this for a while, it should help them out a lot as well.
And thanks for the man pages and test code, if only all new apis came
with that already...
greg k-h
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <greg@kroah.com>
To: David Herrmann <dh.herrmann@gmail.com>
Cc: linux-kernel@vger.kernel.org, "Hugh Dickins" <hughd@google.com>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Matthew Wilcox" <matthew@wil.cx>,
"Karol Lewandowski" <k.lewandowsk@samsung.com>,
"Kay Sievers" <kay@vrfy.org>, "Daniel Mack" <zonque@gmail.com>,
"Lennart Poettering" <lennart@poettering.net>,
"Kristian Høgsberg" <krh@bitplanet.net>,
john.stultz@linaro.org, "Tejun Heo" <tj@kernel.org>,
"Johannes Weiner" <hannes@cmpxchg.org>,
dri-devel@lists.freedesktop.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org, "Andrew Morton" <akpm@linux-foundation.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Ryan Lortie" <desrt@desrt.ca>,
"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
Subject: Re: [PATCH 0/6] File Sealing & memfd_create()
Date: Wed, 19 Mar 2014 19:55:30 -0700 [thread overview]
Message-ID: <20140320025530.GA25469@kroah.com> (raw)
In-Reply-To: <1395256011-2423-1-git-send-email-dh.herrmann@gmail.com>
On Wed, Mar 19, 2014 at 08:06:45PM +0100, David Herrmann wrote:
> Hi
>
> This series introduces the concept of "file sealing". Sealing a file restricts
> the set of allowed operations on the file in question. Multiple seals are
> defined and each seal will cause a different set of operations to return EPERM
> if it is set. The following seals are introduced:
>
> * SEAL_SHRINK: If set, the inode size cannot be reduced
> * SEAL_GROW: If set, the inode size cannot be increased
> * SEAL_WRITE: If set, the file content cannot be modified
>
> Unlike existing techniques that provide similar protection, sealing allows
> file-sharing without any trust-relationship. This is enforced by rejecting seal
> modifications if you don't own an exclusive reference to the given file. So if
> you own a file-descriptor, you can be sure that no-one besides you can modify
> the seals on the given file. This allows mapping shared files from untrusted
> parties without the fear of the file getting truncated or modified by an
> attacker.
>
> Several use-cases exist that could make great use of sealing:
>
> 1) Graphics Compositors
> If a graphics client creates a memory-backed render-buffer and passes a
> file-decsriptor to it to the graphics server for display, the server
> _has_ to setup SIGBUS handlers whenever mapping the given file. Otherwise,
> the client might run ftruncate() or O_TRUNC on the on file in parallel,
> thus crashing the server.
> With sealing, a compositor can reject any incoming file-descriptor that
> does _not_ have SEAL_SHRINK set. This way, any memory-mappings are
> guaranteed to stay accessible. Furthermore, we still allow clients to
> increase the buffer-size in case they want to resize the render-buffer for
> the next frame. We also allow parallel writes so the client can render new
> frames into the same buffer (client is responsible of never rendering into
> a front-buffer if you want to avoid artifacts).
>
> Real use-case: Wayland wl_shm buffers can be transparently converted
Very nice, the Enlightenment developers have been asking for something
like this for a while, it should help them out a lot as well.
And thanks for the man pages and test code, if only all new apis came
with that already...
greg k-h
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kroah-Hartman <greg@kroah.com>
To: David Herrmann <dh.herrmann@gmail.com>
Cc: linux-kernel@vger.kernel.org, "Hugh Dickins" <hughd@google.com>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Matthew Wilcox" <matthew@wil.cx>,
"Karol Lewandowski" <k.lewandowsk@samsung.com>,
"Kay Sievers" <kay@vrfy.org>, "Daniel Mack" <zonque@gmail.com>,
"Lennart Poettering" <lennart@poettering.net>,
"Kristian Høgsberg" <krh@bitplanet.net>,
john.stultz@linaro.org, "Tejun Heo" <tj@kernel.org>,
"Johannes Weiner" <hannes@cmpxchg.org>,
dri-devel@lists.freedesktop.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org, "Andrew Morton" <akpm@linux-foundation.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Ryan Lortie" <desrt@desrt.ca>,
"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>
Subject: Re: [PATCH 0/6] File Sealing & memfd_create()
Date: Wed, 19 Mar 2014 19:55:30 -0700 [thread overview]
Message-ID: <20140320025530.GA25469@kroah.com> (raw)
In-Reply-To: <1395256011-2423-1-git-send-email-dh.herrmann@gmail.com>
On Wed, Mar 19, 2014 at 08:06:45PM +0100, David Herrmann wrote:
> Hi
>
> This series introduces the concept of "file sealing". Sealing a file restricts
> the set of allowed operations on the file in question. Multiple seals are
> defined and each seal will cause a different set of operations to return EPERM
> if it is set. The following seals are introduced:
>
> * SEAL_SHRINK: If set, the inode size cannot be reduced
> * SEAL_GROW: If set, the inode size cannot be increased
> * SEAL_WRITE: If set, the file content cannot be modified
>
> Unlike existing techniques that provide similar protection, sealing allows
> file-sharing without any trust-relationship. This is enforced by rejecting seal
> modifications if you don't own an exclusive reference to the given file. So if
> you own a file-descriptor, you can be sure that no-one besides you can modify
> the seals on the given file. This allows mapping shared files from untrusted
> parties without the fear of the file getting truncated or modified by an
> attacker.
>
> Several use-cases exist that could make great use of sealing:
>
> 1) Graphics Compositors
> If a graphics client creates a memory-backed render-buffer and passes a
> file-decsriptor to it to the graphics server for display, the server
> _has_ to setup SIGBUS handlers whenever mapping the given file. Otherwise,
> the client might run ftruncate() or O_TRUNC on the on file in parallel,
> thus crashing the server.
> With sealing, a compositor can reject any incoming file-descriptor that
> does _not_ have SEAL_SHRINK set. This way, any memory-mappings are
> guaranteed to stay accessible. Furthermore, we still allow clients to
> increase the buffer-size in case they want to resize the render-buffer for
> the next frame. We also allow parallel writes so the client can render new
> frames into the same buffer (client is responsible of never rendering into
> a front-buffer if you want to avoid artifacts).
>
> Real use-case: Wayland wl_shm buffers can be transparently converted
Very nice, the Enlightenment developers have been asking for something
like this for a while, it should help them out a lot as well.
And thanks for the man pages and test code, if only all new apis came
with that already...
greg k-h
next prev parent reply other threads:[~2014-03-20 2:54 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-19 19:06 [PATCH 0/6] File Sealing & memfd_create() David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` [PATCH 1/6] fs: fix i_writecount on shmem and friends David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` [PATCH 2/6] shm: add sealing API David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` [PATCH 3/6] shm: add memfd_create() syscall David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-20 8:47 ` Cyrill Gorcunov
2014-03-20 8:47 ` Cyrill Gorcunov
2014-03-20 9:01 ` Pavel Emelyanov
2014-03-20 9:01 ` Pavel Emelyanov
2014-03-20 11:29 ` David Herrmann
2014-03-20 11:29 ` David Herrmann
2014-03-20 11:29 ` David Herrmann
2014-03-20 11:29 ` David Herrmann
2014-03-20 11:50 ` Pavel Emelyanov
2014-03-20 11:50 ` Pavel Emelyanov
2014-03-20 19:22 ` John Stultz
2014-03-20 19:22 ` John Stultz
2014-04-02 13:38 ` Konstantin Khlebnikov
2014-04-02 13:38 ` Konstantin Khlebnikov
2014-04-02 14:18 ` David Herrmann
2014-04-02 14:18 ` David Herrmann
2014-04-02 14:52 ` Konstantin Khlebnikov
2014-04-02 14:52 ` Konstantin Khlebnikov
2014-04-02 14:52 ` Konstantin Khlebnikov
2014-04-10 19:07 ` Andy Lutomirski
2014-04-10 19:07 ` Andy Lutomirski
2014-03-19 19:06 ` [PATCH 4/6] selftests: add memfd_create() + sealing tests David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` [PATCH man-pages 5/6] fcntl.2: document SHMEM_SET/GET_SEALS commands David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` [PATCH man-pages 6/6] memfd_create.2: add memfd_create() man-page David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-19 19:06 ` David Herrmann
2014-03-20 2:55 ` Greg Kroah-Hartman [this message]
2014-03-20 2:55 ` [PATCH 0/6] File Sealing & memfd_create() Greg Kroah-Hartman
2014-03-20 2:55 ` Greg Kroah-Hartman
2014-03-20 2:55 ` Greg Kroah-Hartman
2014-03-20 3:49 ` Linus Torvalds
2014-03-20 3:49 ` Linus Torvalds
2014-03-20 8:07 ` David Herrmann
2014-03-20 8:07 ` David Herrmann
2014-03-20 8:07 ` David Herrmann
2014-03-20 8:07 ` David Herrmann
2014-03-20 14:41 ` One Thousand Gnomes
2014-03-20 14:41 ` One Thousand Gnomes
2014-03-20 14:41 ` One Thousand Gnomes
2014-03-20 15:12 ` David Herrmann
2014-03-20 15:12 ` David Herrmann
2014-03-20 15:12 ` David Herrmann
2014-03-20 15:12 ` David Herrmann
2014-03-20 15:26 ` One Thousand Gnomes
2014-03-20 15:26 ` One Thousand Gnomes
2014-03-20 15:26 ` One Thousand Gnomes
2014-03-20 15:32 ` tytso
2014-03-20 15:32 ` tytso
2014-03-20 15:39 ` One Thousand Gnomes
2014-03-20 15:48 ` David Herrmann
2014-03-20 15:48 ` David Herrmann
2014-03-20 16:38 ` tytso
2014-03-20 16:38 ` tytso
2014-04-10 19:14 ` Andy Lutomirski
2014-04-10 19:14 ` Andy Lutomirski
2014-04-10 20:32 ` Theodore Ts'o
2014-04-10 20:32 ` Theodore Ts'o
2014-04-10 20:37 ` Andy Lutomirski
2014-04-10 20:37 ` Andy Lutomirski
2014-04-10 20:49 ` David Herrmann
2014-04-10 20:49 ` David Herrmann
2014-04-10 21:16 ` Andy Lutomirski
2014-04-10 21:16 ` Andy Lutomirski
2014-04-10 22:57 ` David Herrmann
2014-04-10 22:57 ` David Herrmann
2014-04-10 22:57 ` David Herrmann
2014-04-10 22:57 ` David Herrmann
2014-04-10 23:05 ` Andy Lutomirski
2014-04-10 23:05 ` Andy Lutomirski
2014-04-10 23:16 ` David Herrmann
2014-04-10 23:16 ` David Herrmann
2014-04-10 23:32 ` Andy Lutomirski
2014-04-10 23:32 ` Andy Lutomirski
2014-04-20 15:03 ` Pavel Machek
2014-04-20 15:03 ` Pavel Machek
2014-06-17 9:48 ` Florian Weimer
2014-06-17 9:48 ` Florian Weimer
2014-06-17 9:48 ` Florian Weimer
2014-06-17 9:48 ` Florian Weimer
2014-06-17 16:21 ` Andy Lutomirski
2014-04-10 14:45 ` Colin Walters
2014-04-10 14:45 ` Colin Walters
2014-04-10 19:15 ` Andy Lutomirski
2014-04-10 19:15 ` Andy Lutomirski
2014-04-10 19:45 ` Colin Walters
2014-04-10 19:45 ` Colin Walters
2014-04-11 6:09 ` Alex Elsayed
2014-04-11 6:09 ` Alex Elsayed
2014-04-08 13:00 ` Florian Weimer
2014-04-08 13:00 ` Florian Weimer
2014-04-09 21:31 ` David Herrmann
2014-04-09 21:31 ` David Herrmann
2014-04-22 9:10 ` Florian Weimer
2014-04-22 9:10 ` Florian Weimer
2014-04-22 11:55 ` David Herrmann
2014-04-22 11:55 ` David Herrmann
2014-04-22 12:44 ` Florian Weimer
2014-04-22 12:44 ` Florian Weimer
2014-04-22 12:55 ` David Herrmann
2014-04-22 12:55 ` David Herrmann
2014-04-10 19:17 ` Andy Lutomirski
2014-04-10 19:17 ` Andy Lutomirski
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=20140320025530.GA25469@kroah.com \
--to=greg@kroah.com \
--cc=akpm@linux-foundation.org \
--cc=desrt@desrt.ca \
--cc=dh.herrmann@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=k.lewandowsk@samsung.com \
--cc=kay@vrfy.org \
--cc=lennart@poettering.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=matthew@wil.cx \
--cc=mtk.manpages@gmail.com \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=zonque@gmail.com \
/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.