Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Oct 2003 15:24:30 -0800
From:      Darcy Buskermolen <darcy@wavefire.com>
To:        Juan Manuel Sanchez <juanmasf@mi.madritel.es>, freebsd-stable@freebsd.org
Subject:   Re: [PATCH] avoid kernel panic during ATA probe
Message-ID:  <200310311524.30836.darcy@wavefire.com>
In-Reply-To: <3FA1F3ED.1010306@mi.madritel.es>
References:  <3FA1F3ED.1010306@mi.madritel.es>

next in thread | previous in thread | raw e-mail | index | archive | help

This patch does apear to prevent the panic as described in PR kern/57369.   
However the system still falls back to PIO4 when it should be capable of 
UDMA33 (at least)

On October 30, 2003 09:32 pm, Juan Manuel Sanchez wrote:
> The ata raid code in STABLE allows 15 seconds for reading the disk
> headers. If during probe the ata channels need several resets to find a
> working configuration that time might be exceeded. When the request
> finally succeds the buffer was already freed by ar_rw(), and kernel
> panics at any access to corrupt pointers.
>
> Try this simple patch:
>
> -----------------------------------------------------------------------
> Index: ata-raid.c
> ===================================================================
> RCS file: /usr/home/ncvs/src/sys/dev/ata/ata-raid.c,v
> retrieving revision 1.3.2.19
> diff -w -u -r1.3.2.19 ata-raid.c
> --- ata-raid.c	30 Jan 2003 07:19:59 -0000	1.3.2.19
> +++ ata-raid.c	30 Oct 2003 22:28:30 -0000
> @@ -1427,8 +1427,8 @@
>       AR_STRATEGY((struct buf *)bp);
>
>       if (flags & AR_WAIT) {
> -	while ((retry++ < (15*hz/10)) && (error = !(bp->b_flags & B_DONE)))
> -	    error = tsleep(bp, PRIBIO, "arrw", 10);
> +	/* AR_STRATEGY success or timeout will wake us up */
> +	error = tsleep(bp, PRIBIO, "arrw", 0);
>   	if (!error && (bp->b_flags & B_ERROR))
>   	    error = bp->b_error;
>   	free(bp, M_AR);
> -----------------------------------------------------------------------
>
> _______________________________________________
> freebsd-stable@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"

-- 
Darcy Buskermolen
Wavefire Technologies Corp.
ph: 250.717.0200
fx:  250.763.1759
http://www.wavefire.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310311524.30836.darcy>