vfs/poll: correct the return event if inode has closed

Signed-off-by: chao.an <anchao@xiaomi.com>
This commit is contained in:
chao.an 2021-09-09 11:38:03 +08:00 committed by Xiang Xiao
parent 60d4ee11ee
commit 6dde42d79b

View File

@ -299,7 +299,7 @@ int file_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
FAR struct inode *inode;
int ret = -ENOSYS;
DEBUGASSERT(filep != NULL && filep->f_inode != NULL);
DEBUGASSERT(filep != NULL);
inode = filep->f_inode;
if (inode != NULL)
@ -337,6 +337,13 @@ int file_poll(FAR struct file *filep, FAR struct pollfd *fds, bool setup)
ret = OK;
}
}
else
{
fds->revents |= (POLLERR | POLLHUP);
nxsem_post(fds->sem);
ret = OK;
}
return ret;
}