Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Jul 2006 01:22:12 +0300
From:      "Iasen Kostoff" <tbyte@otel.net>
To:        "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org>
Cc:        freebsd-stable@FreeBSD.org
Subject:   kern/99729: Bug in ata (ata-all.c) driver
Message-ID:  <1151878932.16831@WarHeaD.OTEL.net>
Resent-Message-ID: <200607022300.k62N0Ymo021738@freefall.freebsd.org>

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

>Number:         99729
>Category:       kern
>Synopsis:       Bug in ata (ata-all.c) driver
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 02 23:00:33 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Iasen Kostoff
>Release:        FreeBSD 6.1-STABLE i386
>Organization:
OTEL.net 
>Environment:


System: FreeBSD 6.1-STABLE #2: Sat Jul  1 13:01:14 EEST 2006
    root@WarHeaD.OTEL.net:/usr/src6/sys/i386/compile/WARHEAD



>Description:


I found a little bug (probably) in sys/dev/ata-all.c which somehow corrupts device parameters structure. When I first did "atacontrol list" device info about ad0 looked like this:
Master:  ad0 <Maxtor 6Y080P0/YAR41BW0> ATA/ATAPI revision 7
after I ran "atacontrol cap ad0" it printed somewhat messy output like having enabled SMART but not supported...
then I did "atacontrol list" again and saw that the line about ad0 have changed to something like this:
Master:  ad0 <W0Maxtor 6Y080P0/YAR41BW0> ATA/ATAPI revision 0
or similar.

After some digging and comparing the way "IOCATADEVICES" and "IOCATAGPARM" work I saw (probably) bogus ata_getparam() call. After removing this call to ata_getparam() everything work as expected (atleast that's what it looks like for ~30 min run). "atacontrol cap ad0" shows right results and doesn't screw the device parameters. I just hope that this doesn't break something else but I doubt it coz it just gets info and doesn't set anything.




>How-To-Repeat:


In description.


>Fix:


--- ata-all.c.old	Sat Jul  1 04:10:30 2006
+++ ata-all.c	Sat Jul  1 04:40:26 2006
@@ -505,7 +505,6 @@
 	return error;
    
     case IOCATAGPARM:
-	ata_getparam(atadev, 0);
 	bcopy(&atadev->param, params, sizeof(struct ata_params));
 	return 0;
 


>Release-Note:
>Audit-Trail:
>Unformatted:



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