xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Keir Fraser <keir@xen.org>
To: Jan Beulich <JBeulich@novell.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] linux/pcifront: fix freeing of device
Date: Mon, 04 Oct 2010 12:46:55 +0100	[thread overview]
Message-ID: <C8CF7D3F.24D3A%keir@xen.org> (raw)
In-Reply-To: <4CA9D1F5020000780001A5AA@vpn.id2.novell.com>

Are the two patches you sent out for 2.6.18? If so, you need to make it
clear. There are several Linux trees now and I'm ignoring Linux patches by
default.

 -- Keir

On 04/10/2010 12:09, "Jan Beulich" <JBeulich@novell.com> wrote:

> unbind_from_irqhandler() takes irq, not evtchn, as its first argument.
> 
> Once at it, improve error handling.
> 
> Signed-off-by: Jan Beulich <jbeulich@novell.com>
> Reported-by: Rafal Wojtczuk <rafal@invisiblethingslab.com>
> 
> --- a/drivers/xen/pcifront/pcifront.h
> +++ b/drivers/xen/pcifront/pcifront.h
> @@ -30,6 +30,7 @@ struct pcifront_device {
>  
> int evtchn;
> int gnt_ref;
> + int irq;
>  
> /* Lock this when doing any operations in sh_info */
> spinlock_t sh_info_lock;
> --- a/drivers/xen/pcifront/xenbus.c
> +++ b/drivers/xen/pcifront/xenbus.c
> @@ -48,6 +48,7 @@ static struct pcifront_device *alloc_pde
>  
> pdev->evtchn = INVALID_EVTCHN;
> pdev->gnt_ref = INVALID_GRANT_REF;
> + pdev->irq = -1;
>  
> INIT_WORK(&pdev->op_work, pcifront_do_aer, pdev);
>  
> @@ -65,7 +66,9 @@ static void free_pdev(struct pcifront_de
>  
> /*For PCIE_AER error handling job*/
> flush_scheduled_work();
> - unbind_from_irqhandler(pdev->evtchn, pdev);
> +
> + if (pdev->irq > 0)
> +  unbind_from_irqhandler(pdev->irq, pdev);
>  
> if (pdev->evtchn != INVALID_EVTCHN)
> xenbus_free_evtchn(pdev->xdev, pdev->evtchn);
> @@ -73,6 +76,8 @@ static void free_pdev(struct pcifront_de
> if (pdev->gnt_ref != INVALID_GRANT_REF)
> gnttab_end_foreign_access(pdev->gnt_ref,
>  (unsigned long)pdev->sh_info);
> + else
> +  free_page((unsigned long)pdev->sh_info);
>  
> pdev->xdev->dev.driver_data = NULL;
>  
> @@ -94,8 +99,16 @@ static int pcifront_publish_info(struct
> if (err)
> goto out;
>  
> - bind_caller_port_to_irqhandler(pdev->evtchn, pcifront_handler_aer,
> -  SA_SAMPLE_RANDOM, "pcifront", pdev);
> + err = bind_caller_port_to_irqhandler(pdev->evtchn,
> +          pcifront_handler_aer,
> +          SA_SAMPLE_RANDOM,
> +          "pcifront", pdev);
> + if (err < 0) {
> +  xenbus_dev_fatal(pdev->xdev, err,
> +     "Failed to bind event channel");
> +  goto out;
> + }
> + pdev->irq = err;
>  
>        do_publish:
> err = xenbus_transaction_start(&trans);
> @@ -428,6 +441,8 @@ static int pcifront_xenbus_probe(struct
> }
>  
> err = pcifront_publish_info(pdev);
> + if (err)
> +  free_pdev(pdev);
>  
>        out:
> return err;
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

  reply	other threads:[~2010-10-04 11:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-04 11:09 [PATCH] linux/pcifront: fix freeing of device Jan Beulich
2010-10-04 11:46 ` Keir Fraser [this message]
2010-10-04 12:22   ` Jan Beulich
2010-10-04 12:23     ` Keir Fraser

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=C8CF7D3F.24D3A%keir@xen.org \
    --to=keir@xen.org \
    --cc=JBeulich@novell.com \
    --cc=xen-devel@lists.xensource.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).