[PATCH v2 2/4] staging: greybus: replace sprintf with sysfs_emit in sysfs show functions
From: Ganesh Kumar Pittala
Date: Sun Apr 13 2025 - 03:34:49 EST
This patch replaces deprecated uses of sprintf() with the safer
sysfs_emit() helper in multiple sysfs show functions across the
Greybus staging drivers.
The sysfs_emit() API is designed specifically for sysfs usage and
ensures proper formatting, length checks, and termination, aligning
with current kernel best practices.
Affected files:
- audio_manager_module.c
- loopback.c (sysfs-related only)
- arche-platform.c
- arche-apb-ctrl.c
- light.c
- gbphy.c
Signed-off-by: Ganesh Kumar Pittala <ganeshkpittala@xxxxxxxxx>
---
drivers/staging/greybus/arche-apb-ctrl.c | 11 ++++++-----
drivers/staging/greybus/arche-platform.c | 11 ++++++-----
drivers/staging/greybus/audio_manager_module.c | 13 +++++++------
drivers/staging/greybus/gbphy.c | 3 ++-
drivers/staging/greybus/light.c | 5 +++--
drivers/staging/greybus/loopback.c | 15 ++++++++-------
6 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c
index 90ab32638d3f..9862188e8367 100644
--- a/drivers/staging/greybus/arche-apb-ctrl.c
+++ b/drivers/staging/greybus/arche-apb-ctrl.c
@@ -17,6 +17,7 @@
#include <linux/pm.h>
#include <linux/regulator/consumer.h>
#include <linux/spinlock.h>
+#include <linux/sysfs.h>
#include "arche_platform.h"
static void apb_bootret_deassert(struct device *dev);
@@ -299,16 +300,16 @@ static ssize_t state_show(struct device *dev,
switch (apb->state) {
case ARCHE_PLATFORM_STATE_OFF:
- return sprintf(buf, "off%s\n",
+ return sysfs_emit(buf, "off%s\n",
apb->init_disabled ? ",disabled" : "");
case ARCHE_PLATFORM_STATE_ACTIVE:
- return sprintf(buf, "active\n");
+ return sysfs_emit(buf, "active\n");
case ARCHE_PLATFORM_STATE_STANDBY:
- return sprintf(buf, "standby\n");
+ return sysfs_emit(buf, "standby\n");
case ARCHE_PLATFORM_STATE_FW_FLASHING:
- return sprintf(buf, "fw_flashing\n");
+ return sysfs_emit(buf, "fw_flashing\n");
default:
- return sprintf(buf, "unknown state\n");
+ return sysfs_emit(buf, "unknown state\n");
}
}
diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c
index d48464390f58..2e706c1169d5 100644
--- a/drivers/staging/greybus/arche-platform.c
+++ b/drivers/staging/greybus/arche-platform.c
@@ -21,6 +21,7 @@
#include <linux/time.h>
#include <linux/greybus.h>
#include <linux/of.h>
+#include <linux/sysfs.h>
#include "arche_platform.h"
#if IS_ENABLED(CONFIG_USB_HSIC_USB3613)
@@ -374,15 +375,15 @@ static ssize_t state_show(struct device *dev,
switch (arche_pdata->state) {
case ARCHE_PLATFORM_STATE_OFF:
- return sprintf(buf, "off\n");
+ return sysfs_emit(buf, "off\n");
case ARCHE_PLATFORM_STATE_ACTIVE:
- return sprintf(buf, "active\n");
+ return sysfs_emit(buf, "active\n");
case ARCHE_PLATFORM_STATE_STANDBY:
- return sprintf(buf, "standby\n");
+ return sysfs_emit(buf, "standby\n");
case ARCHE_PLATFORM_STATE_FW_FLASHING:
- return sprintf(buf, "fw_flashing\n");
+ return sysfs_emit(buf, "fw_flashing\n");
default:
- return sprintf(buf, "unknown state\n");
+ return sysfs_emit(buf, "unknown state\n");
}
}
diff --git a/drivers/staging/greybus/audio_manager_module.c b/drivers/staging/greybus/audio_manager_module.c
index 4a4dfb42f50f..781144be4eec 100644
--- a/drivers/staging/greybus/audio_manager_module.c
+++ b/drivers/staging/greybus/audio_manager_module.c
@@ -6,6 +6,7 @@
*/
#include <linux/slab.h>
+#include <linux/sysfs.h>
#include "audio_manager.h"
#include "audio_manager_private.h"
@@ -76,7 +77,7 @@ static void gb_audio_module_release(struct kobject *kobj)
static ssize_t gb_audio_module_name_show(struct gb_audio_manager_module *module,
struct gb_audio_manager_module_attribute *attr, char *buf)
{
- return sprintf(buf, "%s", module->desc.name);
+ return sysfs_emit(buf, "%s\n", module->desc.name);
}
static struct gb_audio_manager_module_attribute gb_audio_module_name_attribute =
@@ -85,7 +86,7 @@ static struct gb_audio_manager_module_attribute gb_audio_module_name_attribute =
static ssize_t gb_audio_module_vid_show(struct gb_audio_manager_module *module,
struct gb_audio_manager_module_attribute *attr, char *buf)
{
- return sprintf(buf, "%d", module->desc.vid);
+ return sysfs_emit(buf, "%d\n", module->desc.vid);
}
static struct gb_audio_manager_module_attribute gb_audio_module_vid_attribute =
@@ -94,7 +95,7 @@ static struct gb_audio_manager_module_attribute gb_audio_module_vid_attribute =
static ssize_t gb_audio_module_pid_show(struct gb_audio_manager_module *module,
struct gb_audio_manager_module_attribute *attr, char *buf)
{
- return sprintf(buf, "%d", module->desc.pid);
+ return sysfs_emit(buf, "%d\n", module->desc.pid);
}
static struct gb_audio_manager_module_attribute gb_audio_module_pid_attribute =
@@ -104,7 +105,7 @@ static ssize_t gb_audio_module_intf_id_show(struct gb_audio_manager_module *modu
struct gb_audio_manager_module_attribute *attr,
char *buf)
{
- return sprintf(buf, "%d", module->desc.intf_id);
+ return sysfs_emit(buf, "%d\n", module->desc.intf_id);
}
static struct gb_audio_manager_module_attribute
@@ -115,7 +116,7 @@ static ssize_t gb_audio_module_ip_devices_show(struct gb_audio_manager_module *m
struct gb_audio_manager_module_attribute *attr,
char *buf)
{
- return sprintf(buf, "0x%X", module->desc.ip_devices);
+ return sysfs_emit(buf, "0x%X\n", module->desc.ip_devices);
}
static struct gb_audio_manager_module_attribute
@@ -126,7 +127,7 @@ static ssize_t gb_audio_module_op_devices_show(struct gb_audio_manager_module *m
struct gb_audio_manager_module_attribute *attr,
char *buf)
{
- return sprintf(buf, "0x%X", module->desc.op_devices);
+ return sysfs_emit(buf, "0x%X\n", module->desc.op_devices);
}
static struct gb_audio_manager_module_attribute
diff --git a/drivers/staging/greybus/gbphy.c b/drivers/staging/greybus/gbphy.c
index 6adcad286633..72d72aa7cb0f 100644
--- a/drivers/staging/greybus/gbphy.c
+++ b/drivers/staging/greybus/gbphy.c
@@ -14,6 +14,7 @@
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/greybus.h>
+#include <linux/sysfs.h>
#include "gbphy.h"
@@ -31,7 +32,7 @@ static ssize_t protocol_id_show(struct device *dev,
{
struct gbphy_device *gbphy_dev = to_gbphy_dev(dev);
- return sprintf(buf, "0x%02x\n", gbphy_dev->cport_desc->protocol_id);
+ return sysfs_emit(buf, "0x%02x\n", gbphy_dev->cport_desc->protocol_id);
}
static DEVICE_ATTR_RO(protocol_id);
diff --git a/drivers/staging/greybus/light.c b/drivers/staging/greybus/light.c
index e509fdc715db..db0e98faec08 100644
--- a/drivers/staging/greybus/light.c
+++ b/drivers/staging/greybus/light.c
@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/greybus.h>
+#include <linux/sysfs.h>
#include <media/v4l2-flash-led-class.h>
#define NAMES_MAX 32
@@ -173,7 +174,7 @@ static ssize_t fade_##__dir##_show(struct device *dev, \
struct led_classdev *cdev = dev_get_drvdata(dev); \
struct gb_channel *channel = get_channel_from_cdev(cdev); \
\
- return sprintf(buf, "%u\n", channel->fade_##__dir); \
+ return sysfs_emit(buf, "%u\n", channel->fade_##__dir); \
} \
\
static ssize_t fade_##__dir##_store(struct device *dev, \
@@ -220,7 +221,7 @@ static ssize_t color_show(struct device *dev, struct device_attribute *attr,
struct led_classdev *cdev = dev_get_drvdata(dev);
struct gb_channel *channel = get_channel_from_cdev(cdev);
- return sprintf(buf, "0x%08x\n", channel->color);
+ return sysfs_emit(buf, "0x%08x\n", channel->color);
}
static ssize_t color_store(struct device *dev, struct device_attribute *attr,
diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
index 1f19323b0e1a..c194afea941a 100644
--- a/drivers/staging/greybus/loopback.c
+++ b/drivers/staging/greybus/loopback.c
@@ -26,6 +26,7 @@
#include <linux/atomic.h>
#include <linux/pm_runtime.h>
#include <linux/greybus.h>
+#include <linux/sysfs.h>
#include <asm/div64.h>
#define NSEC_PER_DAY 86400000000000ULL
@@ -125,7 +126,7 @@ static ssize_t field##_show(struct device *dev, \
char *buf) \
{ \
struct gb_loopback *gb = dev_get_drvdata(dev); \
- return sprintf(buf, "%u\n", gb->field); \
+ return sysfs_emit(buf, "%u\n", gb->field); \
} \
static DEVICE_ATTR_RO(field)
@@ -137,8 +138,8 @@ static ssize_t name##_##field##_show(struct device *dev, \
struct gb_loopback *gb = dev_get_drvdata(dev); \
/* Report 0 for min and max if no transfer succeeded */ \
if (!gb->requests_completed) \
- return sprintf(buf, "0\n"); \
- return sprintf(buf, "%" #type "\n", gb->name.field); \
+ return sysfs_emit(buf, "0\n"); \
+ return sysfs_emit(buf, "%" #type "\n", gb->name.field); \
} \
static DEVICE_ATTR_RO(name##_##field)
@@ -158,7 +159,7 @@ static ssize_t name##_avg_show(struct device *dev, \
rem = do_div(avg, count); \
rem *= 1000000; \
do_div(rem, count); \
- return sprintf(buf, "%llu.%06u\n", avg, (u32)rem); \
+ return sysfs_emit(buf, "%llu.%06u\n", avg, (u32)rem); \
} \
static DEVICE_ATTR_RO(name##_avg)
@@ -173,7 +174,7 @@ static ssize_t field##_show(struct device *dev, \
char *buf) \
{ \
struct gb_loopback *gb = dev_get_drvdata(dev); \
- return sprintf(buf, "%" #type "\n", gb->field); \
+ return sysfs_emit(buf, "%" #type "\n", gb->field); \
} \
static ssize_t field##_store(struct device *dev, \
struct device_attribute *attr, \
@@ -199,7 +200,7 @@ static ssize_t field##_show(struct device *dev, \
char *buf) \
{ \
struct gb_loopback *gb = dev_get_drvdata(dev); \
- return sprintf(buf, "%u\n", gb->field); \
+ return sysfs_emit(buf, "%u\n", gb->field); \
} \
static DEVICE_ATTR_RO(field)
@@ -209,7 +210,7 @@ static ssize_t field##_show(struct device *dev, \
char *buf) \
{ \
struct gb_loopback *gb = dev_get_drvdata(dev); \
- return sprintf(buf, "%" #type "\n", gb->field); \
+ return sysfs_emit(buf, "%" #type "\n", gb->field); \
} \
static ssize_t field##_store(struct device *dev, \
struct device_attribute *attr, \
--
2.43.0