]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/async/EventKqueue.cc: fix memory leak due to realloc error
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Thu, 12 Apr 2018 18:31:04 +0000 (20:31 +0200)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Fri, 13 Apr 2018 22:13:18 +0000 (00:13 +0200)
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/msg/async/EventKqueue.cc

index fd78718848227ee11c8fc5144640671632fe7a3a..cc609cc76bad135732de9b566368b3a19af00b58 100644 (file)
@@ -199,13 +199,14 @@ int KqueueDriver::resize_events(int newsize)
   ldout(cct,30) << __func__ << " kqfd = " << kqfd << "newsize = " << newsize 
                 << dendl;
   if(newsize > sav_max) {
-    sav_events = (struct SaveEvent*)realloc( sav_events, 
-                    sizeof(struct SaveEvent)*newsize);
-    if (!sav_events) {
+    void *_realloc = NULL;
+    if ((_realloc = realloc(sav_events, sizeof(struct SaveEvent)*newsize)) == NULL) {
       lderr(cct) << __func__ << " unable to realloc memory: "
                              << cpp_strerror(errno) << dendl;
+      free(sav_events);
       return -ENOMEM;
     }
+    sav_events = (struct SaveEvent*)_realloc;
     memset(&sav_events[size], 0, sizeof(struct SaveEvent)*(newsize-sav_max));
     sav_max = newsize;
   }