* [PATCH v4 0/2] Fix warnings for RISC-V builds @ 2026-02-27 15:26 Sean Chang 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang 2026-02-27 15:26 ` [PATCH v4 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang 0 siblings, 2 replies; 12+ messages in thread From: Sean Chang @ 2026-02-27 15:26 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. v4: - Refactor patch 1 to use no_printk() in sunrpc headers instead of marking variables as __maybe_unused. This provides a cleaner, global fix and enables compiler type checking. 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): sunrpc: fix unused variable warnings by using no_printk net: macb: use ethtool_sprintf to fill ethtool stats strings drivers/net/ethernet/cadence/macb_main.c | 7 ++----- include/linux/sunrpc/debug.h | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) -- 2.34.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 15:26 [PATCH v4 0/2] Fix warnings for RISC-V builds Sean Chang @ 2026-02-27 15:26 ` Sean Chang 2026-02-27 15:58 ` Chuck Lever ` (2 more replies) 2026-02-27 15:26 ` [PATCH v4 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang 1 sibling, 3 replies; 12+ messages in thread From: Sean Chang @ 2026-02-27 15:26 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 dfprintk() macros currently expand to empty do-while loops. This causes variables used solely within these calls to appear unused, triggering -Wunused-variable warnings. Instead of marking every affected variable with __maybe_unused, update the dfprintk and dfprintk_rcu stubs to use no_printk(). This allows the compiler to see the variables and perform type checking without emitting any code, thus silencing the warnings globally for these macros. Suggested-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Sean Chang <seanwascoding@gmail.com> --- include/linux/sunrpc/debug.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h index eb4bd62df319..55c54df8bc7d 100644 --- a/include/linux/sunrpc/debug.h +++ b/include/linux/sunrpc/debug.h @@ -52,8 +52,8 @@ do { \ # define RPC_IFDEBUG(x) x #else # define ifdebug(fac) if (0) -# 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__) # define RPC_IFDEBUG(x) #endif -- 2.34.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang @ 2026-02-27 15:58 ` Chuck Lever 2026-02-27 16:00 ` Andrew Lunn 2026-02-27 17:38 ` David Laight 2 siblings, 0 replies; 12+ messages in thread From: Chuck Lever @ 2026-02-27 15:58 UTC (permalink / raw) To: Sean Chang, Andrew Lunn, nicolas.ferre, claudiu.beznea, Trond Myklebust, Anna Schumaker Cc: netdev, linux-nfs, linux-kernel On Fri, Feb 27, 2026, at 10:26 AM, Sean Chang wrote: > When CONFIG_SUNRPC_DEBUG is disabled, the dfprintk() macros currently > expand to empty do-while loops. This causes variables used solely > within these calls to appear unused, triggering -Wunused-variable > warnings. > > Instead of marking every affected variable with __maybe_unused, > update the dfprintk and dfprintk_rcu stubs to use no_printk(). > This allows the compiler to see the variables and perform type > checking without emitting any code, thus silencing the warnings > globally for these macros. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Sean Chang <seanwascoding@gmail.com> > --- > include/linux/sunrpc/debug.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h > index eb4bd62df319..55c54df8bc7d 100644 > --- a/include/linux/sunrpc/debug.h > +++ b/include/linux/sunrpc/debug.h > @@ -52,8 +52,8 @@ do { \ > # define RPC_IFDEBUG(x) x > #else > # define ifdebug(fac) if (0) > -# 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__) > # define RPC_IFDEBUG(x) > #endif > > -- > 2.34.1 Seems obviously good to me. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> -- Chuck Lever ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang 2026-02-27 15:58 ` Chuck Lever @ 2026-02-27 16:00 ` Andrew Lunn 2026-02-27 17:38 ` David Laight 2 siblings, 0 replies; 12+ messages in thread From: Andrew Lunn @ 2026-02-27 16:00 UTC (permalink / raw) To: Sean Chang Cc: nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Fri, Feb 27, 2026 at 11:26:23PM +0800, Sean Chang wrote: > When CONFIG_SUNRPC_DEBUG is disabled, the dfprintk() macros currently > expand to empty do-while loops. This causes variables used solely > within these calls to appear unused, triggering -Wunused-variable > warnings. > > Instead of marking every affected variable with __maybe_unused, > update the dfprintk and dfprintk_rcu stubs to use no_printk(). > This allows the compiler to see the variables and perform type > checking without emitting any code, thus silencing the warnings > globally for these macros. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Sean Chang <seanwascoding@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang 2026-02-27 15:58 ` Chuck Lever 2026-02-27 16:00 ` Andrew Lunn @ 2026-02-27 17:38 ` David Laight 2026-02-27 17:57 ` Andrew Lunn 2 siblings, 1 reply; 12+ messages in thread From: David Laight @ 2026-02-27 17:38 UTC (permalink / raw) To: Sean Chang Cc: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Fri, 27 Feb 2026 23:26:23 +0800 Sean Chang <seanwascoding@gmail.com> wrote: > When CONFIG_SUNRPC_DEBUG is disabled, the dfprintk() macros currently > expand to empty do-while loops. This causes variables used solely > within these calls to appear unused, triggering -Wunused-variable > warnings. > > Instead of marking every affected variable with __maybe_unused, > update the dfprintk and dfprintk_rcu stubs to use no_printk(). > This allows the compiler to see the variables and perform type > checking without emitting any code, thus silencing the warnings > globally for these macros. > > Suggested-by: Andrew Lunn <andrew@lunn.ch> > Signed-off-by: Sean Chang <seanwascoding@gmail.com> > --- > include/linux/sunrpc/debug.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h > index eb4bd62df319..55c54df8bc7d 100644 > --- a/include/linux/sunrpc/debug.h > +++ b/include/linux/sunrpc/debug.h > @@ -52,8 +52,8 @@ do { \ > # define RPC_IFDEBUG(x) x > #else > # define ifdebug(fac) if (0) > -# 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__) You can omit fmt, then you don't need the ## #define dfprintk(fac, ...) no_printk(__VA_ARGS__) David > # define RPC_IFDEBUG(x) > #endif > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 17:38 ` David Laight @ 2026-02-27 17:57 ` Andrew Lunn 2026-02-27 18:15 ` David Laight 0 siblings, 1 reply; 12+ messages in thread From: Andrew Lunn @ 2026-02-27 17:57 UTC (permalink / raw) To: David Laight Cc: Sean Chang, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel > > # define ifdebug(fac) if (0) > > -# 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__) > > You can omit fmt, then you don't need the ## > #define dfprintk(fac, ...) no_printk(__VA_ARGS__) /* * Dummy printk for disabled debugging statements to use whilst maintaining * gcc's format checking. */ #define no_printk(fmt, ...) \ ({ \ if (0) \ _printk(fmt, ##__VA_ARGS__); \ 0; \ }) Without fmt, gcc cannot do format checking. Or worse, it takes the first member of __VA_ARGS__ as the format, and gives spurious errors? Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 17:57 ` Andrew Lunn @ 2026-02-27 18:15 ` David Laight 2026-02-28 14:56 ` Sean Chang 0 siblings, 1 reply; 12+ messages in thread From: David Laight @ 2026-02-27 18:15 UTC (permalink / raw) To: Andrew Lunn Cc: Sean Chang, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Fri, 27 Feb 2026 18:57:33 +0100 Andrew Lunn <andrew@lunn.ch> wrote: > > > # define ifdebug(fac) if (0) > > > -# 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__) > > > > You can omit fmt, then you don't need the ## > > #define dfprintk(fac, ...) no_printk(__VA_ARGS__) > > /* > * Dummy printk for disabled debugging statements to use whilst maintaining > * gcc's format checking. > */ > #define no_printk(fmt, ...) \ > ({ \ > if (0) \ > _printk(fmt, ##__VA_ARGS__); \ > 0; \ > }) > > Without fmt, gcc cannot do format checking. Or worse, it takes the > first member of __VA_ARGS__ as the format, and gives spurious errors? By the time the compiler looks at it the pre-processor has expanded __VA_ARGS__. So it doesn't matter that the format string is in the __VA_ARGS__ list rather than preceding it. David > > Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-27 18:15 ` David Laight @ 2026-02-28 14:56 ` Sean Chang 2026-02-28 17:23 ` Sean Chang 0 siblings, 1 reply; 12+ messages in thread From: Sean Chang @ 2026-02-28 14:56 UTC (permalink / raw) To: David Laight Cc: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Sat, Feb 28, 2026 at 2:15 AM David Laight <david.laight.linux@gmail.com> wrote: > > On Fri, 27 Feb 2026 18:57:33 +0100 > Andrew Lunn <andrew@lunn.ch> wrote: > > > > > # define ifdebug(fac) if (0) > > > > -# 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__) > > > > > > You can omit fmt, then you don't need the ## > > > #define dfprintk(fac, ...) no_printk(__VA_ARGS__) > > > > /* > > * Dummy printk for disabled debugging statements to use whilst maintaining > > * gcc's format checking. > > */ > > #define no_printk(fmt, ...) \ > > ({ \ > > if (0) \ > > _printk(fmt, ##__VA_ARGS__); \ > > 0; \ > > }) > > > > Without fmt, gcc cannot do format checking. Or worse, it takes the > > first member of __VA_ARGS__ as the format, and gives spurious errors? > > By the time the compiler looks at it the pre-processor has expanded > __VA_ARGS__. > So it doesn't matter that the format string is in the __VA_ARGS__ > list rather than preceding it. > Hi David, Thanks for the explanation. I agree that since __VA_ARGS__ will always contain the format string in this context, the ## and explicit fmt are indeed redundant. Since no_printk itself already handles the ##__VA_ARGS__ logic internally, there's no need to duplicate it in the dfprintk definition. I'll switch to the simpler in v5: -# define dfprintk(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) -# define dfprintk_rcu(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) +#define dfprintk(fac, ...) no_printk(__VA_ARGS__) +# define dfprintk_rcu(fac, ...) no_printk(__VA_ARGS__) Best regards, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-28 14:56 ` Sean Chang @ 2026-02-28 17:23 ` Sean Chang 2026-02-28 20:04 ` Andrew Lunn 0 siblings, 1 reply; 12+ messages in thread From: Sean Chang @ 2026-02-28 17:23 UTC (permalink / raw) To: David Laight Cc: Andrew Lunn, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Sat, Feb 28, 2026 at 10:56 PM Sean Chang <seanwascoding@gmail.com> wrote: > > On Sat, Feb 28, 2026 at 2:15 AM David Laight > <david.laight.linux@gmail.com> wrote: > > > > On Fri, 27 Feb 2026 18:57:33 +0100 > > Andrew Lunn <andrew@lunn.ch> wrote: > > > > > > > # define ifdebug(fac) if (0) > > > > > -# 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__) > > > > > > > > You can omit fmt, then you don't need the ## > > > > #define dfprintk(fac, ...) no_printk(__VA_ARGS__) > > > > > > /* > > > * Dummy printk for disabled debugging statements to use whilst maintaining > > > * gcc's format checking. > > > */ > > > #define no_printk(fmt, ...) \ > > > ({ \ > > > if (0) \ > > > _printk(fmt, ##__VA_ARGS__); \ > > > 0; \ > > > }) > > > > > > Without fmt, gcc cannot do format checking. Or worse, it takes the > > > first member of __VA_ARGS__ as the format, and gives spurious errors? > > > > By the time the compiler looks at it the pre-processor has expanded > > __VA_ARGS__. > > So it doesn't matter that the format string is in the __VA_ARGS__ > > list rather than preceding it. > > > > Hi David, > Thanks for the explanation. I agree that since __VA_ARGS__ will > always contain the format string in this context, the ## and explicit > fmt are indeed redundant. Since no_printk itself already handles > the ##__VA_ARGS__ logic internally, there's no need to duplicate > it in the dfprintk definition. > > I'll switch to the simpler in v5: > -# define dfprintk(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) > -# define dfprintk_rcu(fac, fmt, ...) no_printk(fmt, ##__VA_ARGS__) > +#define dfprintk(fac, ...) no_printk(__VA_ARGS__) > +# define dfprintk_rcu(fac, ...) no_printk(__VA_ARGS__) > HI all, I've also identified the cause of the build error in fs/nfsd/nfsfh.c reported by syzbot [1]. The "use of undeclared identifier 'buf'" occurs because buf is only declared within the RPC_IFDEBUG macro, which is removed when CONFIG_SUNRPC_DEBUG is disabled. To fix this, I will follow the pattern used in net/sunrpc/xprtrdma/ svc_rdma_transport.c by wrapping the dprintk call that references buf within an #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) block. static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) { .... RPC_IFDEBUG(struct sockaddr *sap); ... #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) dprintk("svcrdma: new connection accepted on device %s:\n", dev->name); sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; dprintk(" local address : %pIS:%u\n", sap, rpc_get_port(sap)); sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; dprintk(" remote address : %pIS:%u\n", sap, rpc_get_port(sap)); dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); dprintk(" rdma_rw_ctxs : %d\n", ctxts); dprintk(" max_requests : %d\n", newxprt->sc_max_requests); dprintk(" ord : %d\n", conn_param.initiator_depth); #endif ... } The refactor in fs/nfsd/nfsfh.c will look like this: static __be32 nfsd_setuser_and_check_port(struct svc_rqst *rqstp, struct svc_cred *cred, struct svc_export *exp) { /* Check if the request originated from a secure port. */ if (rqstp && !nfsd_originating_port_ok(rqstp, cred, exp)) { RPC_IFDEBUG(char buf[RPC_MAX_ADDRBUFLEN]); +#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) dprintk("nfsd: request from insecure port %s!\n", svc_print_addr(rqstp, buf, sizeof(buf))); +#endif return nfserr_perm; } /* Set user creds for this exportpoint */ return nfserrno(nfsd_setuser(cred, exp)); } This fix, along with the macro simplification suggested by David, will be included in v5. [1] https://lore.kernel.org/all/69a2e269.050a0220.3a55be.003e.GAE@google.com/ Best regards, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-28 17:23 ` Sean Chang @ 2026-02-28 20:04 ` Andrew Lunn 2026-03-01 15:40 ` Sean Chang 0 siblings, 1 reply; 12+ messages in thread From: Andrew Lunn @ 2026-02-28 20:04 UTC (permalink / raw) To: Sean Chang Cc: David Laight, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel > HI all, > I've also identified the cause of the build error in fs/nfsd/nfsfh.c > reported by syzbot [1]. The "use of undeclared identifier 'buf'" occurs > because buf is only declared within the RPC_IFDEBUG macro, > which is removed when CONFIG_SUNRPC_DEBUG is disabled. > To fix this, I will follow the pattern used in net/sunrpc/xprtrdma/ > svc_rdma_transport.c by wrapping the dprintk call that references > buf within an #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) block. Please try to avoid adding such #if code. Compile testing does not work as well if there are millions of #if def combinations. Ideally we want the stub functions to allow as much as possible to be compiled, and then let the optimizer throw it out because it is unreachable. > > static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) > { > .... > RPC_IFDEBUG(struct sockaddr *sap); > ... > #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) > dprintk("svcrdma: new connection accepted on device %s:\n", dev->name); > sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; > dprintk(" local address : %pIS:%u\n", sap, rpc_get_port(sap)); > sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; > dprintk(" remote address : %pIS:%u\n", sap, rpc_get_port(sap)); > dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); > dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); > dprintk(" rdma_rw_ctxs : %d\n", ctxts); > dprintk(" max_requests : %d\n", newxprt->sc_max_requests); > dprintk(" ord : %d\n", conn_param.initiator_depth); > #endif > ... > } > > The refactor in fs/nfsd/nfsfh.c will look like this: > > static __be32 nfsd_setuser_and_check_port(struct svc_rqst *rqstp, > struct svc_cred *cred, > struct svc_export *exp) > { > /* Check if the request originated from a secure port. */ > if (rqstp && !nfsd_originating_port_ok(rqstp, cred, exp)) { > RPC_IFDEBUG(char buf[RPC_MAX_ADDRBUFLEN]); > +#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) > dprintk("nfsd: request from insecure port %s!\n", > svc_print_addr(rqstp, buf, sizeof(buf))); > +#endif In this case, now dprintk() uses it arguments, i think you can drop the RPC_IFDEBUG() and always have buf. This code then gets compiled. Ask make to produce fs/nfsd/nfsfh.lst and see if it generated any code for this, or has it optimized it out. Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk 2026-02-28 20:04 ` Andrew Lunn @ 2026-03-01 15:40 ` Sean Chang 0 siblings, 0 replies; 12+ messages in thread From: Sean Chang @ 2026-03-01 15:40 UTC (permalink / raw) To: Andrew Lunn Cc: David Laight, nicolas.ferre, claudiu.beznea, trond.myklebust, anna, netdev, linux-nfs, linux-kernel On Sun, Mar 1, 2026 at 4:04 AM Andrew Lunn <andrew@lunn.ch> wrote: > > Please try to avoid adding such #if code. Compile testing does not > work as well if there are millions of #if def combinations. Ideally we > want the stub functions to allow as much as possible to be compiled, > and then let the optimizer throw it out because it is unreachable. > > > > > static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) > > { > > .... > > RPC_IFDEBUG(struct sockaddr *sap); > > ... > > #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) > > dprintk("svcrdma: new connection accepted on device %s:\n", dev->name); > > sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; > > dprintk(" local address : %pIS:%u\n", sap, rpc_get_port(sap)); > > sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; > > dprintk(" remote address : %pIS:%u\n", sap, rpc_get_port(sap)); > > dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); > > dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); > > dprintk(" rdma_rw_ctxs : %d\n", ctxts); > > dprintk(" max_requests : %d\n", newxprt->sc_max_requests); > > dprintk(" ord : %d\n", conn_param.initiator_depth); > > #endif > > ... > > } > > > > The refactor in fs/nfsd/nfsfh.c will look like this: > > > > static __be32 nfsd_setuser_and_check_port(struct svc_rqst *rqstp, > > struct svc_cred *cred, > > struct svc_export *exp) > > { > > /* Check if the request originated from a secure port. */ > > if (rqstp && !nfsd_originating_port_ok(rqstp, cred, exp)) { > > RPC_IFDEBUG(char buf[RPC_MAX_ADDRBUFLEN]); > > +#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) > > dprintk("nfsd: request from insecure port %s!\n", > > svc_print_addr(rqstp, buf, sizeof(buf))); > > +#endif > > In this case, now dprintk() uses it arguments, i think you can drop > the RPC_IFDEBUG() and always have buf. This code then gets > compiled. Ask make to produce fs/nfsd/nfsfh.lst and see if it > generated any code for this, or has it optimized it out. > Hi Andrew, You are absolutely right. I have verified the generated code with fs/nfsd/nfsfh.lst and net/sunrpc/xprtrdma/svc_rdma_transport.lst under -O2 optimization. Even after dropping the #ifdef and always declaring the char buf[], the compiler successfully optimizes everything out when CONFIG_SUNRPC_DEBUG is disabled. Specifically: - There is no stack allocation (no sub %rsp) for the buffer. - The logic flows directly as if the dprintk lines were never there. Given this, I agree it is the perfect time to also remove the RPC_IFDEBUG(x) macro entirely, as it is only used in these two files and is now redundant with the new no_printk approach. I will send out v6 shortly with these cleanups. Best Regards, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings 2026-02-27 15:26 [PATCH v4 0/2] Fix warnings for RISC-V builds Sean Chang 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang @ 2026-02-27 15:26 ` Sean Chang 1 sibling, 0 replies; 12+ messages in thread From: Sean Chang @ 2026-02-27 15:26 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. Suggested-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Andrew Lunn <andrew@lunn.ch> 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 5bc35f651ebd..79ca19097b2d 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] 12+ messages in thread
end of thread, other threads:[~2026-03-01 15:41 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-27 15:26 [PATCH v4 0/2] Fix warnings for RISC-V builds Sean Chang 2026-02-27 15:26 ` [PATCH v4 1/2] sunrpc: fix unused variable warnings by using no_printk Sean Chang 2026-02-27 15:58 ` Chuck Lever 2026-02-27 16:00 ` Andrew Lunn 2026-02-27 17:38 ` David Laight 2026-02-27 17:57 ` Andrew Lunn 2026-02-27 18:15 ` David Laight 2026-02-28 14:56 ` Sean Chang 2026-02-28 17:23 ` Sean Chang 2026-02-28 20:04 ` Andrew Lunn 2026-03-01 15:40 ` Sean Chang 2026-02-27 15:26 ` [PATCH v4 2/2] net: macb: use ethtool_sprintf to fill ethtool stats strings Sean Chang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox