chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
journal: do not leak mmaps on OOM
[elogind.git]
/
src
/
journal
/
mmap-cache.c
diff --git
a/src/journal/mmap-cache.c
b/src/journal/mmap-cache.c
index 7dbbb5ef381b4c6b617441c4a6dae2c74aae9ca3..908562da27a45e922f5ddccfe31de12d0934a98b 100644
(file)
--- a/
src/journal/mmap-cache.c
+++ b/
src/journal/mmap-cache.c
@@
-496,15
+496,15
@@
static int add_mmap(
c = context_add(m, context);
if (!c)
c = context_add(m, context);
if (!c)
-
return -ENOMEM
;
+
goto outofmem
;
f = fd_add(m, fd);
if (!f)
f = fd_add(m, fd);
if (!f)
-
return -ENOMEM
;
+
goto outofmem
;
w = window_add(m);
if (!w)
w = window_add(m);
if (!w)
-
return -ENOMEM
;
+
goto outofmem
;
w->keep_always = keep_always;
w->ptr = d;
w->keep_always = keep_always;
w->ptr = d;
@@
-522,6
+522,10
@@
static int add_mmap(
if (ret)
*ret = (uint8_t*) w->ptr + (offset - w->offset);
return 1;
if (ret)
*ret = (uint8_t*) w->ptr + (offset - w->offset);
return 1;
+
+outofmem:
+ munmap(d, wsize);
+ return -ENOMEM;
}
int mmap_cache_get(
}
int mmap_cache_get(