All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>,
	Peter Zijlstra <peterz@infradead.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Anton Arapov <anton@redhat.com>, Frank Eigler <fche@redhat.com>,
	Josh Stone <jistone@redhat.com>,
	"Suzuki K. Poulose" <suzuki@in.ibm.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] uprobes: Fold xol_alloc_area() into get_xol_area()
Date: Tue, 8 Jan 2013 17:25:41 +0530	[thread overview]
Message-ID: <20130108115541.GE1325@linux.vnet.ibm.com> (raw)
In-Reply-To: <20121231175216.GA32091@redhat.com>

* Oleg Nesterov <oleg@redhat.com> [2012-12-31 18:52:16]:

> Currently only xol_get_insn_slot() does get_xol_area() + xol_alloc_area(),
> but this will have more users and we do not want to copy-and-paste this
> code. This patch simply moves xol_alloc_area() into get_xol_area() to
> simplify the current and future code.
> 
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>

Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>

> ---
>  kernel/events/uprobes.c |   38 ++++++++++++++++----------------------
>  1 files changed, 16 insertions(+), 22 deletions(-)
> 
> diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
> index 1456f7d..ef81162 100644
> --- a/kernel/events/uprobes.c
> +++ b/kernel/events/uprobes.c
> @@ -1070,27 +1070,21 @@ static int xol_add_vma(struct xol_area *area)
>  	return ret;
>  }
> 
> -static struct xol_area *get_xol_area(struct mm_struct *mm)
> -{
> -	struct xol_area *area;
> -
> -	area = mm->uprobes_state.xol_area;
> -	smp_read_barrier_depends();	/* pairs with wmb in xol_add_vma() */
> -
> -	return area;
> -}
> -
>  /*
> - * xol_alloc_area - Allocate process's xol_area.
> - * This area will be used for storing instructions for execution out of
> - * line.
> + * get_alloc_area - Allocate process's xol_area if necessary.
> + * This area will be used for storing instructions for execution out of line.
>   *
>   * Returns the allocated area or NULL.
>   */
> -static struct xol_area *xol_alloc_area(void)
> +static struct xol_area *get_xol_area(void)
>  {
> +	struct mm_struct *mm = current->mm;
>  	struct xol_area *area;
> 
> +	area = mm->uprobes_state.xol_area;
> +	if (area)
> +		goto ret;
> +
>  	area = kzalloc(sizeof(*area), GFP_KERNEL);
>  	if (unlikely(!area))
>  		goto out;
> @@ -1113,7 +1107,10 @@ static struct xol_area *xol_alloc_area(void)
>   free_area:
>  	kfree(area);
>   out:
> -	return get_xol_area(current->mm);
> +	area = mm->uprobes_state.xol_area;
> + ret:
> +	smp_read_barrier_depends();     /* pairs with wmb in xol_add_vma() */
> +	return area;
>  }
> 
>  /*
> @@ -1189,14 +1186,11 @@ static unsigned long xol_get_insn_slot(struct uprobe *uprobe, unsigned long slot
>  	unsigned long offset;
>  	void *vaddr;
> 
> -	area = get_xol_area(current->mm);
> -	if (!area) {
> -		area = xol_alloc_area();
> -		if (!area)
> -			return 0;
> -	}
> -	current->utask->xol_vaddr = xol_take_insn_slot(area);
> +	area = get_xol_area();
> +	if (!area)
> +		return 0;
> 
> +	current->utask->xol_vaddr = xol_take_insn_slot(area);
>  	/*
>  	 * Initialize the slot if xol_vaddr points to valid
>  	 * instruction slot.
> -- 
> 1.5.5.1
> 


  reply	other threads:[~2013-01-08 11:56 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-31 17:51 [PATCH 0/7] uprobes: alloc utask/xol_area cleanups and minor fix Oleg Nesterov
2012-12-31 17:52 ` [PATCH 1/7] uprobes: Move alloc_page() from xol_add_vma() to xol_alloc_area() Oleg Nesterov
2013-01-07  9:16   ` Anton Arapov
2013-01-07 16:11     ` Oleg Nesterov
2013-01-08 11:46   ` Srikar Dronamraju
2013-01-08 17:58     ` Oleg Nesterov
2013-01-09 17:44       ` Srikar Dronamraju
2012-12-31 17:52 ` [PATCH 2/7] uprobes: Fold xol_alloc_area() into get_xol_area() Oleg Nesterov
2013-01-08 11:55   ` Srikar Dronamraju [this message]
2013-01-09 10:16   ` Anton Arapov
2013-01-09 15:51     ` Oleg Nesterov
2012-12-31 17:52 ` [PATCH 3/7] uprobes: Turn add_utask() into get_utask() Oleg Nesterov
2013-01-08 11:57   ` Srikar Dronamraju
2012-12-31 17:52 ` [PATCH 4/7] uprobes: Do not play with utask in xol_get_insn_slot() Oleg Nesterov
2013-01-08 12:07   ` Srikar Dronamraju
2012-12-31 17:52 ` [PATCH 5/7] uprobes: Fix utask->xol_vaddr leak in pre_ssout() Oleg Nesterov
2013-01-08 12:13   ` Srikar Dronamraju
2013-01-08 17:44     ` Oleg Nesterov
2013-01-10 12:48       ` Srikar Dronamraju
2012-12-31 17:52 ` [PATCH 6/7] uprobes: Do not allocate current->utask unnecessary Oleg Nesterov
2013-01-08 12:20   ` Srikar Dronamraju
2013-01-08 18:13     ` Oleg Nesterov
2012-12-31 17:52 ` [PATCH 7/7] uprobes: Kill the bogus IS_ERR_VALUE(xol_vaddr) check Oleg Nesterov
2013-01-08 12:23   ` Srikar Dronamraju
2013-01-09 10:25 ` [PATCH 0/7] uprobes: alloc utask/xol_area cleanups and minor fix Anton Arapov

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=20130108115541.GE1325@linux.vnet.ibm.com \
    --to=srikar@linux.vnet.ibm.com \
    --cc=ananth@in.ibm.com \
    --cc=anton@redhat.com \
    --cc=fche@redhat.com \
    --cc=jistone@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=suzuki@in.ibm.com \
    /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.