mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-26 22:52:13 +00:00
BUG/MINOR: sink: make sure to always properly unmap a file-backed ring
The munmap() call performed on exit was incorrect since it used to apply to the buffer instead of the area, so neither the pointer nor the size were page-aligned. This patches corrects this and also adds a call to msync() since munmap() alone doesn't guarantee that data will be dumped. This should be backported to 2.6.
This commit is contained in:
parent
0f29b34e0a
commit
fb9a4765b7
@ -1392,8 +1392,13 @@ static void sink_deinit()
|
||||
|
||||
list_for_each_entry_safe(sink, sb, &sink_list, sink_list) {
|
||||
if (sink->type == SINK_TYPE_BUFFER) {
|
||||
if (sink->store)
|
||||
munmap(sink->ctx.ring->buf.area, sink->ctx.ring->buf.size);
|
||||
if (sink->store) {
|
||||
size_t size = (sink->ctx.ring->buf.size + 4095UL) & -4096UL;
|
||||
void *area = (sink->ctx.ring->buf.area - sizeof(*sink->ctx.ring));
|
||||
|
||||
msync(area, size, MS_SYNC);
|
||||
munmap(area, size);
|
||||
}
|
||||
else
|
||||
ring_free(sink->ctx.ring);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user