Silence clang static analyzer warnings about stored stack addresses

Clang's static analyzer complains that nvs_xdr() and nvs_native()
functions return pointers to stack memory. That is technically true, but
the pointers are stored in stack memory from the caller's stack frame,
are not read by the caller and are deallocated when the caller returns,
so this is harmless. We set the pointers to NULL to silence the
warnings.

Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14612
This commit is contained in:
Richard Yao 2023-03-11 13:17:59 -05:00 committed by Brian Behlendorf
parent 3cb293a6f8
commit 47b994049f
2 changed files with 2 additions and 5 deletions

View File

@ -75,9 +75,6 @@ struct xdr_bytesrec {
void xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size, void xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size,
const enum xdr_op op); const enum xdr_op op);
/* Currently not needed. If needed later, we'll add it to struct xdr_ops */
#define xdr_destroy(xdrs) ((void) 0)
#define xdr_control(xdrs, req, info) \ #define xdr_control(xdrs, req, info) \
(xdrs)->x_ops->xdr_control((xdrs), (req), (info)) (xdrs)->x_ops->xdr_control((xdrs), (req), (info))

View File

@ -2808,7 +2808,7 @@ nvs_native_create(nvstream_t *nvs, nvs_native_t *native, char *buf,
static void static void
nvs_native_destroy(nvstream_t *nvs) nvs_native_destroy(nvstream_t *nvs)
{ {
(void) nvs; nvs->nvs_private = NULL;
} }
static int static int
@ -3189,7 +3189,7 @@ nvs_xdr_destroy(nvstream_t *nvs)
switch (nvs->nvs_op) { switch (nvs->nvs_op) {
case NVS_OP_ENCODE: case NVS_OP_ENCODE:
case NVS_OP_DECODE: case NVS_OP_DECODE:
xdr_destroy((XDR *)nvs->nvs_private); nvs->nvs_private = NULL;
break; break;
default: default:
break; break;