On Mon, Aug 04, 2025 at 10:01:49AM -0400, Chuck Lever wrote: > On 8/3/25 5:24 PM, Eric Biggers wrote: > > Since the Linux kernel's sprintf() has conversion to hex built-in via > > "%*phN", delete md5_to_hex() and just use that. Also add an explicit > > array bound to the dname parameter of nfs4_make_rec_clidname() to make > > its size clear. No functional change. > > > > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> > > --- > > fs/nfsd/nfs4recover.c | 18 ++---------------- > > 1 file changed, 2 insertions(+), 16 deletions(-) > > > > diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c > > index 2231192ec33f5..54f5e5392ef9d 100644 > > --- a/fs/nfsd/nfs4recover.c > > +++ b/fs/nfsd/nfs4recover.c > > @@ -90,26 +90,12 @@ static void > > nfs4_reset_creds(const struct cred *original) > > { > > put_cred(revert_creds(original)); > > } > > > > -static void > > -md5_to_hex(char *out, char *md5) > > -{ > > - int i; > > - > > - for (i=0; i<16; i++) { > > - unsigned char c = md5[i]; > > - > > - *out++ = '0' + ((c&0xf0)>>4) + (c>=0xa0)*('a'-'9'-1); > > - *out++ = '0' + (c&0x0f) + ((c&0x0f)>=0x0a)*('a'-'9'-1); > > - } > > - *out = '\0'; > > -} > > - > > static int > > -nfs4_make_rec_clidname(char *dname, const struct xdr_netobj *clname) > > +nfs4_make_rec_clidname(char dname[HEXDIR_LEN], const struct xdr_netobj *clname) > > { > > struct xdr_netobj cksum; > > struct crypto_shash *tfm; > > int status; > > > > @@ -131,11 +117,11 @@ nfs4_make_rec_clidname(char *dname, const struct xdr_netobj *clname) > > status = crypto_shash_tfm_digest(tfm, clname->data, clname->len, > > cksum.data); > > if (status) > > goto out; > > > > - md5_to_hex(dname, cksum.data); > > + sprintf(dname, "%*phN", 16, cksum.data); > > Hello Eric, > > Can the raw "16" be replaced with "HEXDIR_LEN / 2" ? > > > > status = 0; > > out: > > kfree(cksum.data); > > crypto_free_shash(tfm); > > > > base-commit: 186f3edfdd41f2ae87fc40a9ccba52a3bf930994 It's the same 16 as was there before. It really should be MD5_DIGEST_SIZE, but there are a few more things to clean up regarding that. I didn't want to bloat the scope of this patch. I sent a new series with this patch unchanged, but the digest size stuff cleaned up in another patch. - Eric