]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - lib/llist.c
sparc/sparc64: allocate sys_membarrier system call number
[karo-tx-linux.git] / lib / llist.c
index 0b0e9779d6753b1a3982551afdbb685e0b6a209e..ae5872b1df0c669fc8365ce1754d2a128651a890 100644 (file)
@@ -66,12 +66,12 @@ struct llist_node *llist_del_first(struct llist_head *head)
 {
        struct llist_node *entry, *old_entry, *next;
 
-       entry = head->first;
+       entry = smp_load_acquire(&head->first);
        for (;;) {
                if (entry == NULL)
                        return NULL;
                old_entry = entry;
-               next = entry->next;
+               next = READ_ONCE(entry->next);
                entry = cmpxchg(&head->first, old_entry, next);
                if (entry == old_entry)
                        break;