Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp1023803pxb; Fri, 15 Apr 2022 18:42:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkr+yXmkmDImIzOF+qvwKK7qsuQ//Y6x1HdVG+HFt0Xfaq3d90pBkYWidU9KWJL5R17V83 X-Received: by 2002:a17:90a:9294:b0:1b9:48e9:a030 with SMTP id n20-20020a17090a929400b001b948e9a030mr6936016pjo.200.1650073356811; Fri, 15 Apr 2022 18:42:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650073356; cv=none; d=google.com; s=arc-20160816; b=cjPVsZxXeIR+mllUadn7l11ux5ATVq1j61IvaYNafTkC3DxrsqIauUfGG2XHrpB6TQ JCsbjXorCzbAZQQxf4IllP7ZqcLQsWwlSe01CrCOlO3wFDzI2pPiv8OaA73jbWhp08af iuKwK3sFwahQRP24edJGEiCqGfyjKxQbyk0X19q8MFy/1eNFoX3eUJZdvd2V0Vt1Gs8q Gt2vXOdqqtDY25Otl7Q23kjCEtFBZNZBSuiYHM4UgaG74oiOAl4zB2gKdquj6KNUmubT OWa+2gW0XdjKx7Jl/jec2VPGZhXP+BI670gqMLfIrM2yY6iSwyYMnpobibDnUrVOySth px+Q== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Zw06ID69hUicdDin/eoRDu62OnwGIS4ioHGe8/Dcg/g=; b=tqiy1i6SRgNjX1/ShVGDOZUeKGDmvnYbeOV+bzwkOC0wNWDQIy7XWlMmXuI0HBljfG eHgGe0f/rgykp2T/M93baqyRj8EPheAHv9+dq3XVzqDVdnb6fWiRNJtLgE7eBhgsHo2q wiBtF0UqHYQ39atuHEsFPkWd4sFdArwp4GFkHDdK0KAtEpKLfIOjxE2RdIyBYcEOnaa5 6g0RoyVGxJ6a+iAKkoX+apyOXeUGz8xxSf/qU4XJLhMzIE3CVeZ1RQpleiA6fEE4UeeV A9M0DujVLl1gX3b9/7Io0Tm6/S85+S7E5/SFxdmHO5WXuo3Za4v8Fv6D6e69xlxfEPG9 tZbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=difMpS9L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id n11-20020a63b44b000000b0039954af1a2csi2946603pgu.413.2022.04.15.18.42.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Apr 2022 18:42:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=difMpS9L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 056D0FE436; Fri, 15 Apr 2022 18:07:16 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346908AbiDNN6H (ORCPT + 99 others); Thu, 14 Apr 2022 09:58:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344265AbiDNNb2 (ORCPT ); Thu, 14 Apr 2022 09:31:28 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D9541B6; Thu, 14 Apr 2022 06:29:03 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 912AA619FC; Thu, 14 Apr 2022 13:29:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97BB6C385A5; Thu, 14 Apr 2022 13:29:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649942943; bh=siseCTkTn/p2uQp13G4IuVZzWPFcKD/bxA1MpmnAmr4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=difMpS9LR54J7wqQHxbuPZAmoZ2q56N0aNumK3C8cIN0yUcwG3zPg0A4qeEAodLtb 0i+QX0V5ZqNFmrRUkcCDTWN2ndVB/BS9DaGSc9dKh9ktaXT+m+osxcbYlDjNMBDOXb By0zONjtZgNySRXCIluL9Z2BwH4S7ERLSWxtqhqo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Miaohe Lin , Michal Hocko , KOSAKI Motohiro , Mel Gorman , Andrew Morton , Linus Torvalds Subject: [PATCH 4.19 316/338] mm/mempolicy: fix mpol_new leak in shared_policy_replace Date: Thu, 14 Apr 2022 15:13:39 +0200 Message-Id: <20220414110847.881434205@linuxfoundation.org> X-Mailer: git-send-email 2.35.2 In-Reply-To: <20220414110838.883074566@linuxfoundation.org> References: <20220414110838.883074566@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 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 From: Miaohe Lin commit 4ad099559b00ac01c3726e5c95dc3108ef47d03e upstream. If mpol_new is allocated but not used in restart loop, mpol_new will be freed via mpol_put before returning to the caller. But refcnt is not initialized yet, so mpol_put could not do the right things and might leak the unused mpol_new. This would happen if mempolicy was updated on the shared shmem file while the sp->lock has been dropped during the memory allocation. This issue could be triggered easily with the below code snippet if there are many processes doing the below work at the same time: shmid = shmget((key_t)5566, 1024 * PAGE_SIZE, 0666|IPC_CREAT); shm = shmat(shmid, 0, 0); loop many times { mbind(shm, 1024 * PAGE_SIZE, MPOL_LOCAL, mask, maxnode, 0); mbind(shm + 128 * PAGE_SIZE, 128 * PAGE_SIZE, MPOL_DEFAULT, mask, maxnode, 0); } Link: https://lkml.kernel.org/r/20220329111416.27954-1-linmiaohe@huawei.com Fixes: 42288fe366c4 ("mm: mempolicy: Convert shared_policy mutex to spinlock") Signed-off-by: Miaohe Lin Acked-by: Michal Hocko Cc: KOSAKI Motohiro Cc: Mel Gorman Cc: [3.8] Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- mm/mempolicy.c | 1 + 1 file changed, 1 insertion(+) --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -2563,6 +2563,7 @@ alloc_new: mpol_new = kmem_cache_alloc(policy_cache, GFP_KERNEL); if (!mpol_new) goto err_out; + atomic_set(&mpol_new->refcnt, 1); goto restart; }