Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934649AbbGVP00 (ORCPT ); Wed, 22 Jul 2015 11:26:26 -0400 Received: from terminus.zytor.com ([198.137.202.10]:56362 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934418AbbGVP0X (ORCPT ); Wed, 22 Jul 2015 11:26:23 -0400 Date: Wed, 22 Jul 2015 08:26:05 -0700 From: tip-bot for Toshi Kani Message-ID: Cc: mcgrof@suse.com, dan.j.williams@intel.com, linux-kernel@vger.kernel.org, roland@purestorage.com, akpm@linux-foundation.org, hpa@zytor.com, toshi.kani@hp.com, mingo@kernel.org, travis@sgi.com, tglx@linutronix.de Reply-To: mcgrof@suse.com, dan.j.williams@intel.com, roland@purestorage.com, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, hpa@zytor.com, toshi.kani@hp.com, mingo@kernel.org, tglx@linutronix.de, travis@sgi.com In-Reply-To: <1437088996-28511-4-git-send-email-toshi.kani@hp.com> References: <1437088996-28511-4-git-send-email-toshi.kani@hp.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] mm: Fix bugs in region_is_ram() Git-Commit-ID: 8c38de992be9aed0b34c4fab8f972c83d3b00dc4 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2439 Lines: 68 Commit-ID: 8c38de992be9aed0b34c4fab8f972c83d3b00dc4 Gitweb: http://git.kernel.org/tip/8c38de992be9aed0b34c4fab8f972c83d3b00dc4 Author: Toshi Kani AuthorDate: Thu, 16 Jul 2015 17:23:16 -0600 Committer: Thomas Gleixner CommitDate: Wed, 22 Jul 2015 17:20:34 +0200 mm: Fix bugs in region_is_ram() region_is_ram() looks up the iomem_resource table to check if a target range is in RAM. However, it always returns with -1 due to invalid range checks. It always breaks the loop at the first entry of the table. Another issue is that it compares p->flags and flags, but it always fails. flags is declared as int, which makes it as a negative value with IORESOURCE_BUSY (0x80000000) set while p->flags is unsigned long. Fix the range check and flags so that region_is_ram() works as advertised. Signed-off-by: Toshi Kani Reviewed-by: Dan Williams Cc: Mike Travis Cc: Luis R. Rodriguez Cc: Andrew Morton Cc: Roland Dreier Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/1437088996-28511-4-git-send-email-toshi.kani@hp.com Signed-off-by: Thomas Gleixner --- kernel/resource.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/resource.c b/kernel/resource.c index 90552aa..fed052a 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -504,13 +504,13 @@ int region_is_ram(resource_size_t start, unsigned long size) { struct resource *p; resource_size_t end = start + size - 1; - int flags = IORESOURCE_MEM | IORESOURCE_BUSY; + unsigned long flags = IORESOURCE_MEM | IORESOURCE_BUSY; const char *name = "System RAM"; int ret = -1; read_lock(&resource_lock); for (p = iomem_resource.child; p ; p = p->sibling) { - if (end < p->start) + if (p->end < start) continue; if (p->start <= start && end <= p->end) { @@ -521,7 +521,7 @@ int region_is_ram(resource_size_t start, unsigned long size) ret = 1; break; } - if (p->end < start) + if (end < p->start) break; /* not found */ } read_unlock(&resource_lock); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/