Google luky.org euqset.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Flaw in ide_unregister()


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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


$B$3$N>pJs$,$"$J$?$NC5$7$F$$?$b$N$+$I$&$+A*Br$7$F$/$@$5$!#(B
yes/$B$^$5$K$3$l$@!*(B   no/$B0c$&$J$!(B   part/$B0lIt8+$D$+$C$?(B   try/$B$3$l$G;n$7$F$_$k(B

$B$"$J$?$,C5$7$F$$?>pJs$O$I$N$h$&$J$3$H$+!"$4<+M3$K5-F~2<$5$!#FC$K!V$^$5$K$3$l$@!*!W$H8@$&>l9g$O5-F~$r$*4j$$7$^$9!#(B
$BNc(B:$B!VJ#?t$N%^%7%s$+$i(BCATV$B7PM3$G(Bipmasquerade$B$rMxMQ$7$F(BWeb$B$r;2>H$7$?$>l9g$N@_Dj$K$D$$F!W(B
Follow-Ups: