aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/coda/upcall.c6
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,
353 char *result; 353 char *result;
354 354
355 insize = max_t(unsigned int, 355 insize = max_t(unsigned int,
356 INSIZE(readlink), OUTSIZE(readlink)+ *length + 1); 356 INSIZE(readlink), OUTSIZE(readlink)+ *length);
357 UPARG(CODA_READLINK); 357 UPARG(CODA_READLINK);
358 358
359 inp->coda_readlink.VFid = *fid; 359 inp->coda_readlink.VFid = *fid;
@@ -361,8 +361,8 @@ int venus_readlink(struct super_block *sb, struct CodaFid *fid,
361 error = coda_upcall(coda_vcp(sb), insize, &outsize, inp); 361 error = coda_upcall(coda_vcp(sb), insize, &outsize, inp);
362 if (!error) { 362 if (!error) {
363 retlen = outp->coda_readlink.count; 363 retlen = outp->coda_readlink.count;
364 if ( retlen > *length ) 364 if (retlen >= *length)
365 retlen = *length; 365 retlen = *length - 1;
366 *length = retlen; 366 *length = retlen;
367 result = (char *)outp + (long)outp->coda_readlink.data; 367 result = (char *)outp + (long)outp->coda_readlink.data;
368 memcpy(buffer, result, retlen); 368 memcpy(buffer, result, retlen);