* [PATCH v3 0/2] Fix warnings for RISC-V builds @ 2026-02-24 16:54 Sean Chang 2026-02-24 16:54 ` [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled Sean Chang 2026-02-24 16:54 ` [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang 0 siblings, 2 replies; 6+ messages in thread From: Sean Chang @ 2026-02-24 16:54 UTC (permalink / raw) To: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna Cc: netdev, linux-nfs, linux-kernel, Sean Chang This series addresses several compiler warnings found when building the kernel for RISC-V. The first patch fixes unused variable warnings in the NFS client (including nfs4proc and flexfilelayout) that occur in certain build configurations. The second patch fixes a format-truncation warning in the MACB ethernet driver by ensuring the snprintf output fits within the destination buffer. v3: - Expand commit descriptions to include technical details regarding macro expansion, as requested by Andrew Lunn. - Test the different platform, such as ARM, ARM64, X86_64. v2: - Split the original treewide patch into subsystem-specific commits. - Added more detailed commit descriptions to satisfy checkpatch. Sean Chang (2): nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled net: macb: use ethtool_sprintf to fill ethtool stats strings drivers/net/ethernet/cadence/macb_main.c | 7 ++----- fs/nfs/flexfilelayout/flexfilelayout.c | 2 +- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 3 ++- fs/nfs/nfs4proc.c | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled 2026-02-24 16:54 [PATCH v3 0/2] Fix warnings for RISC-V builds Sean Chang @ 2026-02-24 16:54 ` Sean Chang 2026-02-24 17:54 ` Andrew Lunn 2026-02-24 16:54 ` [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang 1 sibling, 1 reply; 6+ messages in thread From: Sean Chang @ 2026-02-24 16:54 UTC (permalink / raw) To: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna Cc: netdev, linux-nfs, linux-kernel, Sean Chang When CONFIG_SUNRPC_DEBUG is disabled, the dprintk() macro expands to an empty do-while loop. This causes variables used solely within dprintk() calls to appear unused to the compiler, triggering -Wunused-variable warnings. Fix this by adding __maybe_unused to the affected variables. This ensures the code builds cleanly across different configurations, including RISC-V, ARM, and ARM64 allmodconfig, as verified in the mailing list discussion. Signed-off-by: Sean Chang <seanwascoding@gmail.com> --- fs/nfs/flexfilelayout/flexfilelayout.c | 2 +- fs/nfs/flexfilelayout/flexfilelayoutdev.c | 3 ++- fs/nfs/nfs4proc.c | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c index 9056f05a67dc..de9e8bad6af2 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.c +++ b/fs/nfs/flexfilelayout/flexfilelayout.c @@ -1502,7 +1502,7 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg, { struct nfs4_ff_layout_mirror *mirror; u32 status = *op_status; - int err; + int err __maybe_unused; if (status == 0) { switch (error) { diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c index c2d8a13a9dbd..3fb8dba0abf5 100644 --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c @@ -53,7 +53,8 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, u32 mp_count; u32 version_count; __be32 *p; - int i, ret = -ENOMEM; + int i; + int ret __maybe_unused = -ENOMEM; /* set up xdr stream */ scratch = folio_alloc(gfp_flags, 0); diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 180229320731..f76c23cdc888 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -9241,7 +9241,7 @@ static int _nfs4_proc_create_session(struct nfs_client *clp, int nfs4_proc_create_session(struct nfs_client *clp, const struct cred *cred) { int status; - unsigned *ptr; + unsigned *ptr __maybe_unused; struct nfs4_session *session = clp->cl_session; struct nfs4_add_xprt_data xprtdata = { .clp = clp, -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled 2026-02-24 16:54 ` [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled Sean Chang @ 2026-02-24 17:54 ` Andrew Lunn 2026-02-25 16:30 ` Sean Chang 0 siblings, 1 reply; 6+ messages in thread From: Andrew Lunn @ 2026-02-24 17:54 UTC (permalink / raw) To: Sean Chang Cc: nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Wed, Feb 25, 2026 at 12:54:34AM +0800, Sean Chang wrote: > When CONFIG_SUNRPC_DEBUG is disabled, the dprintk() macro expands to > an empty do-while loop. This causes variables used solely within > dprintk() calls to appear unused to the compiler, triggering > -Wunused-variable warnings. > > Fix this by adding __maybe_unused to the affected variables. This > ensures the code builds cleanly across different configurations, > including RISC-V, ARM, and ARM64 allmodconfig, as verified in the > mailing list discussion. > > Signed-off-by: Sean Chang <seanwascoding@gmail.com> > --- > fs/nfs/flexfilelayout/flexfilelayout.c | 2 +- > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 3 ++- > fs/nfs/nfs4proc.c | 2 +- > 3 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c > index 9056f05a67dc..de9e8bad6af2 100644 > --- a/fs/nfs/flexfilelayout/flexfilelayout.c > +++ b/fs/nfs/flexfilelayout/flexfilelayout.c > @@ -1502,7 +1502,7 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg, > { > struct nfs4_ff_layout_mirror *mirror; > u32 status = *op_status; > - int err; > + int err __maybe_unused; Sorry, but this is ugly. There must be a better way to fix this. Maybe look at no_printk(). https://elixir.bootlin.com/linux/v6.19.3/source/drivers/video/fbdev/core/fbmon.c#L50 #ifdef DEBUG #define DPRINTK(fmt, args...) printk(fmt,## args) #else #define DPRINTK(fmt, args...) no_printk(fmt, ##args) #endif Andrew --- pw-bot: cr ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled 2026-02-24 17:54 ` Andrew Lunn @ 2026-02-25 16:30 ` Sean Chang 0 siblings, 0 replies; 6+ messages in thread From: Sean Chang @ 2026-02-25 16:30 UTC (permalink / raw) To: Andrew Lunn Cc: nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Wed, Feb 25, 2026 at 1:54 AM Andrew Lunn <andrew@lunn.ch> wrote: > > > > diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c > > index 9056f05a67dc..de9e8bad6af2 100644 > > --- a/fs/nfs/flexfilelayout/flexfilelayout.c > > +++ b/fs/nfs/flexfilelayout/flexfilelayout.c > > @@ -1502,7 +1502,7 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg, > > { > > struct nfs4_ff_layout_mirror *mirror; > > u32 status = *op_status; > > - int err; > > + int err __maybe_unused; > > Sorry, but this is ugly. There must be a better way to fix this. > > Maybe look at no_printk(). > > https://elixir.bootlin.com/linux/v6.19.3/source/drivers/video/fbdev/core/fbmon.c#L50 > > #ifdef DEBUG > #define DPRINTK(fmt, args...) printk(fmt,## args) > #else > #define DPRINTK(fmt, args...) no_printk(fmt, ##args) > #endif > You are absolutely right, adding __maybe_unused to every variable is indeed ugly and repetitive. I investigated the suggestion of using no_printk(). It provides the same dummy-function behavior while allowing the compiler to perform type checking on the arguments. This effectively silences the -Wunused-variable warnings without generating any machine code. I propose modifying include/linux/sunrpc/debug.h to update the stubs for dfprintk and dfprintk_rcu when CONFIG_SUNRPC_DEBUG is disabled: - # define dfprintk(fac, fmt, ...) do {} while (0) - # define dfprintk_rcu(fac, fmt, ...) do {} while (0) + # define dfprintk(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) + # define dfprintk_rcu(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) Best regards, Sean ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings 2026-02-24 16:54 [PATCH v3 0/2] Fix warnings for RISC-V builds Sean Chang 2026-02-24 16:54 ` [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled Sean Chang @ 2026-02-24 16:54 ` Sean Chang 2026-02-24 17:55 ` Andrew Lunn 1 sibling, 1 reply; 6+ messages in thread From: Sean Chang @ 2026-02-24 16:54 UTC (permalink / raw) To: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna Cc: netdev, linux-nfs, linux-kernel, Sean Chang The RISC-V toolchain triggers a stringop-truncation warning when using snprintf() with a fixed ETH_GSTRING_LEN (32 bytes) buffer. Convert the driver to use the modern ethtool_sprintf() API from linux/ethtool.h. This removes the need for manual snprintf() and memcpy() calls, handles the 32-byte padding automatically, and simplifies the logic by removing manual pointer arithmetic. Signed-off-by: Sean Chang <seanwascoding@gmail.com> --- drivers/net/ethernet/cadence/macb_main.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index 43cd013bb70e..616823e9fc5b 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -3145,7 +3145,6 @@ static int gem_get_sset_count(struct net_device *dev, int sset) static void gem_get_ethtool_strings(struct net_device *dev, u32 sset, u8 *p) { - char stat_string[ETH_GSTRING_LEN]; struct macb *bp = netdev_priv(dev); struct macb_queue *queue; unsigned int i; @@ -3158,10 +3157,8 @@ static void gem_get_ethtool_strings(struct net_device *dev, u32 sset, u8 *p) ETH_GSTRING_LEN); for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) { - for (i = 0; i < QUEUE_STATS_LEN; i++, p += ETH_GSTRING_LEN) { - snprintf(stat_string, ETH_GSTRING_LEN, "q%d_%s", - q, queue_statistics[i].stat_string); - memcpy(p, stat_string, ETH_GSTRING_LEN); + for (i = 0; i < QUEUE_STATS_LEN; i++) { + ethtool_sprintf(&p, "q%u_%s", q, queue_statistics[i].stat_string); } } break; -- 2.34.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings 2026-02-24 16:54 ` [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang @ 2026-02-24 17:55 ` Andrew Lunn 0 siblings, 0 replies; 6+ messages in thread From: Andrew Lunn @ 2026-02-24 17:55 UTC (permalink / raw) To: Sean Chang Cc: nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Wed, Feb 25, 2026 at 12:54:35AM +0800, Sean Chang wrote: > The RISC-V toolchain triggers a stringop-truncation warning when using > snprintf() with a fixed ETH_GSTRING_LEN (32 bytes) buffer. > > Convert the driver to use the modern ethtool_sprintf() API from > linux/ethtool.h. This removes the need for manual snprintf() and > memcpy() calls, handles the 32-byte padding automatically, and > simplifies the logic by removing manual pointer arithmetic. > > Signed-off-by: Sean Chang <seanwascoding@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-25 16:30 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-24 16:54 [PATCH v3 0/2] Fix warnings for RISC-V builds Sean Chang 2026-02-24 16:54 ` [PATCH v3 1/2] nfs: fix unused variable warning when CONFIG_SUNRPC_DEBUG is disabled Sean Chang 2026-02-24 17:54 ` Andrew Lunn 2026-02-25 16:30 ` Sean Chang 2026-02-24 16:54 ` [PATCH v3 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang 2026-02-24 17:55 ` Andrew Lunn
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox