Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp2247644iof; Wed, 8 Jun 2022 00:25:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSS6282PHLyA9QzZUDq4TQcWfXEQ8E4QrmfVic36UzcdzQ0F6ZppHXdT1a13mKahWCyuWt X-Received: by 2002:a63:d511:0:b0:3fb:e543:bd46 with SMTP id c17-20020a63d511000000b003fbe543bd46mr28645537pgg.161.1654673103612; Wed, 08 Jun 2022 00:25:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654673103; cv=none; d=google.com; s=arc-20160816; b=mUHs/8JxIf2AiNFDkIJ8+2yLd+osoLYcNDcAXPEWrFnGog2i4B7LbEyFUhssDGAejc y7pYK2KirDua3Zu6SzUf+FG5li8RLvBcZtAg8BS7DFJ2TJg/9sEQczaQPjOKAz6PiHbv 0VXS2g1Kq4d6I1VJVQAVW8+EpITyI+D++nMdhQLZnxCCAhhpUkiSfofw35k3aDwniOJW qRvRwdlkJcbx4cwTxsrGdNhINY/i9fKM5zJevvQIKeyUPfDfG0RHjK3/kkJ6FiyIkq9v UV0Uyxb0jUBQ+yj5KM1WlkOSbiJA90HzBve2P4c/SlDD8fID2bPjTdYcgG7pWSh2jnt6 M1Fw== 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=Dg5/svyWRJsYuhInibe6X8VIb85olDKfYd4K3J7D1DqT0k0xbnxHfnhe9zuqu/b8ob WSU7i5Mbw6XZEJ1bFnaosWgKEx+wzzKmdQ7ZzhrsAh0Z9/CD7Mh0Mf5vFSqAnFXjfbrO si3c7oPh2Jj2tB8r2/QZ/RcK2OYuo0G+652wvRp6NR5TF8rMHbxxn2YkBrhf0mY9gYHO r3L2mhQoOp/5fFziCDixgPx5843tqwTXfxVodbgiDtduYZzR2KDX70noiOluPAnbRwbi PR/eCPDa0IwYS6/+a7mEEO7pcoHWK2IYnlchxrois/NecUOXHlWhoUxVKYVMY0dtK//0 xtww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=TD8MMqKf; 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 l63-20020a638842000000b003fe30cc898bsi1785719pgd.664.2022.06.08.00.25.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jun 2022 00:25:03 -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=TD8MMqKf; 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 017B119D625; Tue, 7 Jun 2022 23:55:21 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1386936AbiFHB1D (ORCPT + 99 others); Tue, 7 Jun 2022 21:27:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384750AbiFGWQK (ORCPT ); Tue, 7 Jun 2022 18:16:10 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B151B261441; Tue, 7 Jun 2022 12:20:04 -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 dfw.source.kernel.org (Postfix) with ESMTPS id 4957B6192F; Tue, 7 Jun 2022 19:19:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58099C385A2; Tue, 7 Jun 2022 19:19:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1654629596; bh=54fPIN8G1JovSP05z2k3xNR+dvWsXyhzfXkHCXyejmo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TD8MMqKfW5xaOLbMEHbwXi0l7zz6s1TvDIhTBCjOuwixgtKiXvIcJpSUQ7dpGn8KH yx33ZGxwZmOKuxVnL9PGaQvjptR134IqiqQrgX5TtlgA/qGqDduh8fv2Ems4QjsWtm cZMtSjfTJDKbMPFDF55LlTdFowSMHvdPrfqTHLE4= 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.18 747/879] ACPI: property: Release subnode properties with data nodes Date: Tue, 7 Jun 2022 19:04:25 +0200 Message-Id: <20220607165024.537888675@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220607165002.659942637@linuxfoundation.org> References: <20220607165002.659942637@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); } /**