diff options
| author | Greg Kroah-Hartman <[email protected]> | 2022-01-30 15:00:39 +0100 | 
|---|---|---|
| committer | Greg Kroah-Hartman <[email protected]> | 2022-01-30 15:00:39 +0100 | 
| commit | 7ab004dbcbee38b8a70798835d3ffcd97a985a5e (patch) | |
| tree | 0caa6cb97801736046823ca785a5ba36bf684ac6 /fs/nfs/callback_xdr.c | |
| parent | 710f8af199ee9d72dd87083edd55c5ee250ee6f4 (diff) | |
| parent | 26291c54e111ff6ba87a164d85d4a4e134b7315c (diff) | |
Merge tag 'v5.17-rc2' into char-misc-next
We need the char/misc fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'fs/nfs/callback_xdr.c')
| -rw-r--r-- | fs/nfs/callback_xdr.c | 18 | 
1 files changed, 9 insertions, 9 deletions
| diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index a67c41ec545f..f90de8043b0f 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c @@ -258,11 +258,9 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,  				void *argp)  {  	struct cb_devicenotifyargs *args = argp; +	uint32_t tmp, n, i;  	__be32 *p;  	__be32 status = 0; -	u32 tmp; -	int n, i; -	args->ndevs = 0;  	/* Num of device notifications */  	p = xdr_inline_decode(xdr, sizeof(uint32_t)); @@ -271,7 +269,7 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,  		goto out;  	}  	n = ntohl(*p++); -	if (n <= 0) +	if (n == 0)  		goto out;  	if (n > ULONG_MAX / sizeof(*args->devs)) {  		status = htonl(NFS4ERR_BADXDR); @@ -330,19 +328,21 @@ __be32 decode_devicenotify_args(struct svc_rqst *rqstp,  			dev->cbd_immediate = 0;  		} -		args->ndevs++; -  		dprintk("%s: type %d layout 0x%x immediate %d\n",  			__func__, dev->cbd_notify_type, dev->cbd_layout_type,  			dev->cbd_immediate);  	} +	args->ndevs = n; +	dprintk("%s: ndevs %d\n", __func__, args->ndevs); +	return 0; +err: +	kfree(args->devs);  out: +	args->devs = NULL; +	args->ndevs = 0;  	dprintk("%s: status %d ndevs %d\n",  		__func__, ntohl(status), args->ndevs);  	return status; -err: -	kfree(args->devs); -	goto out;  }  static __be32 decode_sessionid(struct xdr_stream *xdr, |