From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E5E4619523 for ; Wed, 24 May 2023 19:00:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48BDDC433EF; Wed, 24 May 2023 19:00:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684954811; bh=xfARP3XwE0LoO4NFR5VnnXwiMlIzDx5sfYJ5uWQsEDI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=m5wc+luk1casXK1c7CCiClqhS++lIUNQglRVbpV6CnWollgCDKLqkAPu+1G6k031W bUWIwMajVtI2uXzzvo5JKBkAkOnQcYhI8bxtBqweyp0PsoxClkCvJuX+rqS9Ut6p6g 9P72zkNDvKow0Z+tmKi9oYZnUk9jv8y8k90ebiu0ODNt08hZjrlVXNhDGW01FmjtVk 1d7FZgDlwrVRFrj8ZNp7KwRuSxSHD0q3WFO/+y/40R+rDvAfbVsdKbHFD/fryFhaJz BPL67NKdvr2IwJL5LVnOuA+IFSR9Vv8IbaRT5gDuu0b6cxMt5zhUL4jzUSLAhLCTa5 k/6eBDXREegmg== Date: Wed, 24 May 2023 21:59:49 +0300 From: Mike Rapoport To: Ryan Roberts Cc: Andrew Morton , SeongJae Park , Christoph Hellwig , "Matthew Wilcox (Oracle)" , "Kirill A. Shutemov" , Lorenzo Stoakes , Uladzislau Rezki , Zi Yan , linux-kernel@vger.kernel.org, linux-mm@kvack.org, damon@lists.linux.dev Subject: Re: [PATCH v2 3/5] mm: Fix failure to unmap pte on highmem systems Message-ID: <20230524185949.GQ4967@kernel.org> References: <20230518110727.2106156-1-ryan.roberts@arm.com> <20230518110727.2106156-4-ryan.roberts@arm.com> Precedence: bulk X-Mailing-List: damon@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230518110727.2106156-4-ryan.roberts@arm.com> On Thu, May 18, 2023 at 12:07:25PM +0100, Ryan Roberts wrote: > The loser of a race to service a pte for a device private entry in the > swap path previously unlocked the ptl, but failed to unmap the pte. This > only affects highmem systems since unmapping a pte is a noop on > non-highmem systems. > > Fixes: 16ce101db85d ("mm/memory.c: fix race when faulting a device private page") > Signed-off-by: Ryan Roberts > Reviewed-by: Zi Yan Reviewed-by: Mike Rapoport (IBM) > --- > mm/memory.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index f69fbc251198..ed429e20a1bb 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3728,10 +3728,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > vmf->page = pfn_swap_entry_to_page(entry); > vmf->pte = pte_offset_map_lock(vma->vm_mm, vmf->pmd, > vmf->address, &vmf->ptl); > - if (unlikely(!pte_same(*vmf->pte, vmf->orig_pte))) { > - spin_unlock(vmf->ptl); > - goto out; > - } > + if (unlikely(!pte_same(*vmf->pte, vmf->orig_pte))) > + goto unlock; > > /* > * Get a page reference while we know the page can't be > -- > 2.25.1 > > -- Sincerely yours, Mike.