From patchwork Thu Jan 8 02:32:59 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiang Liu X-Patchwork-Id: 426477 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 0F8391400D5 for ; Thu, 8 Jan 2015 13:33:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756131AbbAHCdG (ORCPT ); Wed, 7 Jan 2015 21:33:06 -0500 Received: from mga09.intel.com ([134.134.136.24]:27186 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755999AbbAHCa6 (ORCPT ); Wed, 7 Jan 2015 21:30:58 -0500 Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP; 07 Jan 2015 18:28:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.04,691,1406617200"; d="scan'208";a="509087038" Received: from gerry-dev.bj.intel.com ([10.238.158.52]) by orsmga003.jf.intel.com with ESMTP; 07 Jan 2015 18:25:09 -0800 From: Jiang Liu To: "Rafael J. Wysocki" , Thomas Gleixner , Bjorn Helgaas , Yinghai Lu , Borislav Petkov , Len Brown Cc: Jiang Liu , Tony Luck , x86@kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [RFC Patch 12/19] ACPI: Enforce stricter checks for address space descriptors Date: Thu, 8 Jan 2015 10:32:59 +0800 Message-Id: <1420684386-5975-13-git-send-email-jiang.liu@linux.intel.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1420684386-5975-1-git-send-email-jiang.liu@linux.intel.com> References: <1420684386-5975-1-git-send-email-jiang.liu@linux.intel.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Enforce stricter checks for address space descriptors according to ACPI spec. Signed-off-by: Jiang Liu --- drivers/acpi/resource.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index 26b47f1da523..e82149e44347 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -192,6 +192,14 @@ static bool acpi_decode_space(struct resource *res, bool wp = base->info.mem.write_protect; u64 len = addr->address_length; + /* + * Filter out invalid descriptor according to ACPI Spec 5.0, section + * 6.4.3.5 Address Space Resource Descriptors. + */ + if ((base->min_address_fixed != base->max_address_fixed && len) || + (base->min_address_fixed && base->max_address_fixed && !len)) + return false; + res->start = addr->minimum; res->end = addr->maximum;