]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/shmem.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / mm / shmem.c
index 1c702f6f1241fadb04e83ac4e1c0aecab4d7de4b..32f6763f16fb82ad7068c4d73479a96583f4ef15 100644 (file)
@@ -332,10 +332,14 @@ repeat:
                if (unlikely(!page))
                        continue;
                if (radix_tree_exception(page)) {
-                       if (radix_tree_exceptional_entry(page))
-                               goto export;
-                       /* radix_tree_deref_retry(page) */
-                       goto restart;
+                       if (radix_tree_deref_retry(page))
+                               goto restart;
+                       /*
+                        * Otherwise, we must be storing a swap entry
+                        * here as an exceptional entry: so return it
+                        * without attempting to raise page count.
+                        */
+                       goto export;
                }
                if (!page_cache_get_speculative(page))
                        goto repeat;