lkml.org 
[lkml]   [2005]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: Flaw in ide_unregister()
From
Date
On Gwe, 2004-12-31 at 12:04, Richard Purdie wrote:
> I've been having some problems with calls to ide_unregister() (in ide.c).
>
> This function is declared void which should mean it always succeeds and yet
> it can fail *silently* under the following condition:

Actually in 2.4.x and 2.6.x (except 2.6.9-ac and 2.6.10-ac) its
essentially unusable and full of races and should always be avoided.

> 3. Add a return value. What does ide-cs.c do with it though? The hardware is
> gone. (doesn't help)

In 2.6.9-ac and 2.6.10-ac the ide_unregister_hwif calls return an error
if the drive is in use. At this point the ide-cs code still throws it
away. The -ac code IDE also adds "removed_hwif_iops" so the bits are
there for the correct result which is something like

if(ide_unregister_hwif(hwif) < 0 {
printk("Whine whine...");
removed_hwif_ops(hwif);
while(ide_unregister_hwif(hwif) < 0)
msleep(1000);
}

I've just not had time yet to propogate this into the drivers and into
the new PCI helper for hotplugging IDE controllers.

Alan

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:09    [W:0.094 / U:0.276 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site