The term "derived work" is not defined in GPLv2, but it is widely believed that they meant it to mean the same thing as "derivative work", a term which is defined by copyright law.

I'm going to make that assumption in the following. Note that if a work is not a derived work of the kernel, then it doesn't matter what GPLv2 says about it because you would not need permission of the kernel copyright holders to distribute the work. We only reach the question of what is a GPLv2 "derived work" once we determine that a work is a derivative work.

Modules do not appear to inherently be derivative works of the kernel. Looking at the source code to various simple modules, I don't see anything in the minimal necessary code that is copied from the kernel other than the names of kernel header files and the names of some functions. It would be hard to argue that file names and function names are copyrightable, so I don't see any copyrightable kernel elements necessarily copied into simple modules.

So, if I were to write a module and release it in source form only, it sure looks like I could do this in a way that would make it not a derivative work of the kernel, and so I would have no obligation to license it under GPLv2.

If I were to do that, other people might have trouble using the module, for to use it they would have to compile it and combine it with a kernel. If that violates GPLv2, then they would be the ones liable for this, not me the module author.

Could I be held responsible for their violation? There are a couple of ways in the US (not sure about other countries) whereby one can be held accountable for the copyright violation of another. The first is if that other is acting as an agent under one's control. That would not be applicable here.

The second, contributory infringement, is when one person does something to knowingly enable someone else's infringement. For there to be contributory infringement, there are a couple of important requirements. First, there must be a direct infringement for the contributory infringer to contribute to. Second, my contribution has to be mostly only useful for infringing.

I think contributory infringement is unlikely. The person who compiles and loads my module would have a very strong fair use defense against claims that they are infringing GPLv2 by combining my module and a kernel for their own use. (Also, GPLv2 kind of implies that you can do whatever you want with GPLv2 code on your own system in private, only having to obey GPL if you are going to distribute).

It gets more interesting if I compile the module and release the binary. Macros in the source code may be expanded by the compilation process into code copied from kernel header files, or from the compiler. That could make the binary module a derivative work even though the module source code is not. This would depend on just what the macros expand to.

It would be an interesting technical and legal project, although it would probably tick off a lot of people, to approach Linux modules that same way people approach third-party kernel modules for proprietary operating systems when the copyright holder doesn't approve: clean room reverse engineering.

If the big proprietary operating system vendors, with their big legal teams and budgets and financial interest in keeping control over who runs what on their platforms, were unable to keep third parties from producing unauthorized kernel modules, I don't see why anyone would expect that Linux could do so.