diff options
Diffstat (limited to 'fs/coda/upcall.c')
| -rw-r--r-- | fs/coda/upcall.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c index 9b1ffaa0572e..f6c6c8adbc01 100644 --- a/fs/coda/upcall.c +++ b/fs/coda/upcall.c @@ -353,7 +353,7 @@ int venus_readlink(struct super_block *sb, struct CodaFid *fid,          char *result;  	insize = max_t(unsigned int, -		     INSIZE(readlink), OUTSIZE(readlink)+ *length + 1); +		     INSIZE(readlink), OUTSIZE(readlink)+ *length);  	UPARG(CODA_READLINK);          inp->coda_readlink.VFid = *fid; @@ -361,8 +361,8 @@ int venus_readlink(struct super_block *sb, struct CodaFid *fid,  	error = coda_upcall(coda_vcp(sb), insize, &outsize, inp);  	if (!error) {  		retlen = outp->coda_readlink.count; -		if ( retlen > *length ) -			retlen = *length; +		if (retlen >= *length) +			retlen = *length - 1;  		*length = retlen;  		result =  (char *)outp + (long)outp->coda_readlink.data;  		memcpy(buffer, result, retlen);  | 
