All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Vrabel <david.vrabel@citrix.com>
To: Wei Liu <wei.liu2@citrix.com>
Cc: "konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	"jbeulich@suse.com" <jbeulich@suse.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 03/13] xen: fix evtchn_unbind_from_user
Date: Fri, 1 Feb 2013 11:15:00 +0000	[thread overview]
Message-ID: <510BA3B4.4010104@citrix.com> (raw)
In-Reply-To: <1359643627-29486-4-git-send-email-wei.liu2@citrix.com>

On 31/01/13 14:46, Wei Liu wrote:
> It is possible the port was allocated but the irq was not. Take care of this
> case.

I think the port should be closed when the evtchn_bind_to_user() fails
otherwise the evtchn driver is leaving the event channel in an
inconsistent state.

David

> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> ---
>  drivers/xen/evtchn.c |   12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
> index b1f60a0..d2bbea1 100644
> --- a/drivers/xen/evtchn.c
> +++ b/drivers/xen/evtchn.c
> @@ -277,7 +277,17 @@ static void evtchn_unbind_from_user(struct per_user_data *u, int port)
>  {
>  	int irq = irq_from_evtchn(port);
>  
> -	unbind_from_irqhandler(irq, (void *)(unsigned long)port);
> +	/* It is possible that the port was allocated but the irq was
> +	 * not */
> +	if (irq >= 0) {
> +		unbind_from_irqhandler(irq, (void *)(unsigned long)port);
> +	} else {
> +		struct evtchn_close close;
> +		close.port = port;
> +		if (port != 0 && /* port 0 is never used */
> +		    HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0)
> +			BUG();
> +	}
>  
>  	set_port_user(port, NULL);
>  }

  reply	other threads:[~2013-02-01 11:15 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-31 14:46 [PATCH 00/13] Implement 3-level event channel in Linux Wei Liu
2013-01-31 14:46 ` [PATCH 01/13] xen: fix output of xen_debug_interrupt Wei Liu
2013-02-01 11:06   ` David Vrabel
2013-02-01 13:10     ` Wei Liu
2013-02-01 13:14     ` Wei Liu
2013-01-31 14:46 ` [PATCH 02/13] xen: fix error handling path if xen_allocate_irq_dynamic fails Wei Liu
2013-02-01 11:19   ` David Vrabel
2013-02-01 11:26   ` Ian Campbell
2013-02-01 12:36     ` Wei Liu
2013-02-06 15:49   ` Konrad Rzeszutek Wilk
2013-01-31 14:46 ` [PATCH 03/13] xen: fix evtchn_unbind_from_user Wei Liu
2013-02-01 11:15   ` David Vrabel [this message]
2013-02-01 12:33     ` Wei Liu
2013-02-05 16:57       ` Konrad Rzeszutek Wilk
2013-01-31 14:46 ` [PATCH 04/13] xen: sync public headers Wei Liu
2013-02-05 17:00   ` Konrad Rzeszutek Wilk
2013-02-05 17:23     ` Wei Liu
2013-02-06 16:57       ` Konrad Rzeszutek Wilk
2013-02-07  9:22         ` Paul Durrant
2013-02-07 11:57           ` Wei Liu
2013-02-08 16:06             ` Paul Durrant
2013-02-08 16:22               ` Ian Campbell
2013-02-08 16:36                 ` Paul Durrant
2013-02-08 16:49                   ` Tim Deegan
2013-02-08 16:56                     ` Jan Beulich
2013-02-08 16:59                     ` Ian Campbell
2013-02-08 17:06                       ` Tim Deegan
2013-02-08 17:09                         ` Ian Campbell
2013-02-08 19:45                           ` David Vrabel
2013-02-08 19:55                             ` Ian Campbell
2013-02-08 17:07                     ` Paul Durrant
2013-02-08 16:37                 ` Wei Liu
2013-02-08 16:40                   ` Ian Campbell
2013-02-07 12:23           ` Ian Campbell
2013-01-31 14:46 ` [PATCH 05/13] xen: introduce test_and_set_mask Wei Liu
2013-02-01 11:35   ` David Vrabel
2013-02-01 22:08     ` Ian Campbell
2013-01-31 14:47 ` [PATCH 06/13] xen: replace raw bit ops with functions Wei Liu
2013-01-31 14:47 ` [PATCH 07/13] xen: generalized event channel operations Wei Liu
2013-02-05 17:04   ` Konrad Rzeszutek Wilk
2013-02-05 17:08     ` Wei Liu
2013-02-05 17:19       ` Konrad Rzeszutek Wilk
2013-02-05 17:23         ` Wei Liu
2013-02-05 19:44           ` Konrad Rzeszutek Wilk
2013-01-31 14:47 ` [PATCH 08/13] xen: dynamically allocate cpu_evtchn_mask Wei Liu
2013-02-01 11:29   ` David Vrabel
2013-01-31 14:47 ` [PATCH 09/13] xen: implement 3-level event channel routines Wei Liu
2013-02-05 17:09   ` Konrad Rzeszutek Wilk
2013-02-05 17:39     ` Wei Liu
2013-02-05 19:46       ` Konrad Rzeszutek Wilk
2013-01-31 14:47 ` [PATCH 10/13] xen: introduce xen_event_channel_register_3level Wei Liu
2013-02-04  8:56   ` Jan Beulich
2013-02-04 10:36     ` Wei Liu
2013-02-05 16:55   ` Konrad Rzeszutek Wilk
2013-02-05 17:05     ` Wei Liu
2013-02-05 17:14       ` Konrad Rzeszutek Wilk
2013-01-31 14:47 ` [PATCH 11/13] xen: introduce xen_event_channel_register_nlevel Wei Liu
2013-01-31 14:47 ` [PATCH 12/13] xen: register 3-level event channel Wei Liu
2013-02-01 11:31   ` David Vrabel
2013-01-31 14:47 ` [PATCH 13/13] xen: only register 3-level event channel for Dom0 Wei Liu
2013-01-31 16:39   ` Wei Liu

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=510BA3B4.4010104@citrix.com \
    --to=david.vrabel@citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=konrad.wilk@oracle.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /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.