Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp5432056ybe; Tue, 10 Sep 2019 03:40:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqzapm+ffTTTbqdT0ER8uBrnsW4lniciQrUr6v17zf0YH8oAZHvr+xznhoGLV0q8GzbBcMEi X-Received: by 2002:aa7:da18:: with SMTP id r24mr30301684eds.37.1568112059866; Tue, 10 Sep 2019 03:40:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568112059; cv=none; d=google.com; s=arc-20160816; b=NH1GDbBWd+XRE9ih+26GlDBeD+mXHhBU6P8Um7rn6nw8Dyb58bHZUOKI1TBb4Wyj/O bxLveZFMmoJuqEuqWUvCfMkoK8ewJlWduhohwx8oHXCo/6J+x8aTYhQmpG7ArKGyyjTH Z1Iskvq+guKzAW/g2Zz+D7zs7mo4//AiM9AiR0A9X45tiImMAlOCyrLyicMfbPTZJzep K+6iVXN6YfpGbmpanCXXyzeYhT4JrVAUxPLdJ41YGKzHMQqWt7A0Q7xmCewRzE5Y4ON3 u8Hzz/KROOUbw7yE9x/vQLIGBlD9IljQgsX+SGOjmspWkozDKUYtpPMOhUKiXbAsBCFt Ci0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:content-transfer-encoding :mime-version:references:in-reply-to:date:subject:cc:to:from; bh=dFoT6couqRHyzEBvu5+NtOqrCE+J5kfbUJC7XN5+Spc=; b=G+y9A9o8jdIy5rN4gmSSp37mDsm2sQoMnh/flxTJMZLVGZTrkflkYMAMutE1TtTuPD LoCgpORn5QwfldlimtAprrjMAMiM8B+TQRugjWl36sXhOayskLi9Ael1yaWgZwmMrfJh pS5QNJwvMCfdRn/QTdfSK0nNZBYdoSX/0r9Xsw2b7sKc8mMSiLN/R2MUXq40iYSZdA33 imFM3KBU+dLZUeGWERu1s0yJkyTikNdax11OQnTRcdO74qvpJ+RBkRNB83P56R2tUw5/ EOTwKPPWEI7U6i6EoGVqCVX9Np3xm2kDLNVmklejusHj3jGP8Opv+hlNdLxuJEhw8twW v/dQ== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x21si8841632ejs.66.2019.09.10.03.40.36; Tue, 10 Sep 2019 03:40:59 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404137AbfIJCxC (ORCPT + 99 others); Mon, 9 Sep 2019 22:53:02 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:35748 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727298AbfIJCxB (ORCPT ); Mon, 9 Sep 2019 22:53:01 -0400 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x8A2qELf053754 for ; Mon, 9 Sep 2019 22:53:00 -0400 Received: from e06smtp03.uk.ibm.com (e06smtp03.uk.ibm.com [195.75.94.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ux2b39hvk-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 09 Sep 2019 22:52:59 -0400 Received: from localhost by e06smtp03.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 10 Sep 2019 03:52:57 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (9.149.109.197) by e06smtp03.uk.ibm.com (192.168.101.133) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 10 Sep 2019 03:52:53 +0100 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x8A2qqo059375790 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Sep 2019 02:52:52 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ABD9AA4057; Tue, 10 Sep 2019 02:52:52 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 57E46A4053; Tue, 10 Sep 2019 02:52:52 +0000 (GMT) Received: from ozlabs.au.ibm.com (unknown [9.192.253.14]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 10 Sep 2019 02:52:52 +0000 (GMT) Received: from adsilva.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.au.ibm.com (Postfix) with ESMTPSA id 0C7EDA01D3; Tue, 10 Sep 2019 12:52:51 +1000 (AEST) From: "Alastair D'Silva" To: alastair@d-silva.org Cc: Andrew Morton , David Hildenbrand , Oscar Salvador , Michal Hocko , Pavel Tatashin , Dan Williams , Wei Yang , Qian Cai , Jason Gunthorpe , Logan Gunthorpe , Ira Weiny , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] mm: Add a bounds check in devm_memremap_pages() Date: Tue, 10 Sep 2019 12:52:21 +1000 X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190910025225.25904-1-alastair@au1.ibm.com> References: <20190910025225.25904-1-alastair@au1.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 x-cbid: 19091002-0012-0000-0000-0000034946A0 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19091002-0013-0000-0000-00002183A8A5 Message-Id: <20190910025225.25904-3-alastair@au1.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-09-10_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=969 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1906280000 definitions=main-1909100026 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alastair D'Silva The call to check_hotplug_memory_addressable() validates that the memory is fully addressable. Without this call, it is possible that we may remap pages that is not physically addressable, resulting in bogus section numbers being returned from __section_nr(). Signed-off-by: Alastair D'Silva --- mm/memremap.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mm/memremap.c b/mm/memremap.c index 86432650f829..fd00993caa3e 100644 --- a/mm/memremap.c +++ b/mm/memremap.c @@ -269,6 +269,13 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) mem_hotplug_begin(); + error = check_hotplug_memory_addressable(res->start, + resource_size(res)); + if (error) { + mem_hotplug_done(); + goto err_checkrange; + } + /* * For device private memory we call add_pages() as we only need to * allocate and initialize struct page for the device memory. More- @@ -324,6 +331,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_add_memory: kasan_remove_zero_shadow(__va(res->start), resource_size(res)); + err_checkrange: err_kasan: untrack_pfn(NULL, PHYS_PFN(res->start), resource_size(res)); err_pfn_remap: -- 2.21.0