All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederik Deweerdt <deweerdt@free.fr>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, torvalds@linux-foundation.org,
	viro@zeniv.linux.org.uk
Subject: [-mm patch] pci_iomap_regions error handling fix (was Re: 2.6.20-mm1)
Date: Fri, 16 Feb 2007 16:41:59 +0000	[thread overview]
Message-ID: <20070216164159.GA32060@slug> (raw)
In-Reply-To: <20070215051408.a7fb7d81.akpm@linux-foundation.org>

On Thu, Feb 15, 2007 at 05:14:08AM -0800, Andrew Morton wrote:
> 
> Temporarily at
> 
>   http://userweb.kernel.org/~akpm/2.6.20-mm1/
> 
Hi,

It appears that the pcim_iomap_regions() function doesn't get the error
handling right. It BUGs early at boot with a backtrace along the lines of:

ahci_init
pci_register_driver
driver_register
[...]
ahci_init_one
pcim_iomap_region
pcim_iounmap

The following patch allows me to boot. Only the if(mask..) continue;
part fixes the problem actually, the gotos where changed so that we
don't try to unmap something we couldn't map anyway.

Regards,
Frederik

Signed-off-by: Frederik Deweerdt <frederik.deweerdt@gmail.com>


diff --git a/lib/devres.c b/lib/devres.c
index 2a668dd..eb38849 100644
--- a/lib/devres.c
+++ b/lib/devres.c
@@ -274,21 +274,21 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name)
 
 		rc = pci_request_region(pdev, i, name);
 		if (rc)
-			goto err_region;
+			goto err_inval;
 
 		rc = -ENOMEM;
 		if (!pcim_iomap(pdev, i, 0))
-			goto err_iomap;
+			goto err_region;
 	}
 
 	return 0;
 
- err_iomap:
-	pcim_iounmap(pdev, iomap[i]);
  err_region:
 	pci_release_region(pdev, i);
  err_inval:
 	while (--i >= 0) {
+		if (!(mask & (1 << i)))
+			continue;
 		pcim_iounmap(pdev, iomap[i]);
 		pci_release_region(pdev, i);
 	}

  parent reply	other threads:[~2007-02-15 16:42 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-15 13:14 2.6.20-mm1 Andrew Morton
2007-02-15 14:28 ` 2.6.20-mm1 [kernel BUG at mm/swap.c:442] James Morris
2007-02-15 14:37   ` James Morris
2007-02-15 21:51   ` Andrew Morton
2007-02-15 22:39     ` Christoph Lameter
2007-02-16 14:30       ` James Morris
2007-02-16 14:59     ` James Morris
2007-02-16 15:57       ` Christoph Lameter
2007-02-16 21:28         ` James Morris
2007-02-15 14:37 ` 2.6.20-mm1 Michal Piotrowski
2007-02-15 22:02   ` 2.6.20-mm1 Andrew Morton
2007-02-15 22:38     ` 2.6.20-mm1 Eric W. Biederman
2007-02-15 23:24     ` 2.6.20-mm1 Michal Piotrowski
2007-02-16  0:04       ` [PATCH] shm: Fix the locking and cleanup error handling in do_shmat Eric W. Biederman
2007-02-16  0:16         ` Michal Piotrowski
2007-02-16  0:21         ` Michal Piotrowski
2007-02-16  3:34           ` Eric W. Biederman
2007-02-16  4:10             ` Wu, Bryan
2007-02-16  0:16       ` 2.6.20-mm1 Andrew Morton
2007-02-15 15:01 ` [-mm patch] MARKERS should depend on, not select MODULES Adrian Bunk
2007-02-15 19:27   ` Mathieu Desnoyers
2007-02-15 16:01 ` sparse chokes on arch/i386/kernel/i8253.c (was: 2.6.20-mm1) Tilman Schmidt
2007-02-15 22:41   ` Andrew Morton
2007-02-15 22:46     ` Mathieu Desnoyers
2007-02-15 23:44       ` Andrew Morton
2007-02-16  0:37         ` Mathieu Desnoyers
2007-02-16  1:22           ` Andrew Morton
2007-02-16 18:05             ` [PATCH] Move include linux/marker.h to kernel.h Mathieu Desnoyers
2007-02-16 18:43               ` Andrew Morton
2007-02-16 18:52                 ` [PATCH] Move include linux/marker.h from Makefile Mathieu Desnoyers
2007-02-17 12:50                 ` [PATCH] Move include linux/marker.h to kernel.h Tim Schmielau
2007-02-16  0:23     ` [PATCH] sparse chokes on arch/i386/kernel/i8253.c Mathieu Desnoyers
2007-02-16  0:37       ` Andrew Morton
2007-02-16  0:58         ` Mathieu Desnoyers
2007-02-16  1:31           ` Andrew Morton
2007-02-15 16:27 ` 2.6.20-mm1 Artem Bityutskiy
2007-02-15 17:33 ` 2.6.20-mm1 Valdis.Kletnieks
2007-02-15 18:00   ` 2.6.20-mm1 Marcin Juszkiewicz
2007-02-15 18:27     ` 2.6.20-mm1 Richard Purdie
2007-02-15 19:29 ` 2.6.20-mm1 Mattia Dongili
2007-02-15 19:39   ` 2.6.20-mm1 Richard Purdie
2007-02-15 21:30 ` 2.6.20-mm1 J.A. Magallón
2007-02-15 23:31   ` 2.6.20-mm1 Andrew Morton
2007-02-15 23:39     ` 2.6.20-mm1 J.A. Magallón
2007-02-16  5:30       ` 2.6.20-mm1 Andrew Morton
2007-02-16 23:50         ` 2.6.20-mm1 J.A. Magallón
2007-02-15 22:51 ` 2.6.20-mm1 Bartlomiej Zolnierkiewicz
2007-02-15 23:56 ` [PATCH 1/1] unify queue_delayed_work and queue_delayed_work_on fix Jiri Slaby
2007-02-16  0:10   ` Jiri Slaby
2007-02-16 13:55   ` Oleg Nesterov
2007-02-16 16:37 ` 2.6.20-mm1 Steve Fox
2007-02-16 16:55   ` 2.6.20-mm1 Randy Dunlap
2007-02-19 16:10     ` 2.6.20-mm1 Steve Fox
2007-02-16 16:41 ` Frederik Deweerdt [this message]
2007-02-15 23:50   ` [-mm patch] pci_iomap_regions error handling fix (was Re: 2.6.20-mm1) Andrew Morton
2007-02-16 17:14 ` 2.6.20-mm1 - undefined reference to `delete_module' on x86 Steve Fox
2007-02-16 18:37   ` Andrew Morton
2007-02-20  0:02 ` [-mm patch] make struct vmi_ops static Adrian Bunk
2007-02-20  0:02 ` [-mm patch] marker exports must be EXPORT_SYMBOL_GPL Adrian Bunk
2007-02-20 23:15   ` Mathieu Desnoyers
2007-02-20  0:07 ` [-mm patch] {rd,wr}msr_on_cpu SMP=n optimization Adrian Bunk
2007-02-20  0:14   ` Dave Jones
2007-02-20  0:21     ` Adrian Bunk
2007-02-20  0:29       ` Dave Jones
2007-02-20 13:50     ` Alexey Dobriyan
2007-02-20 19:25       ` Dave Jones
2007-02-20  0:07 ` [-mm patch] drivers/net/vioc/: possible cleanups Adrian Bunk
2007-02-20  0:07 ` [-mm patch] make dvb_usb_gl861_debug static Adrian Bunk
2007-02-20 16:13   ` [v4l-dvb-maintainer] " Michael Krufky
2007-02-20  0:07 ` [-mm patch] make pvr2_encoder_prep_config() static Adrian Bunk
2007-02-20  0:07 ` [-mm patch] make drivers/usb/misc/iowarrior.c:iowarrior_ids[] static Adrian Bunk
2007-02-20  0:07 ` [-mm patch] make fs/partitions/msdos.c:check_sane_values() static Adrian Bunk
2007-02-20  0:07 ` [-mm patch] make kernel/kmod.c:kmod_mk static Adrian Bunk
2007-02-20  0:07 ` [-mm patch] make ipc/shm.c:shm_nopage() static Adrian Bunk
2007-02-20  2:13   ` Eric W. Biederman
2007-02-20  0:07 ` [-mm patch] mm/{,tiny-}shmem.c cleanups Adrian Bunk
2007-02-20  0:08 ` 2.6.20-mm1: PTRACE=y, PROC_FS=n compile error Adrian Bunk
2007-02-21 10:15   ` Roland McGrath
2007-02-22  3:35     ` Christoph Hellwig
2007-02-20  0:08 ` [-mm patch] include/linux/ptrace.h must #include <linux/errno.h> Adrian Bunk
2007-02-21  9:57   ` Roland McGrath

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=20070216164159.GA32060@slug \
    --to=deweerdt@free.fr \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /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.