Actually, if I understand what Linus says here[1] correctly, porting modules from other OSes to work with linux seems to be ok, writing closed source modules specifically for linux kernel is not ok. But overall still a gray area.
Other kernel devs indeed claim that everything that links with a kernel is a derivative work and EXPORT_SYMBOL / EXPORT_SYMBOL_GPL distinction means nothing.