diff for duplicates of <20080902132825.23160.35234.stgit@dev.haskins.net> diff --git a/a/1.txt b/N1/1.txt index 57ccadf..096adf9 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -163,3 +163,20 @@ index 345d726..605fcdb 100644 static inline int __read_seqretry(seqlock_t *sl, unsigned iv) { - int ret; +- + smp_rmb(); +- ret = (sl->sequence != iv); +- /* +- * If invalid then serialize with the writer, to make sure we +- * are not livelocking it: +- */ +- if (unlikely(ret)) { +- unsigned long flags; +- spin_lock_irqsave(&sl->lock, flags); +- spin_unlock_irqrestore(&sl->lock, flags); +- } +- return ret; ++ return (sl->sequence != iv); + } + + static __always_inline void __write_seqlock_raw(raw_seqlock_t *sl) diff --git a/a/content_digest b/N1/content_digest index c749172..28b280d 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -176,6 +176,23 @@ " */\n" " static inline int __read_seqretry(seqlock_t *sl, unsigned iv)\n" " {\n" - "-\tint ret;" + "-\tint ret;\n" + "-\n" + " \tsmp_rmb();\n" + "-\tret = (sl->sequence != iv);\n" + "-\t/*\n" + "-\t * If invalid then serialize with the writer, to make sure we\n" + "-\t * are not livelocking it:\n" + "-\t */\n" + "-\tif (unlikely(ret)) {\n" + "-\t\tunsigned long flags;\n" + "-\t\tspin_lock_irqsave(&sl->lock, flags);\n" + "-\t\tspin_unlock_irqrestore(&sl->lock, flags);\n" + "-\t}\n" + "-\treturn ret;\n" + "+\treturn (sl->sequence != iv);\n" + " }\n" + " \n" + static __always_inline void __write_seqlock_raw(raw_seqlock_t *sl) -f76d6d18a93caaf4633aafadf76df22a1e6738a3ac87d87ef4ee241ca7eec5ff +a9571e5f9c62f995f2202178e0e90e642528df68a1693c540d71c61c0ce52e38
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.