Re: 2.6.13-rc5-mm1 doesnt boot on x86_64

James Bottomley
2005-08-09T00:07:44Z

On Mon, 2005-08-08 at 10:42 -0700, Andrew Morton wrote:
> -mm has extra list_head debugging goodies. I'd be suspecting a list_head
> corruption detected somewhere under spi_release_transport().

Aha, looking in wrong driver ... the problem actually appears to be a
double release of the transport template in aic79xx. Try this patch

James

diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c
--- a/drivers/scsi/aic7xxx/aic79xx_osm.c
+++ b/drivers/scsi/aic7xxx/aic79xx_osm.c
@@ -2326,8 +2326,6 @@ done:
return (retval);
}

-static void ahd_linux_exit(void);
-
static void ahd_linux_set_width(struct scsi_target *starget, int width)
{
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
@@ -2772,7 +2770,7 @@ ahd_linux_init(void)
if (ahd_linux_detect(&aic79xx_driver_template) > 0)
return 0;
spi_release_transport(ahd_linux_transport_template);
- ahd_linux_exit();
+
return -ENODEV;
}

diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -2331,8 +2331,6 @@ ahc_platform_dump_card_state(struct ahc_
{
}

-static void ahc_linux_exit(void);
-
static void ahc_linux_set_width(struct scsi_target *starget, int width)
{
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);