The Linux kernel is distributed under the GPLv2 and it seems generally accepted that "user-space programs that use the standard system call interfaces aren't considered derived works" as stated by Linus Torvald on "Re: Linux GPL and binary module exception clause?". The Linux kernel COPYING file does indeed have this preamble, right before the GPLv2:

NOTE! This copyright does not cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does not fall under the heading of "derived work".

What is the situation for user-space programs that use modified system call interfaces?

For instance, if I have:

  • a user-space program that requires very specific constraints regarding the layout of the memory; and
  • a purposefully modified version of the linux kernel that implements these constraints

Can I still distribute the user-space program under a proprietary license along the modified kernel (under GPLv2)? Or is this a situation where the modification of the kernel implicitly creates a dependency that turn the the combination of the user-space program with the modified kernel into derived work?

Does it make a difference if:

  • the kernel modification is only used for that specific user-space program or if it is a widely used public patch?
  • Does it make a difference if the kernel modification only modifies the implementation without modifying the interface?
  • If the kernel modification only modifies the internal implementation without affecting the external interface of the kernel, then obviously no user-space program can depend on that !
    – MSalters
    Commented Jan 22, 2017 at 23:36

1 Answer 1


Oversimplifying a lot, the test of whether something is a derivative work of another work is first whether it itself contains sufficient new protectable expression to be a work at all and second whether it also contains sufficient protected expression from that other work to be considered derivative.

You have said that the constraints and modifications to the Linux kernel are authored by the same party as the user space tool. So in your example, there's probably no problem because the only protected expression the user space work could be taking is the changes to the Linux kernel, and those were authored by the same person as the user space work.

There's only a problem if you take significant protected expression into your work and that work is only available to you under a license like the GPLv2 that imposes requirements.

So all you're doing that other programs don't do is this:
Linux <-> Kernel Mods <-> Program

Here, the kernel mods are clearly a derivative work of the Linux kernel. But they comply with the GPL. The program contains protectable expression from the kernel mods, but you hold the copyright to the kernel mods, so you can't infringe on their copyright.

  • How would it be different if the modifications to the Linux kernel were authored by a third party (e.g. applying a publicly available patch that is not included in any official release of the kernel)?
    – Come Raczy
    Commented Jan 26, 2017 at 17:45
  • Whether something is or isn't included in an "official release" of the kernel has no effect. The point of the GPL is to give everyone an equal right to use and modify the work (except for the actual author, of course, who retains the right to license it other ways as well). However, if sufficient protectable expression from those kernel mods appears in the user space work, you would need permission from the authors of those mods. Commented Jan 26, 2017 at 19:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .