static inline int
nfsd4_commit(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_commit *commit)
{
+ int status;
+
u32 *p = (u32 *)commit->co_verf.data;
*p++ = nfssvc_boot.tv_sec;
*p++ = nfssvc_boot.tv_usec;
- return nfsd_commit(rqstp, current_fh, commit->co_offset, commit->co_count);
+ status = nfsd_commit(rqstp, current_fh, commit->co_offset, commit->co_count);
+ if (status == nfserr_symlink)
+ status = nfserr_inval;
+ return status;
}
static inline int
*p++ = nfssvc_boot.tv_sec;
*p++ = nfssvc_boot.tv_usec;
- return (nfsd_write(rqstp, current_fh, write->wr_offset,
+ status = nfsd_write(rqstp, current_fh, write->wr_offset,
write->wr_vec, write->wr_vlen, write->wr_buflen,
- &write->wr_how_written));
+ &write->wr_how_written);
+ if (status == nfserr_symlink)
+ status = nfserr_inval;
+ return status;
out:
nfs4_unlock_state();
return status;
if ((status = fh_verify(rqstp, current_fh, S_IFREG, 0))) {
printk("NFSD: nfsd4_lockt: fh_verify() failed!\n");
+ if (status == nfserr_symlink)
+ status = nfserr_inval;
goto out;
}
read->rd_offset,
read->rd_iov, read->rd_vlen,
&maxcount);
+ if (nfserr == nfserr_symlink)
+ nfserr = nfserr_inval;
if (nfserr)
return nfserr;
eof = (read->rd_offset + maxcount >= read->rd_fhp->fh_dentry->d_inode->i_size);