Rene Herman wrote: > Yes. I don't see a significantly cleaner solution then than the > slightly hackish "using drvdata as a private success flag" that I > posted before. Example patch versus snd_adlib attached again. This > seems to work well. > > Takashi: do you agree? If the probe() method return is not going to > be propagated up, there are few other options. > > (Continuing the loop on IS_ERR(device) is then also a bit > questionable again as the IS_ERR then signifies an eror in the bowels > of the device model, but I feel it's still the correct thing to do) And here's the one doing the unregisters. This one could also go to stable, if you agree with the method... I've been testing with snd_adlib, and everything seems to be working as planned, also with the bus_add_device() patch reverted. Ie, not having the hardware present (at the supplied adress) makes it fail to load, and echo -n snd_adlib.0 >/sys/bus/platform/drivers/snd_adlib/{un,}bind makes the driver unbind and bind correctly. ad1848/ad1848.c | 4 ++++ adlib.c | 11 +++++++---- cmi8330.c | 4 ++++ cs423x/cs4231.c | 4 ++++ cs423x/cs4236.c | 4 ++++ es1688/es1688.c | 4 ++++ es18xx.c | 4 ++++ gus/gusclassic.c | 4 ++++ gus/gusextreme.c | 4 ++++ gus/gusmax.c | 4 ++++ gus/interwave.c | 4 ++++ opl3sa2.c | 4 ++++ opti9xx/miro.c | 7 +++++-- opti9xx/opti92x-ad1848.c | 7 +++++-- sb/sb16.c | 4 ++++ sb/sb8.c | 4 ++++ sgalaxy.c | 4 ++++ sscape.c | 4 ++++ wavefront/wavefront.c | 4 ++++ 19 files changed, 81 insertions(+), 8 deletions(-) Rene