Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp834375pxb; Tue, 12 Apr 2022 14:47:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx03/CyYkxa1w3dCiFFakmFEVaRFhaR2SMj7O8/Edqy2/srnHeM48+uUAfW3r1ctKGVuAbK X-Received: by 2002:a17:903:281:b0:14c:f3b3:209b with SMTP id j1-20020a170903028100b0014cf3b3209bmr39558083plr.87.1649800034537; Tue, 12 Apr 2022 14:47:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649800034; cv=none; d=google.com; s=arc-20160816; b=Z/WBQ4dKkoQGRsjigrFZi8uRvHvfPIjbuXcP5EoFtkehwqv37Pijaq+T9Aye72UI2F tNPfa4CdQl0r+w9xfiOOUmG5dMIRxxzj0xzlfHM2sU8tiXpjJm/Wyy/Wmdhj/hRaL7eJ eOMODmjSIC0qE03GcjvIE9TkBGcMI9e7/N3nbJwHTOGm1nwt+hheINUask0bapOYHNlT dTnfOzmkg6OnHA/4wWVP3u1XpUFD9LMV0z5PGYDGwpiWLXwO4PZUNPAVCLytls3vyNiS 5F6aVvmdV0s0v+FOiyhpJoxlHeXKFX/aKnFaj5DVh+MZg5h4plJRA+/b/Yl231VQD96R h9Kw== 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=QEck4z1B08u2fZXEWAK+WUwBNa3QWZ6nLY7FC/NU170=; b=b2zVmZ90yKFTgpz6I3Ox7EHBDlnMRTYwNmyF9qyyya/Y0uJZX4yFjt2VUFM5D8xmI8 sT4VKzKAkBGb3UH/Qh7cpOj0WlN6gcs/9GgPTckwYUIE3JxdPCZfP9OuwHJGWiUHcck4 irqpy6CN7ZhGFhUqZI6oSSMCarmMu4kYQFBDkYkQEL8eJ0reXFSv4ydyjimq0xVksUpe JrFit3PWjlqJo84IfMk0/DAo0dtDgt2DB4P10A5YPblsBQLsmV1RGxNM2T/9QDDAnnnB r2wryDykebGV0MC4a0Wcv8XDOglkF8L/JsR4xjvx5uzdg4e6ku8V6Pvd/cnlliydakWj YnoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=PmOJpN6v; 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 t5-20020a17090340c500b00156fceb78f1si10550730pld.318.2022.04.12.14.47.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 14:47:14 -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=PmOJpN6v; 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 EC69C403E0; Tue, 12 Apr 2022 13:46:23 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244132AbiDLGw1 (ORCPT + 99 others); Tue, 12 Apr 2022 02:52:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350880AbiDLGsP (ORCPT ); Tue, 12 Apr 2022 02:48:15 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7342825590; Mon, 11 Apr 2022 23:39:27 -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 E44A6618E5; Tue, 12 Apr 2022 06:39:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F3B25C385A6; Tue, 12 Apr 2022 06:39:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649745566; bh=mf2NLqva9CQqRbe6y11r4Nlep89LmSHIKg7NaLD3ZPc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PmOJpN6vCqzYcOjyN2risae2USVOHo0VkH4tcprFYSeOqr5ZS0E+3+aTMIqskdbWq UOKFg/x8hDHPeBY+AGQryDkhWZlASYDDwAVTa5CKFXRep2EaqUQ6Eh21i9ba0nf1cp PnUAxAxfHmf5JTmlveLNUPui9j8b+QqbibtS7R6U= 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 5.10 140/171] mm/mempolicy: fix mpol_new leak in shared_policy_replace Date: Tue, 12 Apr 2022 08:30:31 +0200 Message-Id: <20220412062931.939727781@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062927.870347203@linuxfoundation.org> References: <20220412062927.870347203@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 @@ -2636,6 +2636,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; }