Merge pull request #15557 from poettering/journal-zero-fix
journal: deal better with reading from zeroed out journal mmaps
This commit is contained in:
@@ -585,4 +585,17 @@ static inline int __coverity_check_and_return__(int condition) {
|
||||
DEFINE_PUBLIC_TRIVIAL_REF_FUNC(type, name); \
|
||||
DEFINE_PUBLIC_TRIVIAL_UNREF_FUNC(type, name, free_func);
|
||||
|
||||
/* A macro to force copying of a variable from memory. This is useful whenever we want to read something from
|
||||
* memory and want to make sure the compiler won't optimize away the destination variable for us. It's not
|
||||
* supposed to be a full CPU memory barrier, i.e. CPU is still allowed to reorder the reads, but it is not
|
||||
* allowed to remove our local copies of the variables. We want this to work for unaligned memory, hence
|
||||
* memcpy() is great for our purposes. */
|
||||
#define READ_NOW(x) \
|
||||
({ \
|
||||
typeof(x) _copy; \
|
||||
memcpy(&_copy, &(x), sizeof(_copy)); \
|
||||
asm volatile ("" : : : "memory"); \
|
||||
_copy; \
|
||||
})
|
||||
|
||||
#include "log.h"
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
size_t page_size(void) _pure_;
|
||||
#define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
|
||||
#define PAGE_ALIGN_DOWN(l) (l & ~(page_size() - 1))
|
||||
#define PAGE_ALIGN_DOWN(l) ((l) & ~(page_size() - 1))
|
||||
|
||||
/* Normal memcpy requires src to be nonnull. We do nothing if n is 0. */
|
||||
static inline void memcpy_safe(void *dst, const void *src, size_t n) {
|
||||
|
||||
Reference in New Issue
Block a user