Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp2809534rwb; Mon, 15 Aug 2022 11:47:20 -0700 (PDT) X-Google-Smtp-Source: AA6agR5JNrQEGO8jWqHnLlAi9OARnZZTDGqmXZEvZFC6k3mUnhnRzNiZFP5FH/wze4Cd7+vBwFud X-Received: by 2002:aa7:cf18:0:b0:43d:34e:11b9 with SMTP id a24-20020aa7cf18000000b0043d034e11b9mr15834644edy.145.1660589239963; Mon, 15 Aug 2022 11:47:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660589239; cv=none; d=google.com; s=arc-20160816; b=VJ3Mdgvo2HRSiKwzeMXkOl6foquVf0czlViP8kx9P5ZSjz2IKlo2EBSTVlpLcM82nW pAuHLQfWRhtc7Z4BH9ZLBQfPqX1LxZRp+eVGOk8ID2GNyb6noFEzvqmVhzItxSXMREqq nKFoZs4itD8qSLxYJRNmrqUvn9at6Y7layQm9qxomRdGem5m5/vbgKRy+5Cqt75g7gCT Ya6VgQWSqg1RAW/oEINWzSFIFOCY18PIfuaSxrkDx9kQm9r5pd05JIGa0izK0/bxN+1i KoGyVZBiOK2xEXH7md3tfZEYIPBLJj3eAUes9MnR19/gBXj9rqxdlW262lLsSKNcJthF NJSw== 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=XRTzJesWlgiRmoNb6YQtw87KuhXdggCQnRXIPUyWKhc=; b=HvYjprpLa8ISKlbiS0rLZ+e0buriAishu9BfVN/VOSfRiG38BoglLzjmAc5alZ1iKT UgMR4UOM3WOUwm7dIQ1WfaIvAF2zoMcwJYknGvOK9jstjxwoO1aYRyS4+HRBEkKzTwtG E8ZaG3JO34aaBp8PbWP0U5Mbcux4nRI3+F+8Dm3ojm5MlKJQjtAHlmABaE1WK/tlj57s Dv+gHC2i0g9zDiDFzQXYwrE6M3zPpFZX9036goSixM3PgX+U2MOlG5jjtDgNxQDRWS0X u0JDY/KamjxDxmmbVN5hi933KgP9bGb2XvYfSGYIDs8jKmTWFPCexkeD0hoGadIDwhP8 iYkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=IL9Ki3lt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ji5-20020a170907980500b007317d093e6esi8799893ejc.822.2022.08.15.11.46.52; Mon, 15 Aug 2022 11:47:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=IL9Ki3lt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238975AbiHOSSB (ORCPT + 99 others); Mon, 15 Aug 2022 14:18:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233622AbiHOSRF (ORCPT ); Mon, 15 Aug 2022 14:17:05 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25FD92B1AD; Mon, 15 Aug 2022 11:15:08 -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 C17BAB8106C; Mon, 15 Aug 2022 18:15:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 156B4C433C1; Mon, 15 Aug 2022 18:15:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1660587305; bh=aEfeu9f1lMXq8ZH7oRYczw5jkBVwbMgOJJdgiuGDQx4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IL9Ki3ltdoku2NGe7E/+CsbSZso1K8GB8gPbYBWF3DjEkLL7ZXzvv2dKvZU10ouUn Bg8vNnv9/AiTd5MXuCqJHSSGisa837mg1hCj13zGTBfSxLXdEpwkZ8EF5IEDO/hhwB 8VSrw/+M4jOCqRuuOp0Rxm3SudEOP6pvJsCxmXn8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Di Shen , "Rafael J. Wysocki" Subject: [PATCH 5.15 042/779] thermal: sysfs: Fix cooling_device_stats_setup() error code path Date: Mon, 15 Aug 2022 19:54:46 +0200 Message-Id: <20220815180339.044488868@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220815180337.130757997@linuxfoundation.org> References: <20220815180337.130757997@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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: Rafael J. Wysocki commit d5a8aa5d7d80d21ab6b266f1bed4194b61746199 upstream. If cooling_device_stats_setup() fails to create the stats object, it must clear the last slot in cooling_device_attr_groups that was initially empty (so as to make it possible to add stats attributes to the cooling device attribute groups). Failing to do so may cause the stats attributes to be created by mistake for a device that doesn't have a stats object, because the slot in question might be populated previously during the registration of another cooling device. Fixes: 8ea229511e06 ("thermal: Add cooling device's statistics in sysfs") Reported-by: Di Shen Tested-by: Di Shen Cc: 4.17+ # 4.17+ Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- drivers/thermal/thermal_sysfs.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) --- a/drivers/thermal/thermal_sysfs.c +++ b/drivers/thermal/thermal_sysfs.c @@ -813,12 +813,13 @@ static const struct attribute_group cool static void cooling_device_stats_setup(struct thermal_cooling_device *cdev) { + const struct attribute_group *stats_attr_group = NULL; struct cooling_dev_stats *stats; unsigned long states; int var; if (cdev->ops->get_max_state(cdev, &states)) - return; + goto out; states++; /* Total number of states is highest state + 1 */ @@ -828,7 +829,7 @@ static void cooling_device_stats_setup(s stats = kzalloc(var, GFP_KERNEL); if (!stats) - return; + goto out; stats->time_in_state = (ktime_t *)(stats + 1); stats->trans_table = (unsigned int *)(stats->time_in_state + states); @@ -838,9 +839,12 @@ static void cooling_device_stats_setup(s spin_lock_init(&stats->lock); + stats_attr_group = &cooling_device_stats_attr_group; + +out: /* Fill the empty slot left in cooling_device_attr_groups */ var = ARRAY_SIZE(cooling_device_attr_groups) - 2; - cooling_device_attr_groups[var] = &cooling_device_stats_attr_group; + cooling_device_attr_groups[var] = stats_attr_group; } static void cooling_device_stats_destroy(struct thermal_cooling_device *cdev)