Russell King writes: > static void __exit > aoe_exit(void) > { > ... > } > > static int __init > aoe_init(void) > { > ... > aoe_exit(); > ... > } Thanks for catching that. I cleaned up the error handling, too. > In addition, please shoot the author in the other foot for: > > config ATA_OVER_ETH > tristate "ATA over Ethernet support" > depends on NET > default m <==== this line. > > That's not nice for embedded guys who do a "make xxx_defconfig" and > unsuspectingly end up with ATA over Ethernet built in for their > platform. OK, thanks. The patch below gets rid of that Kconfig line and fixes the bug where __init code calls __exit code. It depends on the recently-submitted patch that elimimates sleeping with interrupts off, so it applies cleanly to Greg KH's usb tree. Don't call __exit functions from __init functions. Default to not configuring AoE support in kernel. Signed-off-by: Ed L. Cashin