aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorJeff Layton <jeff.layton@primarydata.com>2015-07-11 06:43:01 -0400
committerJeff Layton <jeff.layton@primarydata.com>2015-07-13 06:29:11 -0400
commited056764271e71004b3118619de1ebfefb2acf6b (patch)
tree2726472653741a7bd1513373e0871c5fdf65a10e /fs
parentb9243b5a5d2da4eb0a54950f4e2d6272863b48be (diff)
Revert "nfs: take extra reference to fl->fl_file when running a LOCKU operation"
This reverts commit db2efec0caba4f81a22d95a34da640b86c313c8e. William reported that he was seeing instability with this patch, which is likely due to the fact that it can cause the kernel to take a new reference to a filp after the last reference has already been put. Revert this patch for now, as we'll need to fix this in another way. Cc: stable@vger.kernel.org Reported-by: William Dauchy <william@gandi.net> Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> Reviewed-by: "J. Bruce Fields" <bfields@fieldses.org> Tested-by: "J. Bruce Fields" <bfields@fieldses.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/nfs4proc.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 6f228b5af819..60be01f69b84 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5484,7 +5484,6 @@ static struct nfs4_unlockdata *nfs4_alloc_unlockdata(struct file_lock *fl,
5484 atomic_inc(&lsp->ls_count); 5484 atomic_inc(&lsp->ls_count);
5485 /* Ensure we don't close file until we're done freeing locks! */ 5485 /* Ensure we don't close file until we're done freeing locks! */
5486 p->ctx = get_nfs_open_context(ctx); 5486 p->ctx = get_nfs_open_context(ctx);
5487 get_file(fl->fl_file);
5488 memcpy(&p->fl, fl, sizeof(p->fl)); 5487 memcpy(&p->fl, fl, sizeof(p->fl));
5489 p->server = NFS_SERVER(inode); 5488 p->server = NFS_SERVER(inode);
5490 return p; 5489 return p;
@@ -5496,7 +5495,6 @@ static void nfs4_locku_release_calldata(void *data)
5496 nfs_free_seqid(calldata->arg.seqid); 5495 nfs_free_seqid(calldata->arg.seqid);
5497 nfs4_put_lock_state(calldata->lsp); 5496 nfs4_put_lock_state(calldata->lsp);
5498 put_nfs_open_context(calldata->ctx); 5497 put_nfs_open_context(calldata->ctx);
5499 fput(calldata->fl.fl_file);
5500 kfree(calldata); 5498 kfree(calldata);
5501} 5499}
5502 5500