From nobody Thu Oct 2 14:13:40 2025 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F350629D266 for ; Mon, 15 Sep 2025 17:42:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757958165; cv=none; b=H6+OQxY5o71coEFFI/v1sd4EUf7eA0LpjkSPg6/tk7lfJa43a8XzX4+e5abqH9HjDuXA6vNNkVyqkYYgB/IFh/tcT3xWigMrXZv78NrSW5n3ekoSY69I2+dSNfJuig8Gz2GaMw1HhjxOcLiRYB4uVfIdRu5+ew9Ec6FkvG6x2jQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757958165; c=relaxed/simple; bh=iIuAx2JJmrgxbWM5e2basggpv/AeW5AUpcLAOdDXJhE=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=l4w28LZfhbPNGNBObz9aOk6Mgs5NrzaxT6p3Mp/LKjWc9t2UAKGh5cGa2wVYEdb21Izq7776U1T+DC5b02NB9QoPVNGajBxz6M2kLoNhC8lDCQTHzj/t5vWNhq78zr/VwP1KkXw18VoweqnyWmwQPrTewXH1HymLC7878iwZ8cc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Dk6wVnu6; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Dk6wVnu6" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-7761b392d50so3585797b3a.0 for ; Mon, 15 Sep 2025 10:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757958163; x=1758562963; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6b0KuwU6j12efKQOY8dZE63PnJPo0f1sevexcHHq57w=; b=Dk6wVnu6rGNQYr55Okv0SEkrixUZaWTHPijZacZUGUEleVMlDjK6T4aPlUNMk+H42X cVTGaLBicVsv8nJZjzCPHvR+BD+mwwrlKwHGkrSARSBL11VFyZnadXenMq4Czj+JLqR0 Tp2GESf+0T5/5KFeaD1LnkdxTT0HgwRmQVo2q/Sidwl+Klk7UNzANJsVvPn9t/EFZpO4 HODly38SoN/q0CPKkFYZ3pYV5889xc/+5X4DgnrJWSZo/T0JF9VKgiiDB9IIlb/Cglb5 NGurkKClNOJyDqsH9t8OOelcUM2C8EpwV9poBa08kR6e0/ZEwDxzPZA7VDml2tJw3bI8 4E/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757958163; x=1758562963; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6b0KuwU6j12efKQOY8dZE63PnJPo0f1sevexcHHq57w=; b=C2nNntj+M//d3Rb5PdGlzHAoEel60hJxTlKUowYMRj5Nkhwv6YFobsT57+fksnVZ1n I4v2PrDpbHp9mm97xUEJ4LYGpJKkiTlhBbuoWeDBGjEpscjeCwsE53j/OSH1PgykNudO yh0mVrEz2qTXo+53M/vcl0KlJI71uYDPOLpSva049OcMOqQyPjOqv49tJTdiMT7p+Kqb ezscJMTfNplVuSMp7s7n6IvMbph9PALnD8CGYVqAqBnkjbMEMrrJb/WwZwNSkeJWZpJh rpdAK2s5sKuJa2Mte/ZR19JAPfUwLOeORzQxT14r3WrKodZLJdcSpr59OjusFUd/ZAMJ 1XhA== X-Forwarded-Encrypted: i=1; AJvYcCVLDM4kGkygiE8dLzs3zhFbGalNysqnuFIYbNYtZTP3tVTke0+d6kiQok+hJzEG72epX8fzatt/nDm4YTA=@vger.kernel.org X-Gm-Message-State: AOJu0YzWixguawnOMDH1DpBFsRNRB/CsY9cUJJSj1EfCjfJUtlP1zzDs WJfpAbkbStc9geD5BGVeDdGuUZ9CyZpOhHTiUtQaxoM4tnz6Cv+7Xn7d X-Gm-Gg: ASbGnctFVKGcFKkOp0iARwToKRcgJRQ4EA7Iq7NkRV5PRwDy+eIXoYkr+/+EcG+iFBy hXb+XKNo9piiOBvJ5xZa7LHZqUYzS76Nvn9IvUkVX/Gl9iStY+B0Jx4lIK5LAzqRDEHB5U8OVuQ A7R15J5ku/nYORbyAFvoHKcvtrqbOQdnGjSbKd9JbLRW39glkek7Bfwi+vG8LPQKw8W5//5WETE xBq5xTyTMcUo1aYGCxF/MkSqNi7flG4P5Z/kyRoUWRGA4bsVo2Espr3LSElZLh3hS+CpYnHLgY3 +713vgqiSagW958zCkXuG7KvmA9X6yxYPEfDkjprMRKWevuxr7ja1HipzCNnunUOoTttEJ89sRc MAOixKhdHQ89iRJRRwS8KbXCAKJwcQcsEwJxz/Cx7LeBRoc6GfuQ43ADq7q0+xc02 X-Google-Smtp-Source: AGHT+IHnMte/JH/TgBJWIa1QjarJY3d03Taro3j2D/fUNVZVh+OdeayWomtOekuzROYqyQ8BssxBLA== X-Received: by 2002:a05:6a21:3285:b0:24e:2cb:673d with SMTP id adf61e73a8af0-2602a8950ccmr18581817637.14.1757958163126; Mon, 15 Sep 2025 10:42:43 -0700 (PDT) Received: from localhost.localdomain ([2405:201:d003:7033:ecb8:4012:29bc:7830]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-32dfd00c7efsm8968248a91.25.2025.09.15.10.42.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Sep 2025 10:42:42 -0700 (PDT) From: vivekyadav1207731111@gmail.com To: rafael@kernel.org, daniel.lezcano@linaro.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Vivek Yadav , Joe Perches Subject: [PATCH v2] cpuidle: sysfs: Use sysfs_emit/sysfs_emit_at instead of sprintf/scnprintf Date: Mon, 15 Sep 2025 10:41:41 -0700 Message-Id: <20250915174141.244346-1-vivekyadav1207731111@gmail.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Vivek Yadav The ->show() callbacks in sysfs should use sysfs_emit() or sysfs_emit_at() when formatting values for user space. These helpers are the recommended way to ensure correct buffer handling and consistency across the kernel. See Documentation/filesystems/sysfs.rst for details. No functional change intended. Suggested-by: Joe Perches Signed-off-by: vivek yadav --- Changes in v2: - Do not modify the variable 'i'; leave it unchanged. --- drivers/cpuidle/sysfs.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c index d6f5da61cb7d..61de64817604 100644 --- a/drivers/cpuidle/sysfs.c +++ b/drivers/cpuidle/sysfs.c @@ -27,14 +27,14 @@ static ssize_t show_available_governors(struct device *= dev, =20 mutex_lock(&cpuidle_lock); list_for_each_entry(tmp, &cpuidle_governors, governor_list) { - if (i >=3D (ssize_t) (PAGE_SIZE - (CPUIDLE_NAME_LEN + 2))) + if (i >=3D (ssize_t)(PAGE_SIZE - (CPUIDLE_NAME_LEN + 2))) goto out; =20 - i +=3D scnprintf(&buf[i], CPUIDLE_NAME_LEN + 1, "%s ", tmp->name); + i +=3D sysfs_emit_at(buf, i, "%.*s ", CPUIDLE_NAME_LEN, tmp->name); } =20 out: - i+=3D sprintf(&buf[i], "\n"); + i +=3D sysfs_emit_at(buf, i, "\n"); mutex_unlock(&cpuidle_lock); return i; } @@ -49,9 +49,9 @@ static ssize_t show_current_driver(struct device *dev, spin_lock(&cpuidle_driver_lock); drv =3D cpuidle_get_driver(); if (drv) - ret =3D sprintf(buf, "%s\n", drv->name); + ret =3D sysfs_emit(buf, "%s\n", drv->name); else - ret =3D sprintf(buf, "none\n"); + ret =3D sysfs_emit(buf, "none\n"); spin_unlock(&cpuidle_driver_lock); =20 return ret; @@ -65,9 +65,9 @@ static ssize_t show_current_governor(struct device *dev, =20 mutex_lock(&cpuidle_lock); if (cpuidle_curr_governor) - ret =3D sprintf(buf, "%s\n", cpuidle_curr_governor->name); + ret =3D sysfs_emit(buf, "%s\n", cpuidle_curr_governor->name); else - ret =3D sprintf(buf, "none\n"); + ret =3D sysfs_emit(buf, "none\n"); mutex_unlock(&cpuidle_lock); =20 return ret; @@ -230,7 +230,7 @@ static struct cpuidle_state_attr attr_##_name =3D __ATT= R(_name, 0644, show, store) static ssize_t show_state_##_name(struct cpuidle_state *state, \ struct cpuidle_state_usage *state_usage, char *buf) \ { \ - return sprintf(buf, "%u\n", state->_name);\ + return sysfs_emit(buf, "%u\n", state->_name);\ } =20 #define define_show_state_ull_function(_name) \ @@ -238,7 +238,7 @@ static ssize_t show_state_##_name(struct cpuidle_state = *state, \ struct cpuidle_state_usage *state_usage, \ char *buf) \ { \ - return sprintf(buf, "%llu\n", state_usage->_name);\ + return sysfs_emit(buf, "%llu\n", state_usage->_name);\ } =20 #define define_show_state_str_function(_name) \ @@ -247,8 +247,8 @@ static ssize_t show_state_##_name(struct cpuidle_state = *state, \ char *buf) \ { \ if (state->_name[0] =3D=3D '\0')\ - return sprintf(buf, "\n");\ - return sprintf(buf, "%s\n", state->_name);\ + return sysfs_emit(buf, "\n");\ + return sysfs_emit(buf, "%s\n", state->_name);\ } =20 #define define_show_state_time_function(_name) \ @@ -256,7 +256,7 @@ static ssize_t show_state_##_name(struct cpuidle_state = *state, \ struct cpuidle_state_usage *state_usage, \ char *buf) \ { \ - return sprintf(buf, "%llu\n", ktime_to_us(state->_name##_ns)); \ + return sysfs_emit(buf, "%llu\n", ktime_to_us(state->_name##_ns)); \ } =20 define_show_state_time_function(exit_latency) @@ -273,14 +273,14 @@ static ssize_t show_state_time(struct cpuidle_state *= state, struct cpuidle_state_usage *state_usage, char *buf) { - return sprintf(buf, "%llu\n", ktime_to_us(state_usage->time_ns)); + return sysfs_emit(buf, "%llu\n", ktime_to_us(state_usage->time_ns)); } =20 static ssize_t show_state_disable(struct cpuidle_state *state, struct cpuidle_state_usage *state_usage, char *buf) { - return sprintf(buf, "%llu\n", + return sysfs_emit(buf, "%llu\n", state_usage->disable & CPUIDLE_STATE_DISABLED_BY_USER); } =20 @@ -310,7 +310,7 @@ static ssize_t show_state_default_status(struct cpuidle= _state *state, struct cpuidle_state_usage *state_usage, char *buf) { - return sprintf(buf, "%s\n", + return sysfs_emit(buf, "%s\n", state->flags & CPUIDLE_FLAG_OFF ? "disabled" : "enabled"); } =20 @@ -358,7 +358,7 @@ static ssize_t show_state_s2idle_##_name(struct cpuidle= _state *state, \ struct cpuidle_state_usage *state_usage, \ char *buf) \ { \ - return sprintf(buf, "%llu\n", state_usage->s2idle_##_name);\ + return sysfs_emit(buf, "%llu\n", state_usage->s2idle_##_name);\ } =20 define_show_state_s2idle_ull_function(usage); @@ -550,7 +550,7 @@ static ssize_t show_driver_name(struct cpuidle_driver *= drv, char *buf) ssize_t ret; =20 spin_lock(&cpuidle_driver_lock); - ret =3D sprintf(buf, "%s\n", drv ? drv->name : "none"); + ret =3D sysfs_emit(buf, "%s\n", drv ? drv->name : "none"); spin_unlock(&cpuidle_driver_lock); =20 return ret; --=20 2.25.1