mm: use mmget_not_zero() helper
We already have the helper, we can convert the rest of the kernel mechanically using: git grep -l 'atomic_inc_not_zero.*mm_users' | xargs sed -i 's/atomic_inc_not_zero(&\(.*\)->mm_users)/mmget_not_zero\(\1\)/' This is needed for a later patch that hooks into the helper, but might be a worthwhile cleanup on its own. Link: http://lkml.kernel.org/r/20161218123229.22952-3-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>
此提交包含在:
@@ -813,7 +813,7 @@ static ssize_t mem_rw(struct file *file, char __user *buf,
|
||||
return -ENOMEM;
|
||||
|
||||
copied = 0;
|
||||
if (!atomic_inc_not_zero(&mm->mm_users))
|
||||
if (!mmget_not_zero(mm))
|
||||
goto free;
|
||||
|
||||
/* Maybe we should limit FOLL_FORCE to actual ptrace users? */
|
||||
@@ -921,7 +921,7 @@ static ssize_t environ_read(struct file *file, char __user *buf,
|
||||
return -ENOMEM;
|
||||
|
||||
ret = 0;
|
||||
if (!atomic_inc_not_zero(&mm->mm_users))
|
||||
if (!mmget_not_zero(mm))
|
||||
goto free;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
|
@@ -167,7 +167,7 @@ static void *m_start(struct seq_file *m, loff_t *ppos)
|
||||
return ERR_PTR(-ESRCH);
|
||||
|
||||
mm = priv->mm;
|
||||
if (!mm || !atomic_inc_not_zero(&mm->mm_users))
|
||||
if (!mm || !mmget_not_zero(mm))
|
||||
return NULL;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
@@ -1352,7 +1352,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
|
||||
unsigned long end_vaddr;
|
||||
int ret = 0, copied = 0;
|
||||
|
||||
if (!mm || !atomic_inc_not_zero(&mm->mm_users))
|
||||
if (!mm || !mmget_not_zero(mm))
|
||||
goto out;
|
||||
|
||||
ret = -EINVAL;
|
||||
|
@@ -219,7 +219,7 @@ static void *m_start(struct seq_file *m, loff_t *pos)
|
||||
return ERR_PTR(-ESRCH);
|
||||
|
||||
mm = priv->mm;
|
||||
if (!mm || !atomic_inc_not_zero(&mm->mm_users))
|
||||
if (!mm || !mmget_not_zero(mm))
|
||||
return NULL;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
|
新增問題並參考
封鎖使用者