From f21b08d0e0982051a637c582c7d4e6d1be99e3d4 Mon Sep 17 00:00:00 2001 From: "J. Bruce Fields" Date: Mon, 15 Jun 2009 19:07:13 -0700 Subject: [PATCH] --- yaml --- r: 153695 b: refs/heads/master c: e4636d535e32768c8c500641ddb144f56e3dc5c0 h: refs/heads/master i: 153693: da1940558c0bf66f3300487e2cca3ebde1819a3d 153691: 3a2eb47f48a9032a70a2b884a83e875c94208c6e 153687: c2842f325b697256efb1e2ef634dd1a3d5eedd18 153679: ac59a8e252d0baa1ae937b861206b0e57a38d6c4 153663: ee0285596f9c062b4aa7c30308fa0b069df14893 v: v3 --- [refs] | 2 +- trunk/fs/nfsd/vfs.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 7cd65a5f189c..f236f2173ee4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d911df7b8d44de41661363a4e29ee710180ba025 +refs/heads/master: e4636d535e32768c8c500641ddb144f56e3dc5c0 diff --git a/trunk/fs/nfsd/vfs.c b/trunk/fs/nfsd/vfs.c index 6ad76a4cfc01..1cf70616a11e 100644 --- a/trunk/fs/nfsd/vfs.c +++ b/trunk/fs/nfsd/vfs.c @@ -1053,19 +1053,20 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, oldfs = get_fs(); set_fs(KERNEL_DS); host_err = vfs_writev(file, (struct iovec __user *)vec, vlen, &offset); set_fs(oldfs); - if (host_err >= 0) { - *cnt = host_err; - nfsdstats.io_write += host_err; - fsnotify_modify(file->f_path.dentry); - } + if (host_err < 0) + goto out_nfserr; + *cnt = host_err; + nfsdstats.io_write += host_err; + fsnotify_modify(file->f_path.dentry); /* clear setuid/setgid flag after write */ - if (host_err >= 0 && (inode->i_mode & (S_ISUID | S_ISGID))) + if (inode->i_mode & (S_ISUID | S_ISGID)) kill_suid(dentry); - if (host_err >= 0 && stable && use_wgather) + if (stable && use_wgather) host_err = wait_for_concurrent_writes(file); +out_nfserr: dprintk("nfsd: write complete host_err=%d\n", host_err); if (host_err >= 0) err = 0;