]> www.infradead.org Git - users/hch/misc.git/commitdiff
sunrpc: Change ret code of xdr_stream_decode_opaque_fixed
authorSergey Bashirov <sergeybashirov@gmail.com>
Fri, 18 Jul 2025 08:09:56 +0000 (11:09 +0300)
committerChuck Lever <chuck.lever@oracle.com>
Sun, 21 Sep 2025 23:24:50 +0000 (19:24 -0400)
Since the opaque is fixed in size, the caller already knows how many
bytes were decoded, on success. Thus, xdr_stream_decode_opaque_fixed()
doesn't need to return that value. And, xdr_stream_decode_u32 and _u64
both return zero on success.

This patch simplifies the caller's error checking to avoid potential
integer promotion issues.

Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Sergey Bashirov <sergeybashirov@gmail.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/xdr.h
tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/fixed_length_opaque.j2

index 8a9ec617cf666b947cb8377a3e60e05d1c4b395e..8d354015d76244ea4bec2a59a70e3d07cc8f7483 100644 (file)
@@ -721,7 +721,7 @@ xdr_stream_decode_u64(struct xdr_stream *xdr, __u64 *ptr)
  * @len: size of buffer pointed to by @ptr
  *
  * Return values:
- *   On success, returns size of object stored in @ptr
+ *   %0 on success
  *   %-EBADMSG on XDR buffer overflow
  */
 static inline ssize_t
@@ -732,7 +732,7 @@ xdr_stream_decode_opaque_fixed(struct xdr_stream *xdr, void *ptr, size_t len)
        if (unlikely(!p))
                return -EBADMSG;
        xdr_decode_opaque_fixed(p, ptr, len);
-       return len;
+       return 0;
 }
 
 /**
index 8b4ff08c49e5e9c11a2aacc2ce04f0440431da73..bdc7bd24ffb13335714a5171d15a934e80630f80 100644 (file)
@@ -13,5 +13,5 @@ xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr
 {% if annotate %}
        /* (fixed-length opaque) */
 {% endif %}
-       return xdr_stream_decode_opaque_fixed(xdr, ptr, {{ size }}) >= 0;
+       return xdr_stream_decode_opaque_fixed(xdr, ptr, {{ size }}) == 0;
 };