]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/pagemap.h
tun, bpf: fix suspicious RCU usage in tun_{attach, detach}_filter
[karo-tx-linux.git] / include / linux / pagemap.h
index 183b15ea052ba1abe1ce8831c99efc323438e284..1ebd65c914220efa86814b7353353381bcb10d08 100644 (file)
@@ -165,7 +165,7 @@ static inline int page_cache_get_speculative(struct page *page)
         * SMP requires.
         */
        VM_BUG_ON_PAGE(page_count(page) == 0, page);
-       atomic_inc(&page->_count);
+       page_ref_inc(page);
 
 #else
        if (unlikely(!get_page_unless_zero(page))) {
@@ -194,10 +194,10 @@ static inline int page_cache_add_speculative(struct page *page, int count)
        VM_BUG_ON(!in_atomic());
 # endif
        VM_BUG_ON_PAGE(page_count(page) == 0, page);
-       atomic_add(count, &page->_count);
+       page_ref_add(page, count);
 
 #else
-       if (unlikely(!atomic_add_unless(&page->_count, count, 0)))
+       if (unlikely(!page_ref_add_unless(page, count, 0)))
                return 0;
 #endif
        VM_BUG_ON_PAGE(PageCompound(page) && page != compound_head(page), page);
@@ -205,19 +205,6 @@ static inline int page_cache_add_speculative(struct page *page, int count)
        return 1;
 }
 
-static inline int page_freeze_refs(struct page *page, int count)
-{
-       return likely(atomic_cmpxchg(&page->_count, count, 0) == count);
-}
-
-static inline void page_unfreeze_refs(struct page *page, int count)
-{
-       VM_BUG_ON_PAGE(page_count(page) != 0, page);
-       VM_BUG_ON(count == 0);
-
-       atomic_set(&page->_count, count);
-}
-
 #ifdef CONFIG_NUMA
 extern struct page *__page_cache_alloc(gfp_t gfp);
 #else