Marin Mitov <mitov@issp.bas.bg> spotted a brainfart where I had
failed to update copied text with *_remove and __devexit().
Marin made a good comment in his email to me:
| mydriver_probe() is _always_ executed, while mydriver_remove() is not.
| See: include/linux/init.h
Which says:
/* Functions marked as __devexit may be discarded at kernel link time, depending
on config options. Newer versions of binutils detect references from
retained sections to discarded sections and flag an error. Pointers to
__devexit functions must use __devexit_p(function_name), the wrapper will
insert either the function_name or NULL, depending on the config options.
*/
Signed-off-by: Grant Grundler <grundler@parisc-linux.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>