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>
This commit is contained in:
committed by
Trond Myklebust
parent
7f709a48fa
commit
747c5534c9
@@ -177,6 +177,8 @@ rpc_pipe_release(struct inode *inode, struct file *filp)
|
|||||||
__rpc_purge_upcall(inode, -EPIPE);
|
__rpc_purge_upcall(inode, -EPIPE);
|
||||||
if (rpci->ops->release_pipe)
|
if (rpci->ops->release_pipe)
|
||||||
rpci->ops->release_pipe(inode);
|
rpci->ops->release_pipe(inode);
|
||||||
|
if (!rpci->nreaders && !rpci->nwriters)
|
||||||
|
rpci->ops = NULL;
|
||||||
out:
|
out:
|
||||||
up(&inode->i_sem);
|
up(&inode->i_sem);
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user