There question of whether a kernel module must be released under the GPL all boils down the the legal issue of "derived work". Derived work is a
very gray area in US copyright law and there are very few absolute rules for determining if something is a derived work. Yes, requiring the kernel source to build the module would make it
difficult to argue that the module is not a derived work ... but some lawyers have a knack for winning "difficult arguments". Simply "including" kernel headers is
much more gray. If using the a well documented system call interface in the kernel does not make applications GPL, it's a little bit of a stretch to claim that using a well documented module interface in the kernel
does make the module GPL. I'm not saying there are no valid arguments to support that position ... just that there are probably an equal number against it.
As for the idea of a binary component that interfaces to a GPL'd module stub ...
Linus has gone on record saying that he feels that is every bit as much of a violation of the GPL as is making the whole module closed-source binary. And whitepapers published by the FSF to clarify their stand on "derived works" back up Linus' position. Linus hasn't made a big issue of this with the Nvidia driver simply because it's pretty obvious that it's
not a derived work (Nvidia ported an existing Windows driver to Linux).
A bigger issue that people need to consider is whether allowing closed-source binary modules for Linux is good or bad (good != legal). The simple fact of the matter is that there are (and always will) be proprietary hardware standards. SD, MemoryStick, RapidIO, etc. The organizations that have created those standards make them available only to paying members. And a condition of membership is that you will
not disclose the information contained in the specifications. That means code that implements the spec can
never be released under an open source license. Period. Even if someone won a successful GPL law suit against Sharp for the closed-source SD driver, the only available remedy would be an injunction against distributing the driver (and possibly monetary damages). The courts couldn't force opening the driver source because that would violate another valid contract.
No one is going to change the protective mentality of the industry consortiums behind the closed hardware standards. They have far too much R&D money invested in the development of the hardware to just "give away" their designs. So if Linux developers and users start taking a hard line GPL stand against binary modules, the only thing it's going to accomplish is complete loss of support for those devices on Linux. Perhaps not that big a deal on desktops and servers, but this would essentially make Linux taboo in a lot of embedded applications (like the Zaurus).
And if you think the embedded systems developers will fight the industry consortiums to "open" the hardware standards, dream on. They'll just switch to a non-GPL'd OS like WinCE, VxWorks, Symbian, or even BSD. Most end users will never know the difference. But those of us who do like to tinker with our gadgets will lose a lot of capabilities since vendors will no longer be obligated to release source for
any part of the kernel. Want to write a driver for a new Bluetooth card? Sorry. Want to tweak the preemptive behavior of the kernel? No dice. Something to think about before beating Sharp up about their closed-source SD driver violating the GPL.