Messages in this thread | | | Subject | Re: [PATCH] mm: use mm.arg_lock in get_cmdline() | From | Laurent Dufour <> | Date | Thu, 18 Apr 2019 15:05:21 +0200 |
| |
Le 18/04/2019 à 15:03, Michal Hocko a écrit : > Michal has posted the same patch few days ago http://lkml.kernel.org/r/20190417120347.15397-1-mkoutny@suse.com
Oups, sorry for the noise, I missed it.
> On Thu 18-04-19 14:58:27, Laurent Dufour wrote: >> The commit 88aa7cc688d4 ("mm: introduce arg_lock to protect arg_start|end >> and env_start|end in mm_struct") introduce the spinlock arg_lock to protect >> the arg_* and env_* field of the mm_struct structure. >> >> While reading the code, I found that this new spinlock was not used in >> get_cmdline() to protect access to these fields. >> >> Fixing this even if there is no issue reported yet for this. >> >> Fixes: 88aa7cc688d4 ("mm: introduce arg_lock to protect arg_start|end and env_start|end in mm_struct") >> Cc: Yang Shi <yang.shi@linux.alibaba.com> >> Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com> >> --- >> mm/util.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/mm/util.c b/mm/util.c >> index 05a464929b3e..789760c3028b 100644 >> --- a/mm/util.c >> +++ b/mm/util.c >> @@ -758,12 +758,12 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen) >> if (!mm->arg_end) >> goto out_mm; /* Shh! No looking before we're done */ >> >> - down_read(&mm->mmap_sem); >> + spin_lock(&mm->arg_lock); >> arg_start = mm->arg_start; >> arg_end = mm->arg_end; >> env_start = mm->env_start; >> env_end = mm->env_end; >> - up_read(&mm->mmap_sem); >> + spin_unlock(&mm->arg_lock); >> >> len = arg_end - arg_start; >> >> -- >> 2.21.0 >
| |