Commit 5e9dd852 authored by Jean-Philippe Brucker's avatar Jean-Philippe Brucker Committed by Will Deacon
Browse files

ioeventfd: Always add a new event to the list



With vhost, the USER_POLL flags isn't passed to ioeventfd__add_event,
the function returns early and doesn't add the new event to the
used_ioevents list. As a result ioeventfd__del_event doesn't remove the
KVM event or free the structure. Always add the event to the list.
Signed-off-by: default avatarJean-Philippe Brucker <jean-philippe.brucker@arm.com>
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent bbea6c7a
......@@ -154,18 +154,17 @@ int ioeventfd__add_event(struct ioevent *ioevent, int flags)
goto cleanup;
}
if (!(flags & IOEVENTFD_FLAG_USER_POLL))
return 0;
epoll_event = (struct epoll_event) {
.events = EPOLLIN,
.data.ptr = new_ioevent,
};
r = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, event, &epoll_event);
if (r) {
r = -errno;
goto cleanup;
if (flags & IOEVENTFD_FLAG_USER_POLL) {
epoll_event = (struct epoll_event) {
.events = EPOLLIN,
.data.ptr = new_ioevent,
};
r = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, event, &epoll_event);
if (r) {
r = -errno;
goto cleanup;
}
}
list_add_tail(&new_ioevent->list, &used_ioevents);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment