aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2005-10-19 02:19:40 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-19 02:19:40 -0400
commit747c5534c9a6da4aa87e7cdc2209ea98ea27f381 (patch)
tree26b2343b7c941a4fa148f85df844557153971cd9
parent7f709a48fa798cfa0f2f777c8752e12995054f78 (diff)
RPC: stops the release_pipe() funtion from being called twice
This patch stops the release_pipe() funtion from being called twice by invalidating the ops pointer in the rpc_inode when rpc_pipe_release() is called. Signed-off-by: Steve Dickson <steved@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--net/sunrpc/rpc_pipe.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
index ded6c63f11ec..649d609e7d94 100644
--- a/net/sunrpc/rpc_pipe.c
+++ b/net/sunrpc/rpc_pipe.c
@@ -177,6 +177,8 @@ rpc_pipe_release(struct inode *inode, struct file *filp)
177 __rpc_purge_upcall(inode, -EPIPE); 177 __rpc_purge_upcall(inode, -EPIPE);
178 if (rpci->ops->release_pipe) 178 if (rpci->ops->release_pipe)
179 rpci->ops->release_pipe(inode); 179 rpci->ops->release_pipe(inode);
180 if (!rpci->nreaders && !rpci->nwriters)
181 rpci->ops = NULL;
180out: 182out:
181 up(&inode->i_sem); 183 up(&inode->i_sem);
182 return 0; 184 return 0;