rmap: annotate lock context change on page_[un]lock_anon_vma()
The page_lock_anon_vma() conditionally grabs RCU and anon_vma lock but page_unlock_anon_vma() releases them unconditionally. This leads sparse to complain about context imbalance. Annotate them. Signed-off-by: Namhyung Kim <namhyung@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
1b36ba815b
commit
ea4525b600
@@ -230,7 +230,20 @@ int try_to_munlock(struct page *);
|
||||
/*
|
||||
* Called by memory-failure.c to kill processes.
|
||||
*/
|
||||
struct anon_vma *page_lock_anon_vma(struct page *page);
|
||||
struct anon_vma *__page_lock_anon_vma(struct page *page);
|
||||
|
||||
static inline struct anon_vma *page_lock_anon_vma(struct page *page)
|
||||
{
|
||||
struct anon_vma *anon_vma;
|
||||
|
||||
__cond_lock(RCU, anon_vma = __page_lock_anon_vma(page));
|
||||
|
||||
/* (void) is needed to make gcc happy */
|
||||
(void) __cond_lock(&anon_vma->root->lock, anon_vma);
|
||||
|
||||
return anon_vma;
|
||||
}
|
||||
|
||||
void page_unlock_anon_vma(struct anon_vma *anon_vma);
|
||||
int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma);
|
||||
|
||||
|
Reference in New Issue
Block a user