From: Yupeng Chen Date: Wed, 7 Mar 2018 05:17:21 +0000 (+0800) Subject: msg/async: size of EventCenter::file_events should be greater than fd. X-Git-Tag: v13.0.2~52^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F20764%2Fhead;p=ceph.git msg/async: size of EventCenter::file_events should be greater than fd. 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 --- diff --git a/src/msg/async/Event.cc b/src/msg/async/Event.cc index 9038df29c697..b2a25660b346 100644 --- a/src/msg/async/Event.cc +++ b/src/msg/async/Event.cc @@ -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);