All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kirill Tkhai <ktkhai@virtuozzo.com>
To: "Michal Koutný" <mkoutny@suse.com>, gorcunov@gmail.com
Cc: akpm@linux-foundation.org, arunks@codeaurora.org, brgl@bgdev.pl,
	geert+renesas@glider.be, ldufour@linux.ibm.com,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	mguzik@redhat.com, mhocko@kernel.org, rppt@linux.ibm.com,
	vbabka@suse.cz
Subject: Re: [PATCH 3/3] prctl_set_mm: downgrade mmap_sem to read lock
Date: Tue, 30 Apr 2019 11:55:45 +0300	[thread overview]
Message-ID: <af8f7958-06aa-7134-c750-b7a994368e89@virtuozzo.com> (raw)
In-Reply-To: <20190430081844.22597-4-mkoutny@suse.com>

On 30.04.2019 11:18, Michal Koutný wrote:
> Since commit 88aa7cc688d4 ("mm: introduce arg_lock to protect
> arg_start|end and env_start|end in mm_struct") we use arg_lock for
> boundaries modifications. Synchronize prctl_set_mm with this lock and
> keep mmap_sem for reading only (analogous to what we already do in
> prctl_set_mm_map).
> 
> v2: call find_vma without arg_lock held
> 
> CC: Cyrill Gorcunov <gorcunov@gmail.com>
> CC: Laurent Dufour <ldufour@linux.ibm.com>
> Signed-off-by: Michal Koutný <mkoutny@suse.com>
> ---
>  kernel/sys.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/sys.c b/kernel/sys.c
> index e1acb444d7b0..641fda756575 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
> @@ -2123,9 +2123,14 @@ static int prctl_set_mm(int opt, unsigned long addr,
>  
>  	error = -EINVAL;
>  
> -	down_write(&mm->mmap_sem);
> +	/*
> +	 * arg_lock protects concurent updates of arg boundaries, we need mmap_sem for
> +	 * a) concurrent sys_brk, b) finding VMA for addr validation.
> +	 */
> +	down_read(&mm->mmap_sem);
>  	vma = find_vma(mm, addr);
>  
> +	spin_lock(&mm->arg_lock);
>  	prctl_map.start_code	= mm->start_code;
>  	prctl_map.end_code	= mm->end_code;
>  	prctl_map.start_data	= mm->start_data;
> @@ -2213,7 +2218,8 @@ static int prctl_set_mm(int opt, unsigned long addr,
>  
>  	error = 0;
>  out:
> -	up_write(&mm->mmap_sem);
> +	spin_unlock(&mm->arg_lock);
> +	up_read(&mm->mmap_sem);
>  	return error;

Hm, shouldn't spin_lock()/spin_unlock() pair go as a fixup to existing code
in a separate patch? 

Without them, the existing code has a problem at least in get_mm_cmdline().

  reply	other threads:[~2019-04-30  8:56 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-17 12:03 [PATCH] mm: get_cmdline use arg_lock instead of mmap_sem Michal Koutný
2019-04-17 13:41 ` Michal Hocko
2019-04-17 14:41   ` Michal Koutný
2019-04-17 14:55     ` Michal Hocko
2019-04-18 13:50       ` [PATCH] prctl_set_mm: downgrade mmap_sem to read lock Michal Koutný
2019-04-18 14:09         ` Cyrill Gorcunov
2019-04-18 14:15         ` Michal Hocko
2019-04-18 14:27         ` Laurent Dufour
2019-04-18 18:23         ` Cyrill Gorcunov
2019-04-30  8:18           ` [PATCH 0/3] Reduce mmap_sem usage for args manipulation Michal Koutný
2019-04-30  8:18             ` [PATCH 1/3] mm: get_cmdline use arg_lock instead of mmap_sem Michal Koutný
2019-04-30  9:09               ` Kirill Tkhai
2019-04-30  9:38                 ` Cyrill Gorcunov
2019-04-30  9:53                   ` Kirill Tkhai
2019-04-30 10:45                     ` Cyrill Gorcunov
2019-04-30 10:56                       ` Michal Koutný
2019-04-30 13:24                         ` Cyrill Gorcunov
2019-04-30  8:18             ` [PATCH 2/3] prctl_set_mm: Refactor checks from validate_prctl_map Michal Koutný
2019-04-30  9:27               ` Kirill Tkhai
2019-04-30  8:18             ` [PATCH 3/3] prctl_set_mm: downgrade mmap_sem to read lock Michal Koutný
2019-04-30  8:55               ` Kirill Tkhai [this message]
2019-04-30  9:08                 ` Cyrill Gorcunov
2019-04-30  9:11                   ` Kirill Tkhai
2019-05-02 12:52                     ` [PATCH v3 0/2] Reduce mmap_sem usage for args manipulation Michal Koutný
2019-05-02 12:52                       ` [PATCH v3 1/2] prctl_set_mm: Refactor checks from validate_prctl_map Michal Koutný
2019-05-02 20:57                         ` Cyrill Gorcunov
2019-05-02 12:52                       ` [PATCH v3 2/2] prctl_set_mm: downgrade mmap_sem to read lock Michal Koutný
2019-05-02 20:57                         ` Cyrill Gorcunov
2019-05-06  9:28                         ` Kirill Tkhai
2019-05-07 17:42                         ` Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=af8f7958-06aa-7134-c750-b7a994368e89@virtuozzo.com \
    --to=ktkhai@virtuozzo.com \
    --cc=akpm@linux-foundation.org \
    --cc=arunks@codeaurora.org \
    --cc=brgl@bgdev.pl \
    --cc=geert+renesas@glider.be \
    --cc=gorcunov@gmail.com \
    --cc=ldufour@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mguzik@redhat.com \
    --cc=mhocko@kernel.org \
    --cc=mkoutny@suse.com \
    --cc=rppt@linux.ibm.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.