* Trond Myklebust (trondmy@xxxxxxxxxx) wrote: > On Sun, 2025-07-13 at 00:30 +0100, linux@xxxxxxxxxxx wrote: > > From: "Dr. David Alan Gilbert" <linux@xxxxxxxxxxx> > > > > Remove a bunch of unused xdr_*decode* functions: > > The last use of xdr_decode_netobj() was removed in 2021 by: > > commit 7cf96b6d0104 ("lockd: Update the NLMv4 SHARE arguments decoder > > to > > use struct xdr_stream") > > The last use of xdr_decode_string_inplace() was removed in 2021 by: > > commit 3049e974a7c7 ("lockd: Update the NLMv4 FREE_ALL arguments > > decoder > > to use struct xdr_stream") > > The last use of xdr_stream_decode_opaque() was removed in 2024 by: > > commit fed8a17c61ff ("xdrgen: typedefs should use the built-in string > > and > > opaque functions") > > > > The functions xdr_stream_decode_string() and > > xdr_stream_decode_opaque_dup() were both added in 2018 by the > > commit 0e779aa70308 ("SUNRPC: Add helpers for decoding opaque and > > string > > types") > > but never used. > > > > Remove them. > > > > Signed-off-by: Dr. David Alan Gilbert <linux@xxxxxxxxxxx> > > --- > > include/linux/sunrpc/xdr.h | 9 --- > > net/sunrpc/xdr.c | 110 ----------------------------------- > > -- > > 2 files changed, 119 deletions(-) > > > > diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h > > index a2ab813a9800..e370886632b0 100644 > > --- a/include/linux/sunrpc/xdr.h > > +++ b/include/linux/sunrpc/xdr.h > > @@ -128,10 +128,7 @@ xdr_buf_init(struct xdr_buf *buf, void *start, > > size_t len) > > __be32 *xdr_encode_opaque_fixed(__be32 *p, const void *ptr, unsigned > > int len); > > __be32 *xdr_encode_opaque(__be32 *p, const void *ptr, unsigned int > > len); > > __be32 *xdr_encode_string(__be32 *p, const char *s); > > -__be32 *xdr_decode_string_inplace(__be32 *p, char **sp, unsigned int > > *lenp, > > - unsigned int maxlen); > > __be32 *xdr_encode_netobj(__be32 *p, const struct xdr_netobj *); > > -__be32 *xdr_decode_netobj(__be32 *p, struct xdr_netobj *); > > > > void xdr_inline_pages(struct xdr_buf *, unsigned int, > > struct page **, unsigned int, unsigned > > int); > > @@ -341,12 +338,6 @@ xdr_stream_remaining(const struct xdr_stream > > *xdr) > > return xdr->nwords << 2; > > } > > > > -ssize_t xdr_stream_decode_opaque(struct xdr_stream *xdr, void *ptr, > > - size_t size); > > -ssize_t xdr_stream_decode_opaque_dup(struct xdr_stream *xdr, void > > **ptr, > > - size_t maxlen, gfp_t gfp_flags); > > -ssize_t xdr_stream_decode_string(struct xdr_stream *xdr, char *str, > > - size_t size); > > ssize_t xdr_stream_decode_string_dup(struct xdr_stream *xdr, char > > **str, > > size_t maxlen, gfp_t gfp_flags); > > ssize_t xdr_stream_decode_opaque_auth(struct xdr_stream *xdr, u32 > > *flavor, > > diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c > > index 2ea00e354ba6..a0aae1144212 100644 > > --- a/net/sunrpc/xdr.c > > +++ b/net/sunrpc/xdr.c > > @@ -37,19 +37,6 @@ xdr_encode_netobj(__be32 *p, const struct > > xdr_netobj *obj) > > } > > EXPORT_SYMBOL_GPL(xdr_encode_netobj); > > > > -__be32 * > > -xdr_decode_netobj(__be32 *p, struct xdr_netobj *obj) > > -{ > > - unsigned int len; > > - > > - if ((len = be32_to_cpu(*p++)) > XDR_MAX_NETOBJ) > > - return NULL; > > - obj->len = len; > > - obj->data = (u8 *) p; > > - return p + XDR_QUADLEN(len); > > -} > > -EXPORT_SYMBOL_GPL(xdr_decode_netobj); > > - > > /** > > * xdr_encode_opaque_fixed - Encode fixed length opaque data > > * @p: pointer to current position in XDR buffer. > > @@ -102,21 +89,6 @@ xdr_encode_string(__be32 *p, const char *string) > > } > > EXPORT_SYMBOL_GPL(xdr_encode_string); > > > > -__be32 * > > -xdr_decode_string_inplace(__be32 *p, char **sp, > > - unsigned int *lenp, unsigned int maxlen) > > -{ > > - u32 len; > > - > > - len = be32_to_cpu(*p++); > > - if (len > maxlen) > > - return NULL; > > - *lenp = len; > > - *sp = (char *) p; > > - return p + XDR_QUADLEN(len); > > -} > > -EXPORT_SYMBOL_GPL(xdr_decode_string_inplace); > > - > > /** > > * xdr_terminate_string - '\0'-terminate a string residing in an > > xdr_buf > > * @buf: XDR buffer where string resides > > @@ -2247,88 +2219,6 @@ int xdr_process_buf(const struct xdr_buf *buf, > > unsigned int offset, > > } > > EXPORT_SYMBOL_GPL(xdr_process_buf); > > > > -/** > > - * xdr_stream_decode_opaque - Decode variable length opaque > > - * @xdr: pointer to xdr_stream > > - * @ptr: location to store opaque data > > - * @size: size of storage buffer @ptr > > - * > > - * Return values: > > - * On success, returns size of object stored in *@ptr > > - * %-EBADMSG on XDR buffer overflow > > - * %-EMSGSIZE on overflow of storage buffer @ptr > > - */ > > -ssize_t xdr_stream_decode_opaque(struct xdr_stream *xdr, void *ptr, > > size_t size) > > -{ > > - ssize_t ret; > > - void *p; > > - > > - ret = xdr_stream_decode_opaque_inline(xdr, &p, size); > > - if (ret <= 0) > > - return ret; > > - memcpy(ptr, p, ret); > > - return ret; > > -} > > -EXPORT_SYMBOL_GPL(xdr_stream_decode_opaque); > > - > > -/** > > - * xdr_stream_decode_opaque_dup - Decode and duplicate variable > > length opaque > > - * @xdr: pointer to xdr_stream > > - * @ptr: location to store pointer to opaque data > > - * @maxlen: maximum acceptable object size > > - * @gfp_flags: GFP mask to use > > - * > > - * Return values: > > - * On success, returns size of object stored in *@ptr > > - * %-EBADMSG on XDR buffer overflow > > - * %-EMSGSIZE if the size of the object would exceed @maxlen > > - * %-ENOMEM on memory allocation failure > > - */ > > -ssize_t xdr_stream_decode_opaque_dup(struct xdr_stream *xdr, void > > **ptr, > > - size_t maxlen, gfp_t gfp_flags) > > -{ > > - ssize_t ret; > > - void *p; > > - > > - ret = xdr_stream_decode_opaque_inline(xdr, &p, maxlen); > > - if (ret > 0) { > > - *ptr = kmemdup(p, ret, gfp_flags); > > - if (*ptr != NULL) > > - return ret; > > - ret = -ENOMEM; > > - } > > - *ptr = NULL; > > - return ret; > > -} > > -EXPORT_SYMBOL_GPL(xdr_stream_decode_opaque_dup); > > - > > -/** > > - * xdr_stream_decode_string - Decode variable length string > > - * @xdr: pointer to xdr_stream > > - * @str: location to store string > > - * @size: size of storage buffer @str > > - * > > - * Return values: > > - * On success, returns length of NUL-terminated string stored in > > *@str > > - * %-EBADMSG on XDR buffer overflow > > - * %-EMSGSIZE on overflow of storage buffer @str > > - */ > > -ssize_t xdr_stream_decode_string(struct xdr_stream *xdr, char *str, > > size_t size) > > -{ > > - ssize_t ret; > > - void *p; > > - > > - ret = xdr_stream_decode_opaque_inline(xdr, &p, size); > > - if (ret > 0) { > > - memcpy(str, p, ret); > > - str[ret] = '\0'; > > - return strlen(str); > > - } > > - *str = '\0'; > > - return ret; > > -} > > -EXPORT_SYMBOL_GPL(xdr_stream_decode_string); > > - > > /** > > * xdr_stream_decode_string_dup - Decode and duplicate variable > > length string > > * @xdr: pointer to xdr_stream > > I can pick these up. Thanks for the quick response! Any chance you could also look at this old one: https://lore.kernel.org/all/20250218215250.263709-1-linux@xxxxxxxxxxx/ Thanks, Dave > -- > Trond Myklebust > Linux NFS client maintainer, Hammerspace > trondmy@xxxxxxxxxx, trond.myklebust@xxxxxxxxxxxxxxx -- -----Open up your eyes, open up your mind, open up your code ------- / Dr. David Alan Gilbert | Running GNU/Linux | Happy \ \ dave @ treblig.org | | In Hex / \ _________________________|_____ http://www.treblig.org |_______/