Received: by 10.192.165.156 with SMTP id m28csp1160019imm; Wed, 11 Apr 2018 13:35:23 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+gpG4H8nAxqZz2D1M0bEUtsj7PL+ovyRrP0uUzg+6dFo+H4TfB6xF5gskeXhDBGktiAuX4 X-Received: by 2002:a17:902:a609:: with SMTP id u9-v6mr6586230plq.56.1523478923449; Wed, 11 Apr 2018 13:35:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523478923; cv=none; d=google.com; s=arc-20160816; b=DG2qADxmMzxz0zspDqFoaNVBsENpSt0z5N/6F6LaN8MAoCbSMGHaUSBH12ydIg2+0O 355wY3UQP+O1cIJp7DfEHY+VwzyLDZyMjaMBKg88V8H1X+kl5VSBQOKenXBsbQlr1i1r 5hIrk/EMM8gzWaABXGQQy+5QSnZUQdyQykc65mpp4pLbN+9Jfnb51dqqKbIQixlHXgo2 I0TfDn5Vgx4Wfc5Utrt09iyEcPnbW9d/TqzLXo1M44vBNAdy8Qzjd6RYdJtvZVlCgJjx awgbYreYw5bSajdWiR9vaeMmE9jlH0r6+gXwDqRetd0KCp6r/4HRN4zwQM7WQ/O6OK9F u/Hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=93yG43xxwDSunxo0ZskO3jlNu7tuM49QssyIl1RhViQ=; b=D/QU1ySmv1yy82zxj1fQMXQ2sLzZaw9xn+3J+fjchTV1AojS3OxkonaWFVguErTB3e F4U9s2pran3klR+lNEjcXZ+/QIFFY+mvy0IhDXwyn2xzzlper2QCPK4QVhsAGbqyqhde eKIs8fjGyQaqEz1FaMR0goAStmJCpddvKjX6UX6A9tDe1ppmkdvC7jV8LRRf6a8UB8WB akin9U6ER46JvtXOQfD0c3htzXq3XIXfsx2KsBGfVHkdyzedYL8N6lK1ycgk5afvyz4I sJ2xuWUhnA7jiLsZ8B2lGTLKPeiDGIi0jCuZr3QBJJasjq4VK2VgJjC/oX3NRiQqc96R kHOg== 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 bg7-v6si1821975plb.537.2018.04.11.13.34.46; Wed, 11 Apr 2018 13:35:23 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756274AbeDKUaF (ORCPT + 99 others); Wed, 11 Apr 2018 16:30:05 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60654 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755467AbeDKSuF (ORCPT ); Wed, 11 Apr 2018 14:50:05 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 7B268CB9; Wed, 11 Apr 2018 18:50:04 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bob Moore , Lv Zheng , "Rafael J. Wysocki" , Sasha Levin Subject: [PATCH 4.4 146/190] ACPICA: Disassembler: Abort on an invalid/unknown AML opcode Date: Wed, 11 Apr 2018 20:36:32 +0200 Message-Id: <20180411183601.165911895@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180411183550.114495991@linuxfoundation.org> References: <20180411183550.114495991@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Bob Moore [ Upstream commit 6f0527b77d9e0129dd8e50945b0d610ed943d6b2 ] ACPICA commit ed0389cb11a61e63c568ac1f67948fc6a7bd1aeb An invalid opcode indicates something seriously wrong with the input AML file. The AML parser is immediately confused and lost, causing the resulting parse tree to be ill-formed. The actual disassembly can then cause numerous unrelated errors and faults. This change aborts the disassembly upon discovery of such an opcode during the AML parse phase. Link: https://github.com/acpica/acpica/commit/ed0389cb Signed-off-by: Bob Moore Signed-off-by: Lv Zheng Signed-off-by: Rafael J. Wysocki Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/acpi/acpica/psobject.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- a/drivers/acpi/acpica/psobject.c +++ b/drivers/acpi/acpica/psobject.c @@ -121,6 +121,9 @@ static acpi_status acpi_ps_get_aml_opcod (u32)(aml_offset + sizeof(struct acpi_table_header))); + ACPI_ERROR((AE_INFO, + "Aborting disassembly, AML byte code is corrupt")); + /* Dump the context surrounding the invalid opcode */ acpi_ut_dump_buffer(((u8 *)walk_state->parser_state. @@ -129,6 +132,14 @@ static acpi_status acpi_ps_get_aml_opcod sizeof(struct acpi_table_header) - 16)); acpi_os_printf(" */\n"); + + /* + * Just abort the disassembly, cannot continue because the + * parser is essentially lost. The disassembler can then + * randomly fail because an ill-constructed parse tree + * can result. + */ + return_ACPI_STATUS(AE_AML_BAD_OPCODE); #endif } @@ -293,6 +304,9 @@ acpi_ps_create_op(struct acpi_walk_state if (status == AE_CTRL_PARSE_CONTINUE) { return_ACPI_STATUS(AE_CTRL_PARSE_CONTINUE); } + if (ACPI_FAILURE(status)) { + return_ACPI_STATUS(status); + } /* Create Op structure and append to parent's argument list */