From 6bacd6f401c41e66e6fccce11faa8ad4c0f90a30 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Fri, 16 Apr 2010 16:22:52 -0400 Subject: [PATCH] --- yaml --- r: 192305 b: refs/heads/master c: 987f8dfc9862f2c7b59594089793dedeebf0cf5e h: refs/heads/master i: 192303: f41470196d2383f2bc1517bb7bf9e45f2cebd449 v: v3 --- [refs] | 2 +- trunk/fs/nfs/inode.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 3d1a8a0b3e09..6376dd82e206 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0ab64e0e147e45c07e33d344401cf898a6c181c0 +refs/heads/master: 987f8dfc9862f2c7b59594089793dedeebf0cf5e diff --git a/trunk/fs/nfs/inode.c b/trunk/fs/nfs/inode.c index e64867eec895..2fe6657a5048 100644 --- a/trunk/fs/nfs/inode.c +++ b/trunk/fs/nfs/inode.c @@ -393,8 +393,8 @@ int nfs_setattr(struct dentry *dentry, struct iattr *attr) { struct inode *inode = dentry->d_inode; - struct nfs_fattr fattr; - int error; + struct nfs_fattr *fattr; + int error = -ENOMEM; nfs_inc_stats(inode, NFSIOS_VFSSETATTR); @@ -417,14 +417,20 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr) filemap_write_and_wait(inode->i_mapping); nfs_wb_all(inode); } + + fattr = nfs_alloc_fattr(); + if (fattr == NULL) + goto out; /* * Return any delegations if we're going to change ACLs */ if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID)) != 0) nfs_inode_return_delegation(inode); - error = NFS_PROTO(inode)->setattr(dentry, &fattr, attr); + error = NFS_PROTO(inode)->setattr(dentry, fattr, attr); if (error == 0) - nfs_refresh_inode(inode, &fattr); + nfs_refresh_inode(inode, fattr); + nfs_free_fattr(fattr); +out: return error; }