]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async: size of EventCenter::file_events should be greater than fd. 20867/head
authorYupeng Chen <chenyupeng-it@360.cn>
Wed, 7 Mar 2018 05:17:21 +0000 (13:17 +0800)
committerPrashant D <pdhange@redhat.com>
Tue, 13 Mar 2018 10:53:31 +0000 (06:53 -0400)
When trying to generate a file event from an FD greater than or equal to the size of file_events vector,
make sure that the resized vector can hold the FD safely.

Fixes: http://tracker.ceph.com/issues/23253
Signed-off-by: Yupeng Chen <chenyupeng-it@360.cn>
(cherry picked from commit 39023b5bfc48cea4ab12d432de285956dacc0571)

src/msg/async/Event.cc

index 690a245317ff9b064f80deb885e1226ff18db599..c101022882e863161bcb38337b4887bd9bc7cc5a 100644 (file)
@@ -207,7 +207,7 @@ int EventCenter::create_file_event(int fd, int mask, EventCallbackRef ctxt)
   int r = 0;
   if (fd >= nevent) {
     int new_size = nevent << 2;
-    while (fd > new_size)
+    while (fd >= new_size)
       new_size <<= 2;
     ldout(cct, 20) << __func__ << " event count exceed " << nevent << ", expand to " << new_size << dendl;
     r = driver->resize_events(new_size);