chiark / gitweb /
journal: add memory barrier before linking in newly created entries
[elogind.git] / src / journal / journal-file.c
index fd2e9ebbbcf1cb0a9d7905714537e35a12f9f328..15a752d507eae8892e92ae7931dd3d562347a28c 100644 (file)
@@ -138,6 +138,9 @@ static int journal_file_refresh_header(JournalFile *f) {
         f->header->boot_id = boot_id;
 
         f->header->state = STATE_ONLINE;
+
+        __sync_synchronize();
+
         return 0;
 }
 
@@ -283,7 +286,7 @@ static int journal_file_map(
 }
 
 static int journal_file_move_to(JournalFile *f, int wt, uint64_t offset, uint64_t size, void **ret) {
-        void *p;
+        void *p = NULL;
         uint64_t delta;
         int r;
         Window *w;
@@ -898,6 +901,8 @@ static int journal_file_link_entry(JournalFile *f, Object *o, uint64_t offset) {
         assert(offset > 0);
         assert(o->object.type == OBJECT_ENTRY);
 
+        __sync_synchronize();
+
         /* Link up the entry itself */
         r = link_entry_into_array(f,
                                   &f->header->entry_array_offset,
@@ -1036,7 +1041,7 @@ static int generic_array_get(JournalFile *f,
                              Object **ret, uint64_t *offset) {
 
         Object *o;
-        uint64_t p, a;
+        uint64_t p = 0, a;
         int r;
 
         assert(f);