Received: by 10.223.185.82 with SMTP id b18csp140795wrg; Thu, 8 Mar 2018 21:24:32 -0800 (PST) X-Google-Smtp-Source: AG47ELt3U4fmqkdgGeoSfY+GL39J5kbi7rIvAO3EpaGCnLZnV8yw0cg5pYitETjeEgStN10GhnWo X-Received: by 10.99.173.3 with SMTP id g3mr23899613pgf.213.1520573071845; Thu, 08 Mar 2018 21:24:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520573071; cv=none; d=google.com; s=arc-20160816; b=zFiHN3Pu9pifVWpxiiInP5Pw4OWmcJZjVcMgzzxipMMOgXX4hHvbbrLrLQ7ZKcJieE F9Ngdv7WN0KzoX5z8k/bw0R+NK+0P3oKSZvkzuu81oJjJU/GgNKTw1UeiN7qrtebqM8G ePu/Zoz6lUH71mOPZ6UgfJ+ts90/sDXW5fXBCnxHTYJ7VOkqXmkSSsr7diZN0RDbRVJ4 Y5buhkpKJNYLNzLTjB1+Ko7MYZ7yL8j330lbPBnmhMoA4qEbT01dPneO3WuiaTxwTuDa zqJxKSQIHhDxp73WQuN0wRaztQr3AT1vP6XWmTVnOBWUxS1P/4mxPnI3rkdg0wguyF1n 2o4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:cc:references:to:subject :from:arc-authentication-results; bh=xg9rmqlLTSqOq8A0SC6qIb4CqpXJSsBA/X0ZqAIaW8g=; b=mpxy558pvPM5o23iWKMTjHuX4bYMq5zfmCl2L201IXmszuMFeRwGr4o8AH1GqOVnrw crY5Bt1bhTiD0IQdQaoGptdFZQhoTFSHM9W9wjBz8UyTT8wezhmltjeg+4Am9Vh9MHgf iMueCa0vM3jJtSfyxKrpq6Wrt4J9Jp4gIAjq6vEEziLCKs6RDfczkBeFVyddXt06vHwb cFvr2Z0T3cIBCIrxb4KvtjbjM3ZpGC2sf6Puzn1QDBU+hNge8UxtiXmLtsExbLbNrdgh 6MZrbY2qlZlhIl3JCByRAdh+hOfWIsQTiLZrt0pdS1ujNRGcE2j7tB0DeO0BZV0FgtuQ /DaA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a13si223789pgd.36.2018.03.08.21.24.17; Thu, 08 Mar 2018 21:24:31 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751248AbeCIFWO (ORCPT + 99 others); Fri, 9 Mar 2018 00:22:14 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:6208 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751065AbeCIFWN (ORCPT ); Fri, 9 Mar 2018 00:22:13 -0500 Received: from DGGEMS408-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 2C0422D898C36; Fri, 9 Mar 2018 13:21:59 +0800 (CST) Received: from [127.0.0.1] (10.177.29.40) by DGGEMS408-HUB.china.huawei.com (10.3.19.208) with Microsoft SMTP Server id 14.3.361.1; Fri, 9 Mar 2018 13:21:57 +0800 From: Yisheng Xie Subject: [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node To: Alexander Potapenko , References: CC: Linux Memory Management List , Dmitriy Vyukov , , "mhocko@suse.com" , Linux Kernel Mailing List Message-ID: <4ebee1c2-57f6-bcb8-0e2d-1833d1ee0bb7@huawei.com> Date: Fri, 9 Mar 2018 13:21:08 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.29.40] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Alexander reported an use of uninitialized memory in __mpol_equal(), which is caused by incorrect use of preferred_node. When mempolicy in mode MPOL_PREFERRED with flags MPOL_F_LOCAL, it use numa_node_id() instead of preferred_node, however, __mpol_equeue() use preferred_node without check whether it is MPOL_F_LOCAL or not. Reported-by: Alexander Potapenko Signed-off-by: Yisheng Xie --- mm/mempolicy.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index d879f1d..641545e 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -2124,6 +2124,9 @@ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b) case MPOL_INTERLEAVE: return !!nodes_equal(a->v.nodes, b->v.nodes); case MPOL_PREFERRED: + /* a's flags is the same as b's */ + if (a->flags & MPOL_F_LOCAL) + return true; return a->v.preferred_node == b->v.preferred_node; default: BUG(); -- 1.8.3.1