mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
sunrpc: rpc_pipe_poll may miss available data in some cases
Pipe messages start out life on a queue on the inode, but when first read they're moved to the filp's private pointer. So it's possible for a poll here to return null even though there's a partially read message available. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
ef338bee3f
commit
eda4f9b799
1 changed files with 1 additions and 1 deletions
|
@ -280,7 +280,7 @@ rpc_pipe_poll(struct file *filp, struct poll_table_struct *wait)
|
|||
mask = POLLOUT | POLLWRNORM;
|
||||
if (rpci->ops == NULL)
|
||||
mask |= POLLERR | POLLHUP;
|
||||
if (!list_empty(&rpci->pipe))
|
||||
if (filp->private_data || !list_empty(&rpci->pipe))
|
||||
mask |= POLLIN | POLLRDNORM;
|
||||
return mask;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue