]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
msg/async: size of EventCenter::file_events should be greater than fd.
authorYupeng Chen <chenyupeng-it@360.cn>
Wed, 7 Mar 2018 05:17:21 +0000 (13:17 +0800)
committerYupeng Chen <chenyupeng-it@360.cn>
Wed, 7 Mar 2018 07:14:33 +0000 (15:14 +0800)
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>
src/msg/async/Event.cc

index 9038df29c6973d1e295876f7f99adb4aa454b2d0..b2a25660b34684fa9058f8bbd228805fe7bb6e1e 100644 (file)
@@ -208,7 +208,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);