Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp2338839rdh; Tue, 26 Sep 2023 22:30:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH80uqGim2A8UoPkEotUFLg2Q1z5rVQ/qLQEcgAiGHbtFIKQwc6G+AUlG+/rBZvNhsF8NK7 X-Received: by 2002:a17:902:bd94:b0:1c5:634e:e12c with SMTP id q20-20020a170902bd9400b001c5634ee12cmr682192pls.37.1695792603747; Tue, 26 Sep 2023 22:30:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695792603; cv=none; d=google.com; s=arc-20160816; b=YlvmJMheyhpb9vYibKyGYHjfRuxU1+64LKaeWfGVyHiAW7ltuKNFNVV1KefqElFnMG E919tdAdmgzF/TMxtuGZz8YU++7DvjNAX8mb5nMJ0d1lJAp62Fhb7opLXyK0SSx9IH+1 fBdG0WDfgSfedGHLTu2WmEHx7UwslMLUEMKWfLAOsIGovS33znH4vU27pFNKGz50qKCO n0dEHiN2iOJzczElgCuxAv7JUuZOKVWmkwlsKSkqaNbR9QYHTUMQnTIKx/r/dB/jSTAj 9Lv6yJOwCZdpvjxqbl2P7bGjV1uIDLmgoy2o8rtbe+yVLbvIKorsR2/DxAgn86ZGX/MV 2RYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=eP9N2gfeiWYXcjxAcn/cQZzNl5uPlV6uaT56umiTjo8=; fh=V0oWf16Mr34IOesFJSWl/oEHAcLjhX4T0kiVoegpapw=; b=PqeMnPjpQ5II2kZUA8or3sh6VNcdc91biEnoL2tDd9a+OJVSvzgNkyMRbeCW8uhCcq E+oYui+ivt/tiCT8o9M3wuQ6Tjp/LkDsG8uA8cmSVd8spQpuNJEmsZJfQeLVkcIzykzt 8o1oG1/Bjzm7ga+tnzwJyhxXUuReLas++mX3jtz6EzRso+P+NwqpO9/tscGg41F2d+4V abtqtD6F+1m9if1tO5mz8iwao/C0OeLc3QO2o1GeSj9DMhHrPJVa8zmY+VABoxZ9NsXN MzW33wIW7JAQ9tU7FImjM7wmWdK3yctg6ATRjmAbxvzRs9IW4qiK+dNUbzgEQuUd7OSQ adqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mdZBYtkb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id l13-20020a170902f68d00b001c5fc13fb2dsi7833326plg.294.2023.09.26.22.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Sep 2023 22:30:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mdZBYtkb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 8E9A382698D7; Tue, 26 Sep 2023 20:28:33 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229710AbjI0D2Q (ORCPT + 99 others); Tue, 26 Sep 2023 23:28:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229506AbjI0D0P (ORCPT ); Tue, 26 Sep 2023 23:26:15 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 947639005; Tue, 26 Sep 2023 18:47:53 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-40594a6d1ecso11520805e9.1; Tue, 26 Sep 2023 18:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695779272; x=1696384072; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=eP9N2gfeiWYXcjxAcn/cQZzNl5uPlV6uaT56umiTjo8=; b=mdZBYtkbGXhEIASl9MXbPlNQ4Fh56XGfHyTUP0QwiLyXtvoLaWDMWxHh8VcZJpdy1A tmg3iEPLb7Y/NarmpFuCsqo+B34sWqLs/PyDeKub7ZWqFEfTxC9qQOtM+ZLkm485qHZ8 8Vk2ckW1hM9XJZ4f81NeZV2+YMP0XdbhO5kAAJ8UdYQgwGjjKQgASE7MXTWlAyQFc099 Mv1PGfBEr3BqkiR5W9dO8Qa6tNwd4fBHfKrgLuJNyJC7CtlfBxQD7qK6T2QAMKhjrr2Z j21Ziah7ETDY+EDfNzh1xQfAfuz+YcYGeGRkmQc6JtbD3lTfr5TT7Th0JDz/zZLycdv9 G2JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695779272; x=1696384072; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eP9N2gfeiWYXcjxAcn/cQZzNl5uPlV6uaT56umiTjo8=; b=lCDZEd4+kiIfHUzAgWpF2OzdWi9ktf8lFvn4C18J/iVF2oyWUcqWoyaz4Am2NzktbP DWUz4DSlvRCmbeh8hU0ONOqyvt4mgxx/Kg7r0jfQsRSbz05C76LZMHjy/edXoK+3jIVj Eg+l24lymIUu5pykLNrhPIkOyHBNpZ/Ip6hjHnFK8+J7JVuHCEvVlcu2lsmGTX9q/X/w TcfOIXkDxDrALNVXkKfMLMf4gKrDmbhEUGh060Dhoxk9UtmJhRjuColgT3ZS85CPPfps pq1Galr098ruUVoG/Yj+Kfw/VJpVOzFdBhi82+7ANkykY0gDP2b4uFktoDK97rcpzSlL i3gg== X-Gm-Message-State: AOJu0YxqZW/KWqpheJSyiqv3odn45yjfss9t9qxrWHBwKLGs+l4RTpMd 7/rUOTSCsxdoyunDgkSRZOjW/h9l/mj5mmPNdjDHrrIEgSo= X-Received: by 2002:adf:e5cf:0:b0:323:2e5d:b7c6 with SMTP id a15-20020adfe5cf000000b003232e5db7c6mr329201wrn.0.1695779271781; Tue, 26 Sep 2023 18:47:51 -0700 (PDT) MIME-Version: 1.0 References: <20230925214046.1051350-1-anarsoul@gmail.com> In-Reply-To: From: Vasily Khoruzhick Date: Tue, 26 Sep 2023 18:47:24 -0700 Message-ID: Subject: Re: [PATCH] ACPI: FPDT: break out of the loop if record length is zero To: "Zhang, Rui" Cc: "rafael@kernel.org" , "lenb@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" , "stable@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 26 Sep 2023 20:28:33 -0700 (PDT) On Mon, Sep 25, 2023 at 10:03=E2=80=AFPM Zhang, Rui w= rote: > > On Mon, 2023-09-25 at 14:40 -0700, Vasily Khoruzhick wrote: > > Buggy BIOSes may have zero-length records in FPDT, table, as a result > s/FPDT, table/FPDT table > > > > fpdt_process_subtable() spins in eternal loop. > > > > Break out of the loop if record length is zero. > > > > > > Fixes: d1eb86e59be0 ("ACPI: tables: introduce support for FPDT > > table") > > Cc: stable@vger.kernel.org > > > > Signed-off-by: Vasily Khoruzhick > > Is there a bugzilla or something where such a buggy BIOS is reported? I'm not aware of a bug filed a kernel bugzilla, however I found mentions of the issue online: https://forum.proxmox.com/threads/acpi-fpdt-duplicate-resume-performance-re= cord-found.114530/ > > --- > > drivers/acpi/acpi_fpdt.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/acpi/acpi_fpdt.c b/drivers/acpi/acpi_fpdt.c > > index a2056c4c8cb7..53d8f9601a55 100644 > > --- a/drivers/acpi/acpi_fpdt.c > > +++ b/drivers/acpi/acpi_fpdt.c > > @@ -194,6 +194,11 @@ static int fpdt_process_subtable(u64 address, > > u32 subtable_type) > > record_header =3D (void *)subtable_header + offset; > > offset +=3D record_header->length; > > > > + if (!record_header->length) { > > + pr_info(FW_BUG "Zero-length record > > found.\n"); > > + break; > > For cases like this, it implies the FPDT table is far from usable and > we should stop processing on such platforms. Here's FPDT dump: 00000000: 4650 4454 4400 0000 018c 414c 4153 4b41 FPDTD.....ALASKA 00000010: 4120 4d20 4920 0000 0920 0701 414d 4920 A M I ... ..AMI 00000020: 1300 0100 0100 1001 0000 0000 30fe 207f ............0. . 00000030: 0000 0000 0000 1001 0000 0000 54fe 207f ............T. . 00000040: 0000 0000 .... S3PT at 0x7f20fe30: 7F20FE30: 53 33 50 54 24 00 00 00-00 00 00 00 00 00 18 01 *S3PT$..........= .* 7F20FE40: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *...............= .* 7F20FE50: 00 00 00 00 FBPT at 0x7f20fe54: 7F20FE50: xx xx xx xx 46 42 50 54-3C 00 00 00 46 42 50 54 *....FBPT<...FBP= T* 7F20FE60: 02 00 30 02 00 00 00 00-00 00 00 00 00 00 00 00 *..0............= .* 7F20FE70: 2A A6 BC 6E 0B 00 00 00-1A 44 41 70 0B 00 00 00 **..n.....DAp...= .* 7F20FE80: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 *...............= .* It looks like subtables are not usable. S3PT subtable has the first record with zero len, and FBPT has its signature again instead of the first record header. So yeah, I agree that FPDT is not usabled in this case, and it shouldn't be processed further. > So, IMO, it is better to > 1. return an error here rather than break and return 0. > 2. add the error handling for fpdt_process_subtable() failures. > > what do you think? Agree, I'll implement it in v2. Regards, Vasily