﻿Linux Kernel Enforcement Statement
----------------------------------

As developers of the Linux kernel, we have a keen interest in how our software
is used and how the license for our software is enforced.  Compliance with the
reciprocal sharing obligations of GPL-2.0 is critical to the long-term
sustainability of our software and community.

Although there is a right to enforce the separate copyright interests in the
contributions made to our community, we share an interest in ensuring that
individual enforcement actions are conducted in a manner that benefits our
community and do not have an unintended negative impact on the health and
growth of our software ecosystem.  In order to deter unhelpful enforcement
actions, we agree that it is in the best interests of our development
community to undertake the following commitment to users of the Linux kernel
on behalf of ourselves and any successors to our copyright interests:

    Notwithstanding the termination provisions of the GPL-2.0, we agree that
    it is in the best interests of our development community to adopt the
    following provisions of GPL-3.0 as additional permissions under our
    license with respect to any non-defensive assertion of rights under the
    license.

	However, if you cease all violation of this License, then your license
	from a particular copyright holder is reinstated (a) provisionally,
	unless and until the copyright holder explicitly and finally
	terminates your license, and (b) permanently, if the copyright holder
	fails to notify you of the violation by some reasonable means prior to
	60 days after the cessation.

	Moreover, your license from a particular copyright holder is
	reinstated permanently if the copyright holder notifies you of the
	violation by some reasonable means, this is the first time you have
	received notice of violation of this License (for any work) from that
	copyright holder, and you cure the violation prior to 30 days after
	your receipt of the notice.

Our intent in providing these assurances is to encourage more use of the
software.  We want companies and individuals to use, modify and distribute
this software.  We want to work with users in an open and transparent way to
eliminate any uncertainty about our expectations regarding compliance or
enforcement that might limit adoption of our software.  We view legal action
as a last resort, to be initiated only when other community efforts have
failed to resolve the problem.

Finally, once a non-compliance issue is resolved, we hope the user will feel
welcome to join us in our efforts on this project.  Working together, we will
be stronger.

Except where noted below, we speak only for ourselves, and not for any company
we might work for today, have in the past, or will in the future.

  - Bjorn Andersson (Linaro)
  - Andrea Arcangeli (Red Hat)
  - Neil Armstrong
  - Jens Axboe
  - Pablo Neira Ayuso
  - Khalid Aziz
  - Ralf Baechle
  - Felipe Balbi
  - Arnd Bergmann
  - Ard Biesheuvel
  - Paolo Bonzini (Red Hat)
  - Christian Borntraeger
  - Mark Brown (Linaro)
  - Paul Burton
  - Javier Martinez Canillas
  - Rob Clark
  - Jonathan Corbet
  - Vivien Didelot (Savoir-faire Linux)
  - Hans de Goede (Red Hat)
  - Mel Gorman (SUSE)
  - Sven Eckelmann
  - Alex Elder (Linaro)
  - Fabio Estevam
  - Larry Finger
  - Bhumika Goyal
  - Andy Gross
  - Juergen Gross
  - Shawn Guo
  - Ulf Hansson
  - Tejun Heo
  - Rob Herring
  - Masami Hiramatsu
  - Michal Hocko
  - Simon Horman
  - Johan Hovold (Hovold Consulting AB)
  - Christophe JAILLET
  - Olof Johansson
  - Lee Jones (Linaro)
  - Heiner Kallweit
  - Srinivas Kandagatla
  - Jan Kara
  - Shuah Khan (Samsung)
  - David Kershner
  - Jaegeuk Kim
  - Namhyung Kim
  - Colin Ian King
  - Jeff Kirsher
  - Greg Kroah-Hartman (Linux Foundation)
  - Christian König
  - Vinod Koul
  - Krzysztof Kozlowski
  - Viresh Kumar
  - Aneesh Kumar K.V
  - Julia Lawall
  - Doug Ledford (Red Hat)
  - Chuck Lever (Oracle)
  - Daniel Lezcano
  - Shaohua Li
  - Xin Long (Red Hat)
  - Tony Luck
  - Mike Marshall
  - Chris Mason
  - Paul E. McKenney
  - David S. Miller
  - Ingo Molnar
  - Kuninori Morimoto
  - Borislav Petkov
  - Jiri Pirko
  - Josh Poimboeuf
  - Sebastian Reichel (Collabora)
  - Guenter Roeck
  - Joerg Roedel
  - Leon Romanovsky
  - Steven Rostedt (VMware)
  - Ivan Safonov
  - Ivan Safonov
  - Anna Schumaker
  - Jes Sorensen
  - K.Y. Srinivasan
  - Heiko Stuebner
  - Jiri Kosina (SUSE)
  - Dmitry Torokhov
  - Linus Torvalds
  - Thierry Reding
  - Rik van Riel
  - Geert Uytterhoeven (Glider bvba)
  - Daniel Vetter
  - Linus Walleij
  - Richard Weinberger
  - Dan Williams
  - Rafael J. Wysocki
  - Arvind Yadav
  - Masahiro Yamada
  - Wei Yongjun
  - Lv Zheng
