From 39023b5bfc48cea4ab12d432de285956dacc0571 Mon Sep 17 00:00:00 2001 From: Yupeng Chen Date: Wed, 7 Mar 2018 13:17:21 +0800 Subject: [PATCH] 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 --- src/msg/async/Event.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- 2.47.3