From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hubbard Subject: Re: [PATCH 2/2] mm: set PG_dma_pinned on get_user_pages*() Date: Mon, 18 Jun 2018 10:44:28 -0700 Message-ID: <7295d9c3-ecc3-ae60-1818-72b0565741ff@nvidia.com> References: <20180617012510.20139-1-jhubbard@nvidia.com> <20180617012510.20139-3-jhubbard@nvidia.com> <20180618075650.GA7300@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20180618075650.GA7300@infradead.org> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: Christoph Hellwig , john.hubbard@gmail.com Cc: Matthew Wilcox , Michal Hocko , Christopher Lameter , Jason Gunthorpe , Dan Williams , Jan Kara , linux-mm@kvack.org, LKML , linux-rdma List-Id: linux-rdma@vger.kernel.org Hi Christoph, Thanks for looking at this... On 06/18/2018 12:56 AM, Christoph Hellwig wrote: > On Sat, Jun 16, 2018 at 06:25:10PM -0700, john.hubbard@gmail.com wrote: >> From: John Hubbard >> >> This fixes a few problems that come up when using devices (NICs, GPUs, >> for example) that want to have direct access to a chunk of system (CPU) >> memory, so that they can DMA to/from that memory. Problems [1] come up >> if that memory is backed by persistence storage; for example, an ext4 >> file system. I've been working on several customer bugs that are hitting >> this, and this patchset fixes those bugs. > > What happens if we do get_user_page from two different threads or even > processes on the same page? As far as I can tell from your patch > the first one finishing the page will clear the bit and then we are > back to no protection. The patch does not do that. The flag is only ever cleared when the page is freed. That can't happen until each of the two threads above is done and calls put_page(). So while there may be other design issues here, the above case is not one of them. :) thanks, -- John Hubbard NVIDIA