From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05DCCC4332F for ; Tue, 20 Dec 2022 07:26:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 955828E0008; Tue, 20 Dec 2022 02:26:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 904E88E0001; Tue, 20 Dec 2022 02:26:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A5838E0008; Tue, 20 Dec 2022 02:26:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6A6568E0001 for ; Tue, 20 Dec 2022 02:26:32 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 46BA91C63B6 for ; Tue, 20 Dec 2022 07:26:32 +0000 (UTC) X-FDA: 80261851824.23.BE8EB3C Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by imf17.hostedemail.com (Postfix) with ESMTP id AB64E40018 for ; Tue, 20 Dec 2022 07:26:30 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=BBqm0Mh4; spf=pass (imf17.hostedemail.com: domain of shiyn.lin@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=shiyn.lin@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671521190; a=rsa-sha256; cv=none; b=7V2eemzGvsNwuW/WkJrhiNn9ofmpZLWA/eMD6EAjuJ0kvsT1QNDHi9ut+aRmBObA8ewrBV u+h4Zk9C+78shrN4hWl0S+mGtH0wYN/vl5DfG8nF7Ge0xvpGCmsY3LrSH6WG/GomhLG11q a0YlHvRwu0pHHEsdvUoeOWr/v6yFcQc= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=BBqm0Mh4; spf=pass (imf17.hostedemail.com: domain of shiyn.lin@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=shiyn.lin@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1671521190; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lJ2p4kzRZQx2M+uHMuQF7vBRM0anRv9EBumcihg3PQc=; b=6rqkiugmbfEyn+TI+yV1XDkC5H1c5LaHY4x/e6+c0XOd5l1SDG+Bd9h4ZpDs7syL95Mysp O9cAE40uW8HV2AXm3bTwY8cnwtt+0WkBJE6wy3j7rQZOSv+2hu50JnXB/yyo5rF2nYjnOE F491MXZ5xjrNe+YvqHKzZNMteK7mwV8= Received: by mail-pg1-f170.google.com with SMTP id s196so7793679pgs.3 for ; Mon, 19 Dec 2022 23:26:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lJ2p4kzRZQx2M+uHMuQF7vBRM0anRv9EBumcihg3PQc=; b=BBqm0Mh4ePRByKmrLfvCwkScNbWATyCDynwf1JxizlYMlSLRoxUJrIiVqjr2xr4xeM dmXraAU1naXOkExZXTq2HDWn1prL9xIFcS7HvM38W6tUrv6fZxpiarjsNpU32ymNLIQr 1HTwmj84kS7nDjMjYHgpU6TL4ka5SbrZPgwfjoq37iHoJJ51q0qV5SBZnfIY4Sob7Kaj IINB5xEwVrLOVXzzDrayCqBRJ+fzoXCVnctZ8OeeV9k357WHdx8XMkir3f9v6g+4S1ji kEFwAKqEguWLqCHDeSOnPuATmQFixsk2ZArf6QhMk5xYmzSmirPCclh4X9xne4SlPwtn 3JgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lJ2p4kzRZQx2M+uHMuQF7vBRM0anRv9EBumcihg3PQc=; b=d+rUG9LoEWUue4b+egjFHZ4hSCIKVDSS6wAVBIz5c0jXnlRECZfJ9ivhLcigzAJXgJ VPI/sLJHqbBIsAQIzGc+o234zYnymeut1r8ohqjqz3jfXjqUD4EC4qlLAUJbM0AxhaVn qryPC+fG97vnrGLogzIkXfVzAGObcwOPf03o3I4I7vnL9iKltDplk0ecBNcDwpyZ8C6G K2r3ZBJeix6xUJQKqvu15utg08+y+qWK7VsP+dJ2FNQ869Tdy+roZX8dmOfZgdQocrer 6+YkP602M6h4NUs246nP/1m5L19TTPPs2ZSrfDcZQYM4lgu9ogFdiBP+SmXU8uYwsx51 Q8gA== X-Gm-Message-State: AFqh2kqgHIVSSzhLetow1j3BOzTqS88FSLACzPMf88vSfjS5ouALZ/RX k7gOeeWGpOlQqsQRCY/Lvkk= X-Google-Smtp-Source: AMrXdXtfjmPeOLI9E+pbL9c2dP4v9DUaY59cThOKU2xu/3lwgRPb90rNOhO2dbkDkDN2F6VXbNEsrA== X-Received: by 2002:aa7:874b:0:b0:57e:c106:d50c with SMTP id g11-20020aa7874b000000b0057ec106d50cmr13197565pfo.17.1671521189678; Mon, 19 Dec 2022 23:26:29 -0800 (PST) Received: from archlinux.localdomain ([140.121.198.213]) by smtp.googlemail.com with ESMTPSA id q15-20020aa7982f000000b00576f9773c80sm7865544pfl.206.2022.12.19.23.26.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Dec 2022 23:26:28 -0800 (PST) From: Chih-En Lin To: Andrew Morton , Qi Zheng , David Hildenbrand , Matthew Wilcox , Christophe Leroy , John Hubbard , Nadav Amit Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Steven Rostedt , Masami Hiramatsu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Yang Shi , Peter Xu , Zach O'Keefe , "Liam R . Howlett" , Alex Sierra , Xianting Tian , Colin Cross , Suren Baghdasaryan , Barry Song , Pasha Tatashin , Suleiman Souhlal , Brian Geffon , Yu Zhao , Tong Tiangen , Liu Shixin , Li kunyu , Anshuman Khandual , Vlastimil Babka , Hugh Dickins , Minchan Kim , Miaohe Lin , Gautam Menghani , Catalin Marinas , Mark Brown , Will Deacon , "Eric W . Biederman" , Thomas Gleixner , Sebastian Andrzej Siewior , Andy Lutomirski , Fenghua Yu , Barret Rhoden , Davidlohr Bueso , "Jason A . Donenfeld" , Dinglan Peng , Pedro Fonseca , Jim Huang , Huichun Feng , Chih-En Lin Subject: [PATCH v3 10/14] mm/userfaultfd: Support COW PTE Date: Tue, 20 Dec 2022 15:27:39 +0800 Message-Id: <20221220072743.3039060-11-shiyn.lin@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221220072743.3039060-1-shiyn.lin@gmail.com> References: <20221220072743.3039060-1-shiyn.lin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: AB64E40018 X-Rspamd-Server: rspam01 X-Stat-Signature: asrddfyxht8y9bffsafzggtcq73568es X-HE-Tag: 1671521190-381746 X-HE-Meta: U2FsdGVkX1+m8HRu0j2tjV2Ym2bXFOz4I2Pqv12gUN7egChC9MQfyQFZ/COL+OdXZWXfRmBAYn8WtDgx1ISNxZnjgaIlBOoW+PflqwL9rHR9V1V/cus3aznEYK8bKqRee15fFcpkpxBy27V1Bf9fX66RQW2JR48LsuOUg7XZGvrXhqwMGhJ/8ImUKGPTRA3jRk+EpFuMIiGddpf+DNjyMyLVXRbjcb7U5bFR8n/v9khVpICOhJzuxHbl3DVQxYZToWBk9XfPF1CNuQdF2OWqIfs4YAKSjmqYZNdsSzPz+mTpKrdETL34IO/Tom+/1GFv8iEUtUUoJP2kh9sPGmYE2Kk9kyTBc7jq6hZzPlCOFUWn7US1T2YS5cBu+h6uD/DmFI4dMjrNwpLEN+amhNY9LJr0EwMSrOzO8j0iLCkW3nWpYx+tp39ZOmRcnytdWMPUJXsIFk45CT/H/KKwndwUI/QPAVyJJLQKChFpMO4YrtZ28sVEdgrM6rt+JKW3GiinKsLgm6tRre17qO+zc5/El/Ov7Y0KHe9Vnsz8+UmP5LyzKVpUFRY3JXjgTfhRiXRIq0xsL7oMbT0caQyoi7QxIYxk06oVXNvhZak23sW9TLhnudGaWzAPm0L7KSVperV1DYlu53qom8iRGtM2SBCpijGHqj+2xAZxFaisNQWkbi9kDaZWH+XSwtKBBpy1D0pqyPIajIFtb5vgENecYQTwLldFMurAOGJ1Q4Kd4LLRjtM+2j69YYb/VhBGUk8UL+8lW+ouKUldZNfrnQDuSnG9Dn4e8oIwZdBzZ6vWMv+X/SACYly9JncE3gGKzDwrxuTbaY4SLn+riUyQEUsR2FpYqN1Kz9wxBWBZh5/AtsgmXq/VLGQB4iCo+NCVmgtviC7LJU3Y2kRH5lJTp5GHtMJ7E6Ew5iBe4/6NIEc5CjbqutLBUOQzLXpNPS5Jzhik4qvgRMiw75ks9RvJU2IFuxt zwsYf89O c5cqVaKir++4TFgnBf5z1Ib3AFPCPrD2th0ekwQPgKh01t9VHd6DRfMQHs/qUcf9Lh5fJOnWsQAJUNd+iiog9hmWPc6fatRSWroZvz3REGsmDYajHIa8D8zcnZoScKoF8/igcn7svOJQPRtk/AffGgEIK8byX4X3vY2ZuWdZVI4Gc7cx3V0RHc3ayKN2l/sudOlPuIKBqfMK3Rs7KyGlOKpXNKVYfJOZUcR/coTvIJfWD8Wk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: If uffd fills the zeropage or installs to COW-ed PTE, break it first. Signed-off-by: Chih-En Lin --- mm/userfaultfd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index 650ab6cfd5f49..4ee21c0d42d90 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -69,6 +69,9 @@ int mfill_atomic_install_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, struct inode *inode; pgoff_t offset, max_off; + if (break_cow_pte(dst_vma, dst_pmd, dst_addr) < 0) + return -ENOMEM; + _dst_pte = mk_pte(page, dst_vma->vm_page_prot); _dst_pte = pte_mkdirty(_dst_pte); if (page_in_cache && !vm_shared) @@ -227,6 +230,9 @@ static int mfill_zeropage_pte(struct mm_struct *dst_mm, pgoff_t offset, max_off; struct inode *inode; + if (break_cow_pte(dst_vma, dst_pmd, dst_addr) < 0) + return -ENOMEM; + _dst_pte = pte_mkspecial(pfn_pte(my_zero_pfn(dst_addr), dst_vma->vm_page_prot)); dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl); -- 2.37.3