diff options
Diffstat (limited to 'mm/swap_state.c')
-rw-r--r-- | mm/swap_state.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/swap_state.c b/mm/swap_state.c index b8035b055129..167cf2dc8a03 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c | |||
@@ -201,7 +201,7 @@ void delete_from_swap_cache(struct page *page) | |||
201 | */ | 201 | */ |
202 | static inline void free_swap_cache(struct page *page) | 202 | static inline void free_swap_cache(struct page *page) |
203 | { | 203 | { |
204 | if (PageSwapCache(page) && !TestSetPageLocked(page)) { | 204 | if (PageSwapCache(page) && trylock_page(page)) { |
205 | remove_exclusive_swap_page(page); | 205 | remove_exclusive_swap_page(page); |
206 | unlock_page(page); | 206 | unlock_page(page); |
207 | } | 207 | } |
@@ -302,9 +302,9 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask, | |||
302 | * re-using the just freed swap entry for an existing page. | 302 | * re-using the just freed swap entry for an existing page. |
303 | * May fail (-ENOMEM) if radix-tree node allocation failed. | 303 | * May fail (-ENOMEM) if radix-tree node allocation failed. |
304 | */ | 304 | */ |
305 | SetPageLocked(new_page); | 305 | set_page_locked(new_page); |
306 | err = add_to_swap_cache(new_page, entry, gfp_mask & GFP_KERNEL); | 306 | err = add_to_swap_cache(new_page, entry, gfp_mask & GFP_KERNEL); |
307 | if (!err) { | 307 | if (likely(!err)) { |
308 | /* | 308 | /* |
309 | * Initiate read into locked page and return. | 309 | * Initiate read into locked page and return. |
310 | */ | 310 | */ |
@@ -312,7 +312,7 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask, | |||
312 | swap_readpage(NULL, new_page); | 312 | swap_readpage(NULL, new_page); |
313 | return new_page; | 313 | return new_page; |
314 | } | 314 | } |
315 | ClearPageLocked(new_page); | 315 | clear_page_locked(new_page); |
316 | swap_free(entry); | 316 | swap_free(entry); |
317 | } while (err != -ENOMEM); | 317 | } while (err != -ENOMEM); |
318 | 318 | ||