From: Jason Gunthorpe <jgg@nvidia.com>
To: David Hildenbrand <david@redhat.com>
Cc: Lorenzo Stoakes <lstoakes@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Jens Axboe <axboe@kernel.dk>,
Matthew Wilcox <willy@infradead.org>,
Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>,
Leon Romanovsky <leon@kernel.org>,
Christian Benvenuti <benve@cisco.com>,
Nelson Escobar <neescoba@cisco.com>,
Bernard Metzler <bmt@zurich.ibm.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Bjorn Topel <bjorn@kernel.org>,
Magnus Karlsson <magnus.karlsson@intel.com>,
Maciej Fijalkowski <maciej.fijalkowski@intel.com>,
Jonathan Lemon <jonathan.lemon@gmail.com>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Christian Brauner <brauner@kernel.org>,
Richard Cochran <richardcochran@gmail.com>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Jesper Dangaard Brouer <hawk@kernel.org>,
John Fastabend <john.fastabend@gmail.com>,
linux-fsdevel@vger.kernel.org, linux-perf-users@vger.kernel.org,
netdev@vger.kernel.org, bpf@vger.kernel.org,
Oleg Nesterov <oleg@redhat.com>,
John Hubbard <jhubbard@nvidia.com>, Jan Kara <jack@suse.cz>,
"Kirill A . Shutemov" <kirill@shutemov.name>,
Pavel Begunkov <asml.silence@gmail.com>,
Mika Penttila <mpenttil@redhat.com>,
David Howells <dhowells@redhat.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH v5] mm/gup: disallow GUP writing to file-backed mappings by default
Date: Fri, 28 Apr 2023 11:35:32 -0300 [thread overview]
Message-ID: <ZEvZtIb2EDb/WudP@nvidia.com> (raw)
In-Reply-To: <afcc124e-7a9b-879c-dfdf-200426b84e24@redhat.com>
On Fri, Apr 28, 2023 at 04:20:46PM +0200, David Hildenbrand wrote:
> Sorry for jumping in late, I'm on vacation :)
>
> On 28.04.23 01:42, Lorenzo Stoakes wrote:
> > Writing to file-backed mappings which require folio dirty tracking using
> > GUP is a fundamentally broken operation, as kernel write access to GUP
> > mappings do not adhere to the semantics expected by a file system.
> >
> > A GUP caller uses the direct mapping to access the folio, which does not
> > cause write notify to trigger, nor does it enforce that the caller marks
> > the folio dirty.
>
> How should we enforce it? It would be a BUG in the GUP user.
I hope we don't have these kinds of mistakes.. hard to enforce by
code.
> This change has the potential to break existing setups. Simple example:
> libvirt domains configured for file-backed VM memory that also has a vfio
> device configured. It can easily be configured by users (evolving VM
> configuration, copy-paste etc.). And it works from a VM perspective, because
> the guest memory is essentially stale once the VM is shutdown and the pages
> were unpinned. At least we're not concerned about stale data on
> disk.
I think this is broken today and we should block it. We know from
experiments with RDMA that doing exactly this triggers kernel oop's.
Run your qemu config once, all the pages in the file become dirty.
Run your qmeu config again and now all the dirty pages are longterm
pinned.
Something eventually does writeback and FS cleans the page.
Now close your VM and the page is dirtied without make write. FS is
inconsistent with the MM, kernel will eventually oops.
I'm skeptical that anyone can actually do this combination of things
successfully without getting kernel crashes or file data corruption -
ie there is no real user to break.
> With your changes, such VMs would no longer start, breaking existing user
> setups with a kernel update.
Yes, as a matter of security we should break it.
Earlier I suggested making this contingent on kernel lockdown >=
integrity, if actual users come and complain we should go to that
option.
> Sure, we could warn, or convert individual users using a flag (io_uring).
> But maybe we should invest more energy on a fix?
It has been years now, I think we need to admit a fix is still years
away. Blocking the security problem may even motivate more people to
work on a fix.
Security is the primary case where we have historically closed uAPI
items.
Jason
next prev parent reply other threads:[~2023-04-28 14:35 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-27 23:42 Lorenzo Stoakes
2023-04-28 2:06 ` John Hubbard
2023-04-28 4:21 ` Mika Penttilä
2023-04-28 11:51 ` Jan Kara
2023-04-28 11:59 ` Lorenzo Stoakes
2023-04-28 13:17 ` Jason Gunthorpe
2023-04-28 14:20 ` David Hildenbrand
2023-04-28 14:35 ` Jason Gunthorpe [this message]
2023-04-28 15:08 ` David Hildenbrand
2023-04-28 15:23 ` David Hildenbrand
2023-04-28 15:33 ` Lorenzo Stoakes
2023-04-28 15:34 ` David Hildenbrand
2023-04-28 15:43 ` David Hildenbrand
2023-04-28 16:09 ` Kirill A . Shutemov
2023-04-28 16:13 ` David Hildenbrand
2023-04-28 16:22 ` Kirill A . Shutemov
2023-04-28 16:39 ` Peter Xu
2023-04-28 16:51 ` David Hildenbrand
2023-04-28 16:56 ` Kirill A . Shutemov
2023-04-28 17:01 ` Lorenzo Stoakes
2023-04-28 17:02 ` David Hildenbrand
2023-04-28 17:31 ` Jason Gunthorpe
2023-04-28 17:42 ` Lorenzo Stoakes
2023-04-28 17:49 ` Jason Gunthorpe
2023-04-28 23:43 ` Kirill A . Shutemov
2023-05-02 8:00 ` Jan Kara
2023-05-02 8:39 ` Peter Zijlstra
2023-04-28 17:01 ` Lorenzo Stoakes
2023-04-28 17:05 ` David Hildenbrand
2023-04-28 17:13 ` Lorenzo Stoakes
2023-04-28 17:29 ` David Hildenbrand
2023-04-28 18:26 ` John Hubbard
2023-04-28 15:56 ` Peter Xu
2023-04-28 16:02 ` David Hildenbrand
2023-04-28 17:33 ` Jason Gunthorpe
2023-04-28 18:26 ` John Hubbard
2023-04-28 15:27 ` Jason Gunthorpe
2023-04-28 15:41 ` David Hildenbrand
2023-04-28 18:25 ` Theodore Ts'o
2023-04-28 18:50 ` Jason Gunthorpe
2023-04-29 4:21 ` Theodore Ts'o
2023-04-29 23:01 ` Jason Gunthorpe
2023-04-29 23:09 ` Lorenzo Stoakes
2023-05-01 7:27 ` Dave Chinner
2023-05-01 12:39 ` Jason Gunthorpe
2023-04-28 14:55 ` Lorenzo Stoakes
2023-04-28 15:13 ` David Hildenbrand
2023-04-28 15:15 ` Jens Axboe
2023-04-28 15:27 ` Lorenzo Stoakes
2023-04-28 15:24 ` Lorenzo Stoakes
2023-04-28 15:33 ` David Hildenbrand
2023-04-28 15:50 ` Lorenzo Stoakes
2023-04-28 16:00 ` David Hildenbrand
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=ZEvZtIb2EDb/WudP@nvidia.com \
--to=jgg@nvidia.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=asml.silence@gmail.com \
--cc=ast@kernel.org \
--cc=axboe@kernel.dk \
--cc=benve@cisco.com \
--cc=bjorn@kernel.org \
--cc=bmt@zurich.ibm.com \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=david@redhat.com \
--cc=dennis.dalessandro@cornelisnetworks.com \
--cc=dhowells@redhat.com \
--cc=edumazet@google.com \
--cc=hawk@kernel.org \
--cc=hch@lst.de \
--cc=irogers@google.com \
--cc=jack@suse.cz \
--cc=jhubbard@nvidia.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=jonathan.lemon@gmail.com \
--cc=kirill@shutemov.name \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=lstoakes@gmail.com \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=mpenttil@redhat.com \
--cc=namhyung@kernel.org \
--cc=neescoba@cisco.com \
--cc=netdev@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=pabeni@redhat.com \
--cc=peterz@infradead.org \
--cc=richardcochran@gmail.com \
--cc=willy@infradead.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