From patchwork Mon Jan 23 17:37:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Roesch X-Patchwork-Id: 47294 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1744072wrn; Mon, 23 Jan 2023 10:06:46 -0800 (PST) X-Google-Smtp-Source: AMrXdXtATSNaiZOIcLScH8Sdxf4jP7N8kLSvQlBMdpEhO4EEpJFxN79PDRnAb2WKqYbugkOKPBCF X-Received: by 2002:a05:6a00:3006:b0:58b:5f9d:c2fe with SMTP id ay6-20020a056a00300600b0058b5f9dc2femr26601214pfb.29.1674497205716; Mon, 23 Jan 2023 10:06:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674497205; cv=none; d=google.com; s=arc-20160816; b=krpB+Bl9B6gVQoijJDbbo0oTMMMz84MZd0UhceMxA4i7b3PM2HUM+Izny3k9YKUAFc FRWePUkrpBb9yZBeWz0zt2cl+H5FRZ5RJX0RSl8Ofels9z9PQ6onnx+XnaE27HVtS5zj JuDbsgZkKEdGyVbH1G6FZMYP5WX36OPpgONX5wfuNPNaEe1cE+O9NiF4FCoWfGdrworK TCK+kI7GDCdZVH7KJHsBAGzTGzfILLd1h2Qctcvq8R0X9S0Kwtk+731+LS9GiCGl2Ha4 HgdXchYBAYs4Vwq7KwoBF5I0W4nncmH7V11xMQJ19Xv/dbvC2lmIi4UoYW8Z9HRjBKph T6kA== 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=ukh/p78BTzUSB71/CCunrEk0jjIr0HEMFKTMZ8Ud6rI=; b=gRKlVgTmUsQqa/A4ji/6DKOKyyrXKzS85+mIT/xAHWcNaIuqM75L1PufR1y86AoUk6 pP7huchawsqK5TZL3oXYspFpcD5GauhBHlLx2oq+k4VIjEad9LkBF/TU+opvSs4urR2R fiErFWHnHhDYaApgadom4ydSOajfjFzDgquJs0l0FFhtuOIsDqumeTzzlg+6EsnEvaD3 vNkXrQxn99eiDqW4k0NrwGHs4O3/RYCrRJcnmEE6yCfOALMp9CMcLlslzkKG8tw4MSPm +nSr625IPCTfz9Rn6K3/fkEHhy6Qs69jsN+ytsM2OFB6wMjxeitonac0zXmnmHkjeDIT vk3w== 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 b203-20020a621bd4000000b00580e559da3csi48570746pfb.202.2023.01.23.10.06.32; Mon, 23 Jan 2023 10:06:45 -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 S233114AbjAWSEX (ORCPT + 99 others); Mon, 23 Jan 2023 13:04:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44124 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233499AbjAWSEV (ORCPT ); Mon, 23 Jan 2023 13:04:21 -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 2182D2330B for ; Mon, 23 Jan 2023 10:04:05 -0800 (PST) Received: by dev0134.prn3.facebook.com (Postfix, from userid 425415) id 45FC35616BD5; 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 02/20] mm: add flag to __ksm_enter Date: Mon, 23 Jan 2023 09:37:30 -0800 Message-Id: <20230123173748.1734238-3-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?1755837581839591013?= X-GMAIL-MSGID: =?utf-8?q?1755837581839591013?= This change adds the flag parameter to __ksm_enter. This allows to distinguish if ksm was called by prctl or madvise. Signed-off-by: Stefan Roesch --- include/linux/ksm.h | 6 ++++-- mm/ksm.c | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/linux/ksm.h b/include/linux/ksm.h index 7e232ba59b86..50e6b56092f3 100644 --- a/include/linux/ksm.h +++ b/include/linux/ksm.h @@ -18,13 +18,15 @@ #ifdef CONFIG_KSM int ksm_madvise(struct vm_area_struct *vma, unsigned long start, unsigned long end, int advice, unsigned long *vm_flags); -int __ksm_enter(struct mm_struct *mm); void __ksm_exit(struct mm_struct *mm); +int __ksm_enter(struct mm_struct *mm, int flag); static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm) { + if (test_bit(MMF_VM_MERGE_ANY, &oldmm->flags)) + return __ksm_enter(mm, MMF_VM_MERGE_ANY); if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags)) - return __ksm_enter(mm); + return __ksm_enter(mm, MMF_VM_MERGEABLE); return 0; } diff --git a/mm/ksm.c b/mm/ksm.c index dd02780c387f..d84a244fe224 100644 --- a/mm/ksm.c +++ b/mm/ksm.c @@ -2493,8 +2493,9 @@ int ksm_madvise(struct vm_area_struct *vma, unsigned long start, return 0; #endif - if (!test_bit(MMF_VM_MERGEABLE, &mm->flags)) { - err = __ksm_enter(mm); + if (!test_bit(MMF_VM_MERGEABLE, &mm->flags) && + !test_bit(MMF_VM_MERGE_ANY, &mm->flags)) { + err = __ksm_enter(mm, MMF_VM_MERGEABLE); if (err) return err; } @@ -2520,7 +2521,7 @@ int ksm_madvise(struct vm_area_struct *vma, unsigned long start, } EXPORT_SYMBOL_GPL(ksm_madvise); -int __ksm_enter(struct mm_struct *mm) +int __ksm_enter(struct mm_struct *mm, int flag) { struct ksm_mm_slot *mm_slot; struct mm_slot *slot; @@ -2553,7 +2554,7 @@ int __ksm_enter(struct mm_struct *mm) list_add_tail(&slot->mm_node, &ksm_scan.mm_slot->slot.mm_node); spin_unlock(&ksm_mmlist_lock); - set_bit(MMF_VM_MERGEABLE, &mm->flags); + set_bit(flag, &mm->flags); mmgrab(mm); if (needs_wakeup)