Messages in this thread | | | Subject | Re: Flaw in ide_unregister() | From | Alan Cox <> | Date | Sun, 02 Jan 2005 14:36:49 +0000 |
| |
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/
| |