Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2461469yba; Mon, 15 Apr 2019 12:08:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqxpRpTdXtig5ft5WKk+pbTmJz7c9qziILRyFjPkfJQLCIfUtCCfn21A7VgEic0esjK5SUmi X-Received: by 2002:a62:12c9:: with SMTP id 70mr78273756pfs.156.1555355296362; Mon, 15 Apr 2019 12:08:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555355296; cv=none; d=google.com; s=arc-20160816; b=LyCt8Kgeame8gD0ozS+rbF+x6aYTgKbLdSTbhc7WllxWeWk3aiMBNzjsTnFGlgxvsC tdV1wJNkSQKxhOT02fok4Vbu0r+taDOoPoYJEprYCNQMEC3ei6FpjYV5Y+f4xn4KETfW IykFrhOnLZmVm8OIff8mj0FoYQwnQnDSvcsdh5EpHipBlCkL+J0zbfExT+hvU8J0DvDH ITOYitvPR6z2onPO8vmJ+LrswS1Mh1qaVIayzHHUIu26mOwESKgN/1uno8A1liOXxSD1 m2SiB7AcPl7rEp/hZB9gUBb+qjvl/DusGnB2/hELN/N0g7bMB1iQw6+20L8Y84x/FHRP pH/g== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4/uXcD9fNb2vm0yKgVX692EGwFWuCw87toutjTJ6q/4=; b=HYwBje2zCEvyagkrdI8LC54v5CJ9oTinR/XVM8ZpMZqK1SlvTqWe1oELlKNpTwLrAN /I4FN6hhE+/fNwnTk+m8TvADT9JQafpMSmcuwn7mGVrm6G/zlipKllAUUJD0MAzuZa0C BCvGbtOFRZAcHjOTaoAYnMWS3tFH62QIKm2fDt++oc+I88o1fdiF2Evc6SJHunqZ+fTV pOYUcMR2RE7UHyO+P9O56UrOEtjy/m6Cnu2F4LEhSV71/xR265P0l4+n3z4fYvGxdA4E 7ZfU2reKLVtXgHxKzcnSYk9bpMS4ZMfJY0ciwtaSOTbLZbJZLaAvSb4Krb3LCzl5WwB6 Da3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BAmPmRzR; 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 k22si37655470pfo.145.2019.04.15.12.08.00; Mon, 15 Apr 2019 12:08:16 -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; dkim=pass header.i=@kernel.org header.s=default header.b=BAmPmRzR; 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 S1730002AbfDOTGi (ORCPT + 99 others); Mon, 15 Apr 2019 15:06:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:41106 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729195AbfDOTGg (ORCPT ); Mon, 15 Apr 2019 15:06:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5391D218FE; Mon, 15 Apr 2019 19:06:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355195; bh=u/leh00119uEi4uCKhs5AiFBit2GgYy7Wfe/3rlZmZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BAmPmRzRxd1olXwVqxo+nPvHqa2Mhe3tWnRKuN3ici7p8ocypg1FEaxD1nAaP68ws 8wR19gWaWlVyr3ihwHP481GF0QSwBrPa2Q3HlF+XSuYattD0BzbQgHQU1jJqQ8DqqR mDIfBBNCy/kff7A81ZYaG7IBN7cHEvFtvEeUpESE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael J Gruber , Erik Schmauss , Bob Moore , "Rafael J. Wysocki" Subject: [PATCH 4.19 049/101] ACPICA: Namespace: remove address node from global list after method termination Date: Mon, 15 Apr 2019 20:58:47 +0200 Message-Id: <20190415183743.161752909@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183740.341577907@linuxfoundation.org> References: <20190415183740.341577907@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Erik Schmauss commit c5781ffbbd4f742a58263458145fe7f0ac01d9e0 upstream. ACPICA commit b233720031a480abd438f2e9c643080929d144c3 ASL operation_regions declare a range of addresses that it uses. In a perfect world, the range of addresses should be used exclusively by the AML interpreter. The OS can use this information to decide which drivers to load so that the AML interpreter and device drivers use different regions of memory. During table load, the address information is added to a global address range list. Each node in this list contains an address range as well as a namespace node of the operation_region. This list is deleted at ACPI shutdown. Unfortunately, ASL operation_regions can be declared inside of control methods. Although this is not recommended, modern firmware contains such code. New module level code changes unintentionally removed the functionality of adding and removing nodes to the global address range list. A few months ago, support for adding addresses has been re- implemented. However, the removal of the address range list was missed and resulted in some systems to crash due to the address list containing bogus namespace nodes from operation_regions declared in control methods. In order to fix the crash, this change removes dynamic operation_regions after control method termination. Link: https://github.com/acpica/acpica/commit/b2337200 Link: https://bugzilla.kernel.org/show_bug.cgi?id=202475 Fixes: 4abb951b73ff ("ACPICA: AML interpreter: add region addresses in global list during initialization") Reported-by: Michael J Gruber Signed-off-by: Erik Schmauss Signed-off-by: Bob Moore Cc: 4.20+ # 4.20+ Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- drivers/acpi/acpica/nsobject.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/drivers/acpi/acpica/nsobject.c +++ b/drivers/acpi/acpica/nsobject.c @@ -186,6 +186,10 @@ void acpi_ns_detach_object(struct acpi_n } } + if (obj_desc->common.type == ACPI_TYPE_REGION) { + acpi_ut_remove_address_range(obj_desc->region.space_id, node); + } + /* Clear the Node entry in all cases */ node->object = NULL;