* [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
* [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 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 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
* 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
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