[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH uq/master 2/9] event_notifier: remove event_noti
From: |
Avi Kivity |
Subject: |
Re: [Qemu-devel] [PATCH uq/master 2/9] event_notifier: remove event_notifier_test |
Date: |
Thu, 12 Jul 2012 12:10:09 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0 |
On 07/05/2012 06:16 PM, Paolo Bonzini wrote:
> This is broken; since the eventfd is used in nonblocking mode there
> is a race between reading and writing.
>
> diff --git a/event_notifier.c b/event_notifier.c
> index 2b210f4..c339bfe 100644
> --- a/event_notifier.c
> +++ b/event_notifier.c
> @@ -51,18 +51,3 @@ int event_notifier_test_and_clear(EventNotifier *e)
> int r = read(e->fd, &value, sizeof(value));
> return r == sizeof(value);
> }
> -
> -int event_notifier_test(EventNotifier *e)
> -{
> - uint64_t value;
> - int r = read(e->fd, &value, sizeof(value));
> - if (r == sizeof(value)) {
> - /* restore previous value. */
> - int s = write(e->fd, &value, sizeof(value));
> - /* never blocks because we use EFD_SEMAPHORE.
> - * If we didn't we'd get EAGAIN on overflow
> - * and we'd have to write code to ignore it. */
> - assert(s == sizeof(value));
> - }
> - return r == sizeof(value);
> -}
I don't see the race. Mind explaining?
It does however require than a poller be extra careful when reading; and
the function is silly anyway.
--
error compiling committee.c: too many arguments to function
[Qemu-devel] [PATCH uq/master 4/9] ivshmem: use EventNotifier and memory API, Paolo Bonzini, 2012/07/05
[Qemu-devel] [PATCH uq/master 6/9] memory: pass EventNotifier, not eventfd, Paolo Bonzini, 2012/07/05
[Qemu-devel] [PATCH uq/master 5/9] ivshmem: wrap ivshmem_del_eventfd loops with transaction, Paolo Bonzini, 2012/07/05
[Qemu-devel] [PATCH uq/master 8/9] virtio: move common ioeventfd handling out of virtio-pci, Paolo Bonzini, 2012/07/05
[Qemu-devel] [PATCH uq/master 9/9] virtio: move common irqfd handling out of virtio-pci, Paolo Bonzini, 2012/07/05
[Qemu-devel] [PATCH uq/master 7/9] event_notifier: add event_notifier_set_handler, Paolo Bonzini, 2012/07/05
Re: [Qemu-devel] [PATCH uq/master 0/9] remove event_notifier_get_fd from non-KVM code, Avi Kivity, 2012/07/12