Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp3614875pxk; Tue, 29 Sep 2020 01:22:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyP9RxFLsSEk8ExQBUcqc8Q8XGPyQntpka8JfQygzBVc5NqG4xeeMIzr8QDKqYlNzHGhmMe X-Received: by 2002:a17:906:4951:: with SMTP id f17mr2684591ejt.29.1601367745814; Tue, 29 Sep 2020 01:22:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601367745; cv=none; d=google.com; s=arc-20160816; b=KnuJ21mTegFF5ILSlcHv/VWuoDM5/DUxAAjv+c2oA2RHTQgvHg5ngKsq2T69w5khP5 7GcE53z18eRt0wSw/5TSr+F7a+dnJA9PI1dzmRwmTQrHLDuDwhKlI1qTvCx40+JuST5L AGhp+8ClD9D8hRnuIcGiPYGRwQHXHT2bZRFhTyX0SSq8GSgFM8TjZexwBBbl0YIWs9X+ 2npaHvQoWqJXaIQOgKjdfCnnCA+I/zJ754OQ5kPWJhFZ5pFjzS/pBIvub4D1anznIhyc ZQpHM6k6nkoAyAutS5ll0uIMNgWgxMgvVw6nnBRjF/z6/HTyu623RgrcHoOgc0gwUzrh lKWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:to:from; bh=7GlnEuaIn9naWgleQBNJRv3mDoR9KpM13B4no5V1CTg=; b=gxl7GOLhzkG2K8Lx+6uo05SEEY6hgddBw/S/5rJPl/6Or/oO7+BpgKqijR1HbRS7sl KWEpXuIBU1UbwKtNzHdRqc4gJyRb/+rI0h9F4MnzWT5mwO2hnwNrDa2hJPLYo70783Jb E3I+icNJtB08jSzRcsLHf8jc/b6SdusbV0volE3TuQYB5wuDCJO9SiL+IYjI+RnwpnUT zRHV08ZGKZpRok3HQt3/pq7AX17rwY2rD8fL2Lnpcuxed0FCchIFKlCgvUI/6FKNjqxX 1Dc7EaMHfnA8QwZ8/72fGSNyn1jk+cJ38Ovl9bF4WrMqSIw8ThBcyGoLWgLl29cmIZ3q Bl9A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t15si344168ejx.450.2020.09.29.01.22.03; Tue, 29 Sep 2020 01:22:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727468AbgI2IUr (ORCPT + 99 others); Tue, 29 Sep 2020 04:20:47 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:54387 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725550AbgI2IUr (ORCPT ); Tue, 29 Sep 2020 04:20:47 -0400 Received: from [222.129.32.87] (helo=localhost.localdomain) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1kNAsH-00080V-GV; Tue, 29 Sep 2020 08:20:38 +0000 From: Aaron Ma To: aaron.ma@canonical.com, mapengyu@gmail.com, ibm-acpi@hmh.eng.br, dvhart@infradead.org, andy@infradead.org, ibm-acpi-devel@lists.sourceforge.net, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] platform/x86: thinkpad_acpi: re-initialize acpi buffer size when reuse Date: Tue, 29 Sep 2020 16:20:25 +0800 Message-Id: <20200929082025.51446-1-aaron.ma@canonical.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Evaluating acpi _BCL could be failed, then acpi buffer size will be set to 0. When reuse this acpi buffer, AE_BUFFER_OVERFLOW will be triggered. Re-initialize buffer size will make acpi evaluate successfully. Signed-off-by: Aaron Ma --- drivers/platform/x86/thinkpad_acpi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 9c4df41687a3..477d63c49c04 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -6829,8 +6829,10 @@ static int __init tpacpi_query_bcl_levels(acpi_handle handle) list_for_each_entry(child, &device->children, node) { acpi_status status = acpi_evaluate_object(child->handle, "_BCL", NULL, &buffer); - if (ACPI_FAILURE(status)) + if (ACPI_FAILURE(status)) { + buffer.length = ACPI_ALLOCATE_BUFFER; continue; + } obj = (union acpi_object *)buffer.pointer; if (!obj || (obj->type != ACPI_TYPE_PACKAGE)) { -- 2.28.0