mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 11:39:53 +00:00
aio-epoll: Fix use-after-free of node
aio_epoll_update needs the fields in node, so delay the free. Reported-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Fam Zheng <famz@redhat.com> Message-id: 1447655534-13974-1-git-send-email-famz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
02460c3b42
commit
0ed39f3df2
@ -210,6 +210,7 @@ void aio_set_fd_handler(AioContext *ctx,
|
||||
{
|
||||
AioHandler *node;
|
||||
bool is_new = false;
|
||||
bool deleted = false;
|
||||
|
||||
node = find_aio_handler(ctx, fd);
|
||||
|
||||
@ -228,7 +229,7 @@ void aio_set_fd_handler(AioContext *ctx,
|
||||
* releasing the walking_handlers lock.
|
||||
*/
|
||||
QLIST_REMOVE(node, node);
|
||||
g_free(node);
|
||||
deleted = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -253,6 +254,9 @@ void aio_set_fd_handler(AioContext *ctx,
|
||||
|
||||
aio_epoll_update(ctx, node, is_new);
|
||||
aio_notify(ctx);
|
||||
if (deleted) {
|
||||
g_free(node);
|
||||
}
|
||||
}
|
||||
|
||||
void aio_set_event_notifier(AioContext *ctx,
|
||||
|
Loading…
Reference in New Issue
Block a user