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 X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_RED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5C99C433DB for ; Sun, 10 Jan 2021 01:20:13 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3626C235FF for ; Sun, 10 Jan 2021 01:20:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3626C235FF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 44D508D0014; Sat, 9 Jan 2021 20:20:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3FD0C8D0002; Sat, 9 Jan 2021 20:20:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2EBF68D0014; Sat, 9 Jan 2021 20:20:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0078.hostedemail.com [216.40.44.78]) by kanga.kvack.org (Postfix) with ESMTP id 12E538D0002 for ; Sat, 9 Jan 2021 20:20:12 -0500 (EST) Received: from smtpin03.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id C387B180AD817 for ; Sun, 10 Jan 2021 01:20:11 +0000 (UTC) X-FDA: 77688109422.03.dogs97_1a0582b27500 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin03.hostedemail.com (Postfix) with ESMTP id A196328A4E8 for ; Sun, 10 Jan 2021 01:20:11 +0000 (UTC) X-HE-Tag: dogs97_1a0582b27500 X-Filterd-Recvd-Size: 12240 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by imf09.hostedemail.com (Postfix) with ESMTP for ; Sun, 10 Jan 2021 01:20:11 +0000 (UTC) Received: by mail-lf1-f49.google.com with SMTP id a12so32371654lfl.6 for ; Sat, 09 Jan 2021 17:20:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=M0DYh8R0owREjUF0rW5MfN/Je7rGC/Z6PzqB2A/sjLU=; b=XMHZ4hzJ1KNIJdjirbYY7rn4bf/WGrGFrNvC0Oc7tHmzgtnGZSAb9fcI7GCEG3NK7U ZpNccWHn+HG7I1P55LoqodGQk4Yyv0xPbnZIYecEcJJgaAbMVZrWg9/uQgSCNwQg+X87 Qe0r8A6ELy7+wBwCuVGrMSbtiopg6PL3G+OkQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=M0DYh8R0owREjUF0rW5MfN/Je7rGC/Z6PzqB2A/sjLU=; b=l6bD+yjCZrnHg1lt7wK6REmVsIfoRpsKegobVvT8cxF7ZTyl8EciZk/NJoPSEwx5V6 4IrcrfD3Vc+/T97HHcpCyiGYP2Sjp6lVUIsWAWZQTEvoIuO1UEkW28YBzO6PHn7U1m97 OunLTD59KieekM1OM7ZGg6nXHa8/yBmMTRqVKcsTXZN0fM0ZFfBDFbdQVO8tI7x1l2tc AQycAk64qK/vDVMR65t9Fhu+9Cc1OwnnDu1sU1fhaVI+ksQgcqswDzs8Rf5CgEKSfB6B yH0pS7m7gqG64mp8xyGVw3G2l5n8LzNf89OZe9265eY9FmJ1eZO8XIqhxZOlOZR15bvZ l0JA== X-Gm-Message-State: AOAM533KZ8P83eVz+iRLIOw7QtyMTsySUxIj4DfsxGILyGWDCMvhFZbx mkdoS9ZhOiBPzJo+7DP4iaQ6Io+2Oy3pKQ== X-Google-Smtp-Source: ABdhPJwIH9QkbObtk4et+oBbQBqufVXyYCaA4nG+7TCmojzRqJ+0WJgRtiXXFrJoHATFaeZM3wJ3KA== X-Received: by 2002:a2e:2e19:: with SMTP id u25mr4302756lju.468.1610241609293; Sat, 09 Jan 2021 17:20:09 -0800 (PST) Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com. [209.85.167.44]) by smtp.gmail.com with ESMTPSA id n10sm2794177ljg.139.2021.01.09.17.20.07 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 09 Jan 2021 17:20:08 -0800 (PST) Received: by mail-lf1-f44.google.com with SMTP id o10so21443046lfl.13 for ; Sat, 09 Jan 2021 17:20:07 -0800 (PST) X-Received: by 2002:a2e:b4af:: with SMTP id q15mr4287325ljm.507.1610241607590; Sat, 09 Jan 2021 17:20:07 -0800 (PST) MIME-Version: 1.0 References: <20210110004435.26382-1-aarcange@redhat.com> In-Reply-To: From: Linus Torvalds Date: Sat, 9 Jan 2021 17:19:51 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 0/1] mm: restore full accuracy in COW page reuse To: Andrea Arcangeli Cc: Andrew Morton , Linux-MM , Linux Kernel Mailing List , Yu Zhao , Andy Lutomirski , Peter Xu , Pavel Emelyanov , Mike Kravetz , Mike Rapoport , Minchan Kim , Will Deacon , Peter Zijlstra , Hugh Dickins , "Kirill A. Shutemov" , Matthew Wilcox , Oleg Nesterov , Jann Horn , Kees Cook , John Hubbard , Leon Romanovsky , Jason Gunthorpe , Jan Kara , Kirill Tkhai , Nadav Amit , Jens Axboe Content-Type: multipart/mixed; boundary="00000000000006197605b88197b9" 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: --00000000000006197605b88197b9 Content-Type: text/plain; charset="UTF-8" On Sat, Jan 9, 2021 at 4:55 PM Linus Torvalds wrote: > > What part of "clear_refs is the _least_ important of the three cases" > are you not willing to understand? In fact, I couldn't even turn on that code with my normal config, because it depends on CONFIG_CHECKPOINT_RESTORE that I didn't even have enabled. IOW, that code is some special-case stuff, and instead of messing up the rest of the VM, it should be made to conform to all the normal VM rules and requirements. Here's two patches to basically start doing that. The first one is the same one I already sent out earlier, fixing the locking. And yes, it can be improved upon, but before improving on it, let's _fix_ the code. The second is a trivial "oh, look, I can see that the page is pinned, soft-dirty cannot work so don't do it then". Again, it can be improved upon, most particularly by doing the same (simple) tests for the hugepage case too, which I didn't do. Note: I have not a single actual user of this code that I can test with, so this is all ENTIRELY untested. IOW, I am in no way claiming that these patches are perfect and correct, and the only way to do things. But what I _am_ claiming is that this clear_refs code (and the UFFD code) is of secondary importance, and instead of messing up the core VM, we should fix these special cases to not do bad things. It really is that simple. And no, I didn't make the UFFDIO_WRITEPROTECT code take the mmap_sem for writing. For whoever wants to look at that, it's mwriteprotect_range() in mm/userfaultfd.c and the fix is literally to turn the read-lock (and unlock) into a write-lock (and unlock). Linus --00000000000006197605b88197b9 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-mm-fix-clear_refs_write-locking.patch" Content-Disposition: attachment; filename="0001-mm-fix-clear_refs_write-locking.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjqg91vp0 RnJvbSBkYWNiNWRlNjJiNjU0ZjFmNWRmMTE0N2UyNjNiNWI0ZTVmZTJhZjQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IEZyaSwgOCBKYW4gMjAyMSAxMzoxMzo0MSAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMS8yXSBtbTogZml4IGNsZWFyX3JlZnNfd3JpdGUgbG9ja2luZwoKVHVybmluZyBwYWdl IHRhYmxlIGVudHJpZXMgcmVhZC1vbmx5IHJlcXVpcmVzIHRoZSBtbWFwX3NlbSBoZWxkIGZvcgp3 cml0aW5nLgoKU28gc3RvcCBkb2luZyB0aGUgb2RkIGdhbWVzIHdpdGggdHVybmluZyB0aGluZ3Mg ZnJvbSByZWFkIGxvY2tzIHRvIHdyaXRlCmxvY2tzIGFuZCBiYWNrLiAgSnVzdCBnZXQgdGhlIHdy aXRlIGxvY2suCgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgt Zm91bmRhdGlvbi5vcmc+Ci0tLQogZnMvcHJvYy90YXNrX21tdS5jIHwgMzIgKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2Mv dGFza19tbXUuYwppbmRleCBlZTVhMjM1YjMwNTYuLmFiN2Q3MDBiMmNhYSAxMDA2NDQKLS0tIGEv ZnMvcHJvYy90YXNrX21tdS5jCisrKyBiL2ZzL3Byb2MvdGFza19tbXUuYwpAQCAtMTIxNSw0MSAr MTIxNSwyNiBAQCBzdGF0aWMgc3NpemVfdCBjbGVhcl9yZWZzX3dyaXRlKHN0cnVjdCBmaWxlICpm aWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAogCQkJLnR5cGUgPSB0eXBlLAogCQl9OwogCisJ CWlmIChtbWFwX3dyaXRlX2xvY2tfa2lsbGFibGUobW0pKSB7CisJCQljb3VudCA9IC1FSU5UUjsK KwkJCWdvdG8gb3V0X21tOworCQl9CiAJCWlmICh0eXBlID09IENMRUFSX1JFRlNfTU1fSElXQVRF Ul9SU1MpIHsKLQkJCWlmIChtbWFwX3dyaXRlX2xvY2tfa2lsbGFibGUobW0pKSB7Ci0JCQkJY291 bnQgPSAtRUlOVFI7Ci0JCQkJZ290byBvdXRfbW07Ci0JCQl9Ci0KIAkJCS8qCiAJCQkgKiBXcml0 aW5nIDUgdG8gL3Byb2MvcGlkL2NsZWFyX3JlZnMgcmVzZXRzIHRoZSBwZWFrCiAJCQkgKiByZXNp ZGVudCBzZXQgc2l6ZSB0byB0aGlzIG1tJ3MgY3VycmVudCByc3MgdmFsdWUuCiAJCQkgKi8KIAkJ CXJlc2V0X21tX2hpd2F0ZXJfcnNzKG1tKTsKLQkJCW1tYXBfd3JpdGVfdW5sb2NrKG1tKTsKLQkJ CWdvdG8gb3V0X21tOworCQkJZ290byBvdXRfdW5sb2NrOwogCQl9CiAKLQkJaWYgKG1tYXBfcmVh ZF9sb2NrX2tpbGxhYmxlKG1tKSkgewotCQkJY291bnQgPSAtRUlOVFI7Ci0JCQlnb3RvIG91dF9t bTsKLQkJfQogCQl0bGJfZ2F0aGVyX21tdSgmdGxiLCBtbSwgMCwgLTEpOwogCQlpZiAodHlwZSA9 PSBDTEVBUl9SRUZTX1NPRlRfRElSVFkpIHsKIAkJCWZvciAodm1hID0gbW0tPm1tYXA7IHZtYTsg dm1hID0gdm1hLT52bV9uZXh0KSB7CiAJCQkJaWYgKCEodm1hLT52bV9mbGFncyAmIFZNX1NPRlRE SVJUWSkpCiAJCQkJCWNvbnRpbnVlOwotCQkJCW1tYXBfcmVhZF91bmxvY2sobW0pOwotCQkJCWlm IChtbWFwX3dyaXRlX2xvY2tfa2lsbGFibGUobW0pKSB7Ci0JCQkJCWNvdW50ID0gLUVJTlRSOwot CQkJCQlnb3RvIG91dF9tbTsKLQkJCQl9Ci0JCQkJZm9yICh2bWEgPSBtbS0+bW1hcDsgdm1hOyB2 bWEgPSB2bWEtPnZtX25leHQpIHsKLQkJCQkJdm1hLT52bV9mbGFncyAmPSB+Vk1fU09GVERJUlRZ OwotCQkJCQl2bWFfc2V0X3BhZ2VfcHJvdCh2bWEpOwotCQkJCX0KLQkJCQltbWFwX3dyaXRlX2Rv d25ncmFkZShtbSk7Ci0JCQkJYnJlYWs7CisJCQkJdm1hLT52bV9mbGFncyAmPSB+Vk1fU09GVERJ UlRZOworCQkJCXZtYV9zZXRfcGFnZV9wcm90KHZtYSk7CiAJCQl9CiAKIAkJCW1tdV9ub3RpZmll cl9yYW5nZV9pbml0KCZyYW5nZSwgTU1VX05PVElGWV9TT0ZUX0RJUlRZLApAQCAtMTI2MSw3ICsx MjQ2LDggQEAgc3RhdGljIHNzaXplX3QgY2xlYXJfcmVmc193cml0ZShzdHJ1Y3QgZmlsZSAqZmls ZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKIAkJaWYgKHR5cGUgPT0gQ0xFQVJfUkVGU19TT0ZU X0RJUlRZKQogCQkJbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2VfZW5kKCZyYW5nZSk7CiAJ CXRsYl9maW5pc2hfbW11KCZ0bGIsIDAsIC0xKTsKLQkJbW1hcF9yZWFkX3VubG9jayhtbSk7Citv dXRfdW5sb2NrOgorCQltbWFwX3dyaXRlX3VubG9jayhtbSk7CiBvdXRfbW06CiAJCW1tcHV0KG1t KTsKIAl9Ci0tIAoyLjI5LjIuMTU3LmcxZDQ3NzkxYTM5Cgo= --00000000000006197605b88197b9 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-mm-don-t-play-games-with-pinned-pages-in-clear_page_.patch" Content-Disposition: attachment; filename="0002-mm-don-t-play-games-with-pinned-pages-in-clear_page_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjqg955v1 RnJvbSBiNDA5NTBiNjQ3NTA5ZjcyMjJlMWY3MTc0ZDYxMDQ1ZDE1ZjU2ZjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAxNzowOToxMCAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMi8yXSBtbTogZG9uJ3QgcGxheSBnYW1lcyB3aXRoIHBpbm5lZCBwYWdlcyBpbiBjbGVh cl9wYWdlX3JlZnMKClR1cm5pZ24gYSBwaW5uZWQgcGFnZSByZWFkLW9ubHkgYnJlYWtzIHRoZSBw aW5uaW5nIGFmdGVyIENPVy4gRG9uJ3QgZG8gaXQuCgpUaGUgd2hvbGUgInRyYWNrIHBhZ2Ugc29m dCBkaXJ0eSIgc3RhdGUgZG9lc24ndCB3b3JrIHdpdGggcGlubmVkIHBhZ2VzCmFueXdheSwgc2lu Y2UgdGhlIHBhZ2UgbWlnaHQgYmUgZGlydGllZCBieSB0aGUgcGlubmluZyBlbnRpdHkgd2l0aG91 dApldmVyIGJlaW5nIG5vdGljZWQgaW4gdGhlIHBhZ2UgdGFibGVzLgoKU2lnbmVkLW9mZi1ieTog TGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgotLS0KIGZzL3By b2MvdGFza19tbXUuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQs IDIxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9mcy9wcm9jL3Rhc2tfbW11LmMgYi9mcy9w cm9jL3Rhc2tfbW11LmMKaW5kZXggYWI3ZDcwMGIyY2FhLi4wMzc3MDgxMDIxYjcgMTAwNjQ0Ci0t LSBhL2ZzL3Byb2MvdGFza19tbXUuYworKysgYi9mcy9wcm9jL3Rhc2tfbW11LmMKQEAgLTEwMzUs NiArMTAzNSwyNSBAQCBzdHJ1Y3QgY2xlYXJfcmVmc19wcml2YXRlIHsKIH07CiAKICNpZmRlZiBD T05GSUdfTUVNX1NPRlRfRElSVFkKKworI2RlZmluZSBpc19jb3dfbWFwcGluZyhmbGFncykgKCgo ZmxhZ3MpICYgKFZNX1NIQVJFRCB8IFZNX01BWVdSSVRFKSkgPT0gVk1fTUFZV1JJVEUpCisKK3N0 YXRpYyBpbmxpbmUgYm9vbCBwdGVfaXNfcGlubmVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h LCB1bnNpZ25lZCBsb25nIGFkZHIsIHB0ZV90IHB0ZSkKK3sKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsK KworCWlmICghaXNfY293X21hcHBpbmcodm1hLT52bV9mbGFncykpCisJCXJldHVybiBmYWxzZTsK KwlpZiAobGlrZWx5KCFhdG9taWNfcmVhZCgmdm1hLT52bV9tbS0+aGFzX3Bpbm5lZCkpKQorCQly ZXR1cm4gZmFsc2U7CisJcGFnZSA9IHZtX25vcm1hbF9wYWdlKHZtYSwgYWRkciwgcHRlKTsKKwlp ZiAoIXBhZ2UpCisJCXJldHVybiBmYWxzZTsKKwlpZiAocGFnZV9tYXBjb3VudChwYWdlKSAhPSAx KQorCQlyZXR1cm4gZmFsc2U7CisJcmV0dXJuIHBhZ2VfbWF5YmVfZG1hX3Bpbm5lZChwYWdlKTsK K30KKwogc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3NvZnRfZGlydHkoc3RydWN0IHZtX2FyZWFf c3RydWN0ICp2bWEsCiAJCXVuc2lnbmVkIGxvbmcgYWRkciwgcHRlX3QgKnB0ZSkKIHsKQEAgLTEw NDksNiArMTA2OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9zb2Z0X2RpcnR5KHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogCWlmIChwdGVfcHJlc2VudChwdGVudCkpIHsKIAkJcHRl X3Qgb2xkX3B0ZTsKIAorCQlpZiAocHRlX2lzX3Bpbm5lZCh2bWEsIGFkZHIsIHB0ZW50KSkKKwkJ CXJldHVybjsKIAkJb2xkX3B0ZSA9IHB0ZXBfbW9kaWZ5X3Byb3Rfc3RhcnQodm1hLCBhZGRyLCBw dGUpOwogCQlwdGVudCA9IHB0ZV93cnByb3RlY3Qob2xkX3B0ZSk7CiAJCXB0ZW50ID0gcHRlX2Ns ZWFyX3NvZnRfZGlydHkocHRlbnQpOwotLSAKMi4yOS4yLjE1Ny5nMWQ0Nzc5MWEzOQoK --00000000000006197605b88197b9--