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