From patchwork Mon Jan 23 17:37:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 47285 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1742553wrn; Mon, 23 Jan 2023 10:04:22 -0800 (PST) X-Google-Smtp-Source: AMrXdXvmV9BzYPpbESVD4gLuL9WJCmsfYdK5X8vZBWEi4NhhAa6Rwovtu7uo/Xgo/l83rrPcTNzE X-Received: by 2002:a17:907:6021:b0:843:a9fe:f115 with SMTP id fs33-20020a170907602100b00843a9fef115mr24358711ejc.32.1674497062692; Mon, 23 Jan 2023 10:04:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674497062; cv=none; d=google.com; s=arc-20160816; b=lZ5GYNbTKYT4ENccHnyD7dOeDrFJLxyFugfp9/KKIeln6co+w45nNuFQv77db5hn9S ai+0c966hB2XuPLpeWi21i5dLNsGJuMXcdWVisUHlt5Juyv82NhXaSE7+z+qEI0qHQZV Sme9O1BMtt5AQCThwzh08360FOS4+321O+2ytyd7zmtXMvjmAqskKRr47tsjvskdSC2v qBh+G6MC+8kqS1Hnh6HNQ2QFajrlCLoYzr+iMONwqNmNvwLlpp7aRiPP/dNAFlsXpnwj 527NAjGfPpY466YaufNflrLLGjEAqIphZMk4PNGy1UeM3qrkQ/jV6T0U8IUA6moAFbg8 zVsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=dkTe6hQ1qB/aSBv2e8jZ4aQ5awR1SuR87QIIhlPyTwQ=; b=CKhisFbYPxFsmBuPTuf/WTjnPUw/kb8nWhmuny6SNg1SfGQtes15Vq6H/o9Uhmjezp Cgd1ZDPHZTx/n3hvmdOzSPohDst5mJyNsEiGPNr3Om5ZDWrszxs1m8Wt1OeJFvAVJUUP Cusl/D3Xp9zHcfqp+Dfvf1MJGGgI+DxSszkfgqRQIqrGd3AeezWlFzjLDb1nZVnQhW8i ouaP7yoquOKjpMA3SgR79Mwcb0psA9qjPnt4WtXH1/DUpIi61Brpe18D3Lr9XDafBIMD mZTaXoBbObx21/gUvDQDGdtHJU6g9HOaleWPyr8nADXqGqxP/drGto6iSxGQRzTJCazc xc4A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ss4-20020a170907c00400b008697a71e4f0si8364560ejc.811.2023.01.23.10.03.58; Mon, 23 Jan 2023 10:04:22 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232356AbjAWR7I (ORCPT + 99 others); Mon, 23 Jan 2023 12:59:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232988AbjAWR7E (ORCPT ); Mon, 23 Jan 2023 12:59:04 -0500 Received: from 66-220-144-178.mail-mxout.facebook.com (66-220-144-178.mail-mxout.facebook.com [66.220.144.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCDF623DA5 for ; Mon, 23 Jan 2023 09:59:03 -0800 (PST) Received: by dev0134.prn3.facebook.com (Postfix, from userid 425415) id 530B85616BDB; Mon, 23 Jan 2023 09:37:56 -0800 (PST) From: Stefan Roesch To: linux-mm@kvack.org Cc: shr@devkernel.io, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [RESEND RFC PATCH v1 05/20] mm: support disabling of ksm for a process Date: Mon, 23 Jan 2023 09:37:33 -0800 Message-Id: <20230123173748.1734238-6-shr@devkernel.io> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230123173748.1734238-1-shr@devkernel.io> References: <20230123173748.1734238-1-shr@devkernel.io> MIME-Version: 1.0 X-Spam-Status: No, score=2.4 required=5.0 tests=BAYES_00,RDNS_DYNAMIC, SPF_HELO_PASS,SPF_NEUTRAL,SUSPICIOUS_RECIPS,TVD_RCVD_IP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: ** X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755837431930307887?= X-GMAIL-MSGID: =?utf-8?q?1755837431930307887?= This adds the ability to disable ksm for a process if ksm has been enabled for the process. Signed-off-by: Stefan Roesch --- mm/ksm.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/mm/ksm.c b/mm/ksm.c index 967eda719fab..5fa6b46dfa3b 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2588,6 +2588,27 @@ int __ksm_enter(struct mm_struct *mm, int flag) return 0; } +static void unmerge_vmas(struct mm_struct *mm) +{ + struct vm_area_struct *vma; + struct vma_iterator vmi; + + vma_iter_init(&vmi, mm, 0); + + mmap_read_lock(mm); + for_each_vma(vmi, vma) { + if (vma->vm_flags & VM_MERGEABLE) { + unsigned long flags = vma->vm_flags; + + if (ksm_madvise(vma, vma->vm_start, vma->vm_end, MADV_UNMERGEABLE, &flags)) + continue; + + vma->vm_flags = flags; + } + } + mmap_read_unlock(mm); +} + void __ksm_exit(struct mm_struct *mm, int flag) { struct ksm_mm_slot *mm_slot; @@ -2595,8 +2616,10 @@ void __ksm_exit(struct mm_struct *mm, int flag) int easy_to_free = 0; if (!(current->flags & PF_EXITING) && flag == MMF_VM_MERGE_ANY && - test_bit(MMF_VM_MERGE_ANY, &mm->flags)) + test_bit(MMF_VM_MERGE_ANY, &mm->flags)) { clear_bit(MMF_VM_MERGE_ANY, &mm->flags); + unmerge_vmas(mm); + } /* * This process is exiting: if it's straightforward (as is the