Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2263726iof; Wed, 8 Jun 2022 00:49:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRELiRXxcZPu+WJqbxEVhvPoWgUY95GGJX1gfnxtrN3SSkPNzG6W+bhn0CHjF0UwqVdA0H X-Received: by 2002:a05:6a00:ad0:b0:4f7:a357:6899 with SMTP id c16-20020a056a000ad000b004f7a3576899mr33573077pfl.80.1654674554427; Wed, 08 Jun 2022 00:49:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654674554; cv=none; d=google.com; s=arc-20160816; b=A+FUctG4VrgBmbYyFN5tVqXGYq8wKZ7dSJQpSlWHb4h6yfFvynWUrrJvpuxT+vr/No FqQg7Aqo5jj9DAuFV9UtHzxEbvLe9AqwYUwjjjhtNpLLJC8CERHo1PVmQ+DkDiekn5nE +AzdL91pydpozaQEeuHRk9igL9vTt0fBNIHm2vACdBsBj5yFIBAms5dfntoU1jt1oRWR o4+5D+6XYO+ZPVLtIaHNrNq05uxMmuTEqoA3qFzvq/4lEIjquB4qX0sXG8VB86K3n2tT ob9iSuTof/ytBj8V0PdULVH9P/0U4Z9QN0B0MtBsLDtYKw3rySD/uZEKzorSA77tQ4H4 D52A== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6r37njVV+Q9aKjGPXryb7ynr5aQd87MT6S1Zv8r9uZ4=; b=sURZ/MWBRdF9g1+1uPyVIz4p04CGBPSJwBqUABBdfmdUHMclpyPa0AAvpcLKRf8ejM e9I6BLB2T+Q+Z/WBxVYLyNXEZHVG49wC0LnAHbV93M5ANfOC1YSw+XC+u9FsGU+3gJBJ Psq9xlwHHwvkKLtnjyUiKOlRRGLvrhML1n/1Keb9ezz99LanX9Np4QSO/TSpJmceLRxl xV5A78BBUHsWSlSqfdmn2IrRQfLoyrgTU0XFSWOpmDIc0pCjjUbgTMTzbhX8yRlOtBUw Ph/2TTQob9pQowZUWHgbBoA4CigHvSX7VO/JXbC3v98taWMuAu7a7R5U7WaTpY8wAHGC mtqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Q5IxWlJh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id jf13-20020a170903268d00b0016370e98895si26968576plb.244.2022.06.08.00.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jun 2022 00:49:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Q5IxWlJh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DD05C12FB36; Wed, 8 Jun 2022 00:19:15 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358545AbiFGUBf (ORCPT + 99 others); Tue, 7 Jun 2022 16:01:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354973AbiFGS5i (ORCPT ); Tue, 7 Jun 2022 14:57:38 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB77B14CDFF; Tue, 7 Jun 2022 11:04:15 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id ECDB7B82182; Tue, 7 Jun 2022 18:04:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 504EFC385A5; Tue, 7 Jun 2022 18:04:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654625052; bh=54fPIN8G1JovSP05z2k3xNR+dvWsXyhzfXkHCXyejmo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q5IxWlJhZFfUUtO8THbU5FO2dVvLDqDUil3gAElWVM0fCZmzQSqJElVAYf37OonUQ xpxC05FCtnJm6NLZEUaIr9TaFcvwWU5u5fbTb4N4LAn0UX6dJiQPn92CLKgikcOk27 0LKyD+H+Z0yYeeED+jFikBJZNTv2kbhwo6VMsuP4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sakari Ailus , Andy Shevchenko , "Rafael J. Wysocki" Subject: [PATCH 5.15 549/667] ACPI: property: Release subnode properties with data nodes Date: Tue, 7 Jun 2022 19:03:34 +0200 Message-Id: <20220607164951.166481772@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607164934.766888869@linuxfoundation.org> References: <20220607164934.766888869@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sakari Ailus commit 3bd561e1572ee02a50cd1a5be339abf1a5b78d56 upstream. struct acpi_device_properties describes one source of properties present on either struct acpi_device or struct acpi_data_node. When properties are parsed, both are populated but when released, only those properties that are associated with the device node are freed. Fix this by also releasing memory of the data node properties. Fixes: 5f5e4890d57a ("ACPI / property: Allow multiple property compatible _DSD entries") Cc: 4.20+ # 4.20+ Signed-off-by: Sakari Ailus Reviewed-by: Andy Shevchenko Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- drivers/acpi/property.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -433,6 +433,16 @@ void acpi_init_properties(struct acpi_de acpi_extract_apple_properties(adev); } +static void acpi_free_device_properties(struct list_head *list) +{ + struct acpi_device_properties *props, *tmp; + + list_for_each_entry_safe(props, tmp, list, list) { + list_del(&props->list); + kfree(props); + } +} + static void acpi_destroy_nondev_subnodes(struct list_head *list) { struct acpi_data_node *dn, *next; @@ -445,22 +455,18 @@ static void acpi_destroy_nondev_subnodes wait_for_completion(&dn->kobj_done); list_del(&dn->sibling); ACPI_FREE((void *)dn->data.pointer); + acpi_free_device_properties(&dn->data.properties); kfree(dn); } } void acpi_free_properties(struct acpi_device *adev) { - struct acpi_device_properties *props, *tmp; - acpi_destroy_nondev_subnodes(&adev->data.subnodes); ACPI_FREE((void *)adev->data.pointer); adev->data.of_compatible = NULL; adev->data.pointer = NULL; - list_for_each_entry_safe(props, tmp, &adev->data.properties, list) { - list_del(&props->list); - kfree(props); - } + acpi_free_device_properties(&adev->data.properties); } /**