include/linux/sunrpc/xdr.h | 9 --- net/sunrpc/xdr.c | 110 ------------------------------------- 2 files changed, 119 deletions(-)
From: "Dr. David Alan Gilbert" <linux@treblig.org>
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@treblig.org>
---
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
--
2.50.1
On Sun, 2025-07-13 at 00:30 +0100, linux@treblig.org wrote: > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > 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@treblig.org> > --- > 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 Reviewed-by: Jeff Layton <jlayton@kernel.org>
On Sun, 2025-07-13 at 00:30 +0100, linux@treblig.org wrote: > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > 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@treblig.org> > --- > 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. -- Trond Myklebust Linux NFS client maintainer, Hammerspace trondmy@kernel.org, trond.myklebust@hammerspace.com
* Trond Myklebust (trondmy@kernel.org) wrote: > On Sun, 2025-07-13 at 00:30 +0100, linux@treblig.org wrote: > > From: "Dr. David Alan Gilbert" <linux@treblig.org> > > > > 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@treblig.org> > > --- > > 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@treblig.org/ Thanks, Dave > -- > Trond Myklebust > Linux NFS client maintainer, Hammerspace > trondmy@kernel.org, trond.myklebust@hammerspace.com -- -----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 |_______/
On Sun, 2025-07-13 at 00:26 +0000, Dr. David Alan Gilbert wrote: > > Any chance you could also look at this old one: > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fall%2F20250218215250.263709-1-linux%40treblig.org%2F&data=05%7C02%7Ctrondmy%40hammerspace.com%7C9bda97d0c5c34041647e08ddc1a3e7c6%7C0d4fed5c3a7046fe9430ece41741f59e%7C0%7C0%7C638879631926208245%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=uQu4kGGvj5UPPwy%2FwdWL7gLQRahh6DucDGunIOwkvg0%3D&reserved=0 Ack... -- Trond Myklebust Linux NFS client maintainer, Hammerspace trondmy@kernel.org, trond.myklebust@hammerspace.com
* Trond Myklebust (trondmy@kernel.org) wrote: > On Sun, 2025-07-13 at 00:26 +0000, Dr. David Alan Gilbert wrote: > > > > Any chance you could also look at this old one: > > > > https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fall%2F20250218215250.263709-1-linux%40treblig.org%2F&data=05%7C02%7Ctrondmy%40hammerspace.com%7C9bda97d0c5c34041647e08ddc1a3e7c6%7C0d4fed5c3a7046fe9430ece41741f59e%7C0%7C0%7C638879631926208245%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=uQu4kGGvj5UPPwy%2FwdWL7gLQRahh6DucDGunIOwkvg0%3D&reserved=0 > > Ack... Thanks! Dave > -- > Trond Myklebust > Linux NFS client maintainer, Hammerspace > trondmy@kernel.org, trond.myklebust@hammerspace.com -- -----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 |_______/
© 2016 - 2025 Red Hat, Inc.