summaryrefslogtreecommitdiffstats
path: root/mm/swapfile.c
diff options
context:
space:
mode:
authorVegard Nossum <vegard.nossum@oracle.com>2017-02-27 17:30:10 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-27 21:43:48 -0500
commit3fce371bfac2be0396ffc1e763600e6c6b1bb52a (patch)
treeda45267ba334ada341aa13d600848299564751ce /mm/swapfile.c
parentf1f1007644ffc8051a4c11427d58b1967ae7b75a (diff)
mm: add new mmget() helper
Apart from adding the helper function itself, the rest of the kernel is converted mechanically using: git grep -l 'atomic_inc.*mm_users' | xargs sed -i 's/atomic_inc(&\(.*\)->mm_users);/mmget\(\1\);/' git grep -l 'atomic_inc.*mm_users' | xargs sed -i 's/atomic_inc(&\(.*\)\.mm_users);/mmget\(\&\1\);/' This is needed for a later patch that hooks into the helper, but might be a worthwhile cleanup on its own. (Michal Hocko provided most of the kerneldoc comment.) Link: http://lkml.kernel.org/r/20161218123229.22952-2-vegard.nossum@oracle.com Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r--mm/swapfile.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 2cac12cc9abe..7a0713b76668 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1671,7 +1671,7 @@ int try_to_unuse(unsigned int type, bool frontswap,
1671 * that. 1671 * that.
1672 */ 1672 */
1673 start_mm = &init_mm; 1673 start_mm = &init_mm;
1674 atomic_inc(&init_mm.mm_users); 1674 mmget(&init_mm);
1675 1675
1676 /* 1676 /*
1677 * Keep on scanning until all entries have gone. Usually, 1677 * Keep on scanning until all entries have gone. Usually,
@@ -1720,7 +1720,7 @@ int try_to_unuse(unsigned int type, bool frontswap,
1720 if (atomic_read(&start_mm->mm_users) == 1) { 1720 if (atomic_read(&start_mm->mm_users) == 1) {
1721 mmput(start_mm); 1721 mmput(start_mm);
1722 start_mm = &init_mm; 1722 start_mm = &init_mm;
1723 atomic_inc(&init_mm.mm_users); 1723 mmget(&init_mm);
1724 } 1724 }
1725 1725
1726 /* 1726 /*
@@ -1757,8 +1757,8 @@ int try_to_unuse(unsigned int type, bool frontswap,
1757 struct mm_struct *prev_mm = start_mm; 1757 struct mm_struct *prev_mm = start_mm;
1758 struct mm_struct *mm; 1758 struct mm_struct *mm;
1759 1759
1760 atomic_inc(&new_start_mm->mm_users); 1760 mmget(new_start_mm);
1761 atomic_inc(&prev_mm->mm_users); 1761 mmget(prev_mm);
1762 spin_lock(&mmlist_lock); 1762 spin_lock(&mmlist_lock);
1763 while (swap_count(*swap_map) && !retval && 1763 while (swap_count(*swap_map) && !retval &&
1764 (p = p->next) != &start_mm->mmlist) { 1764 (p = p->next) != &start_mm->mmlist) {
@@ -1781,7 +1781,7 @@ int try_to_unuse(unsigned int type, bool frontswap,
1781 1781
1782 if (set_start_mm && *swap_map < swcount) { 1782 if (set_start_mm && *swap_map < swcount) {
1783 mmput(new_start_mm); 1783 mmput(new_start_mm);
1784 atomic_inc(&mm->mm_users); 1784 mmget(mm);
1785 new_start_mm = mm; 1785 new_start_mm = mm;
1786 set_start_mm = 0; 1786 set_start_mm = 0;
1787 } 1787 }