From: Haomai Wang Date: Wed, 27 May 2015 02:48:47 +0000 (+0800) Subject: Event: Avoid potential wakeup leak between set and read X-Git-Tag: v9.0.2~23^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a14b0e147060337200fba78e90d25a4835aaae76;p=ceph.git Event: Avoid potential wakeup leak between set and read Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/Event.cc b/src/msg/async/Event.cc index 4b63209078f0..131d86924ed2 100644 --- a/src/msg/async/Event.cc +++ b/src/msg/async/Event.cc @@ -46,9 +46,10 @@ class C_handle_notify : public EventCallback { C_handle_notify(EventCenter *c): center(c) {} void do_request(int fd_or_id) { char c[256]; - center->already_wakeup.set(0); - int r = read(fd_or_id, c, sizeof(c)); - assert(r > 0); + do { + center->already_wakeup.set(0); + read(fd_or_id, c, sizeof(c)); + } while (center->already_wakeup.read()); } };