All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
To: Ashok Raj <ashok.raj@intel.com>, germano.barreiro@cyclades.com
Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>,
	pc300@cyclades.com, lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] PC300 pci_enable_device fix
Date: Thu, 14 Apr 2005 09:39:00 -0300	[thread overview]
Message-ID: <20050414123859.GG11131@logos.cnet> (raw)
In-Reply-To: <20050413194531.GE11131@logos.cnet>


Germano, can you give this patch a try before merging, please.

On Wed, Apr 13, 2005 at 04:45:31PM -0300, Marcelo Tosatti wrote:
> On Wed, Apr 13, 2005 at 03:02:43PM -0700, Ashok Raj wrote:
> > On Wed, Apr 13, 2005 at 02:31:43PM -0700, Bjorn Helgaas wrote:
> > > 
> > >    Call pci_enable_device() before looking at IRQ and resources.
> > >    The driver requires this fix or the "pci=routeirq" workaround
> > >    on 2.6.10 and later kernels.
> > 
> > 
> > the failure cases dont seem to worry about pci_disable_device()?
> > 
> > in err_release_ram: etc?
> 
> Yep the failure paths were wrong before, but Bjorn's patch moves 
> pci_enable_device() way up to the beginning of the function. 
> 
> The failure path's err_release_ram etc. wont touch the resources
> without pci_enable_pci(), with the fix.

Hi, 

I see what you mean now, Ashok. Yes, you are right, the error path lacks
pci_disable_device().

Reported by Artur Lipowski.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com>

--- a/drivers/net/wan/pc300_drv.c.orig	2005-04-14 13:56:04.000000000 -0300
+++ b/drivers/net/wan/pc300_drv.c	2005-04-14 13:58:56.000000000 -0300
@@ -3439,11 +3439,15 @@
 #endif
 	}
 
+	if ((err = pci_enable_device(pdev)) != 0)
+		return err;
+
 	card = (pc300_t *) kmalloc(sizeof(pc300_t), GFP_KERNEL);
 	if (card == NULL) {
 		printk("PC300 found at RAM 0x%08lx, "
 		       "but could not allocate card structure.\n",
 		       pci_resource_start(pdev, 3));
+		pci_disable_device(pdev);
 		return -ENOMEM;
 	}
 	memset(card, 0, sizeof(pc300_t));
@@ -3527,8 +3531,6 @@
 		goto err_release_ram;
 	}
 
-	if ((err = pci_enable_device(pdev)) != 0)
-		goto err_release_sca;
 
 	card->hw.plxbase = ioremap(card->hw.plxphys, card->hw.plxsize);
 	card->hw.rambase = ioremap(card->hw.ramphys, card->hw.alloc_ramsize);
@@ -3628,6 +3630,7 @@
 err_release_io:
 	release_region(card->hw.iophys, card->hw.iosize);
 	kfree(card);
+	pci_disable_device(pdev);
 	return -ENODEV;
 }
 

  reply	other threads:[~2005-04-14 18:32 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-13 21:31 [PATCH] PC300 pci_enable_device fix Bjorn Helgaas
2005-04-13 22:02 ` Ashok Raj
2005-04-13 19:45   ` Marcelo Tosatti
2005-04-14 12:39     ` Marcelo Tosatti [this message]
2005-04-14 18:17   ` Bjorn Helgaas
  -- strict thread matches above, loose matches on Subject: below --
2005-04-26 14:41 Marcelo Tosatti

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=20050414123859.GG11131@logos.cnet \
    --to=marcelo.tosatti@cyclades.com \
    --cc=ashok.raj@intel.com \
    --cc=bjorn.helgaas@hp.com \
    --cc=germano.barreiro@cyclades.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pc300@cyclades.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.