1. 11 Feb, 2019 1 commit
    • Thomas Gleixner's avatar
      module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity · bf7fbeea
      Thomas Gleixner authored
      The original MODULE_LICENSE string for kernel modules licensed under the
      GPL v2 (only / or later) was simply "GPL", which was - and still is -
      completely sufficient for the purpose of module loading and checking
      whether the module is free software or proprietary.
      
      In January 2003 this was changed with commit 3344ea3a ("[PATCH]
      MODULE_LICENSE and EXPORT_SYMBOL_GPL support"). This commit can be found in
      the history git repository which holds the 1:1 import of Linus' bitkeeper
      repository:
      
        https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/?id=3344ea3ad4b7c302c846a680dbaeedf96ed45c02
      
      The main intention of the patch was to refuse linking proprietary modules
      against symbols exported with EXPORT_SYMBOL_GPL() at module load time.
      
      As a completely undocumented side effect it also introduced the distinction
      between "GPL" and "GPL v2" MODULE_LICENSE() strings:
      
       *      "GPL"                           [GNU Public License v2 or later]
       *      "GPL v2"                        [GNU Public License v2]
       *      "GPL and additional rights"     [GNU Public License v2 rights and more]
       *      "Dual BSD/GPL"                  [GNU Public License v2
       *                                       or BSD license choice]
       *      "Dual MPL/GPL"                  [GNU Public License v2
       *                                       or Mozilla license choice]
      
      This distinction was and still is wrong in several aspects:
      
       1) It broke all modules which were using the "GPL" string in the
          MODULE_LICENSE() already and were licensed under GPL v2 only.
      
          A quick license scan over the tree at that time shows that at least 480
          out of 1484 modules have been affected by this change back then. The
          number is probably way higher as this was just a quick check for
          clearly identifiable license information.
      
          There was exactly ONE instance of a "GPL v2" module license string in
          the kernel back then - drivers/net/tulip/xircom_tulip_cb.c which
          otherwise had no license information at all. There is no indication
          that the change above is any way related to this driver. The change
          happend with the 2.4.11 release which was on Oct. 9 2001 - so quite
          some time before the above commit. Unfortunately there is no trace on
          the intertubes to any discussion of this.
      
       2) The dual licensed strings became ill defined as well because following
          the "GPL" vs. "GPL v2" distinction all dual licensed (or additional
          rights) MODULE_LICENSE strings would either require those dual licensed
          modules to be licensed under GPL v2 or later or just be unspecified for
          the dual licensing case. Neither choice is coherent with the GPL
          distinction.
      
      Due to the lack of a proper changelog and no real discussion on the patch
      submission other than a few implementation details, it's completely unclear
      why this distinction was introduced at all. Other than the comment in the
      module header file exists no documentation for this at all.
      
      From a license compliance and license scanning POV this distinction is a
      total nightmare.
      
      As of 5.0-rc2 2873 out of 9200 instances of MODULE_LICENSE() strings are
      conflicting with the actual license in the source code (either SPDX or
      license boilerplate/reference). A comparison between the scan of the
      history tree and a scan of current Linus tree shows to the extent that the
      git rename detection over Linus tree grafted with the history tree is
      halfways complete that almost none of the files which got broken in 2003
      have been cleaned up vs. the MODULE_LICENSE string. So subtracting those
      480 known instances from the conflicting 2800 of today more than 25% of the
      module authors got it wrong and it's a high propability that a large
      portion of the rest just got it right by chance.
      
      There is no value for the module loader to convey the detailed license
      information as the only decision to be made is whether the module is free
      software or not.
      
      The "and additional rights", "BSD" and "MPL" strings are not conclusive
      license information either. So there is no point in trying to make the GPL
      part conclusive and exact. As shown above it's already non conclusive for
      dual licensing and incoherent with a large portion of the module source.
      
      As an unintended side effect this distinction causes a major headache for
      license compliance, license scanners and the ongoing effort to clean up the
      license mess of the kernel.
      
      Therefore remove the well meant, but ill defined, distinction between "GPL"
      and "GPL v2" and document that:
      
        - "GPL" and "GPL v2" both express that the module is licensed under GPLv2
          (without a distinction of 'only' and 'or later') and is therefore kernel
          license compliant.
      
        - None of the MODULE_LICENSE strings can be used for expressing or
          determining the exact license
      
        - Their sole purpose is to decide whether the module is free software or
          not.
      
      Add a MODULE_LICENSE subsection to the license rule documentation as well.
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: default avatarPhilippe Ombredanne <pombredanne@nexb.com>
      Acked-by: default avatarJoe Perches <joe@perches.com>
      [jc: Did s/merily/merely/ ]
      Acked-by: default avatarJessica Yu <jeyu@kernel.org>
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      bf7fbeea
  2. 07 Feb, 2019 3 commits
  3. 06 Feb, 2019 2 commits
  4. 01 Feb, 2019 13 commits
  5. 21 Jan, 2019 6 commits
  6. 16 Jan, 2019 4 commits
    • Jonathan Corbet's avatar
      kernel-doc: suppress 'not described' warnings for embedded struct fields · be5cd20c
      Jonathan Corbet authored
      The ability to add kerneldoc comments for fields in embedded structures is
      useful, but it brought along a whole bunch of warnings for fields that
      could not be described before.  In many cases, there's little value in
      adding docs for these nested fields, and in cases like:
      
             	struct a {
                  struct b {
      	        int c;
      	    } d, e;
      	};
      
      "c" would have to be described twice (as d.c and e.c) to make the warnings
      go away.
      
      We can no doubt do something smarter, but simply suppressing the warnings
      for this case removes about 70 warnings from the docs build, freeing us to
      focus on the ones that matter more.  So make kerneldoc be silent about
      missing descriptions for any field containing a ".".
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      be5cd20c
    • Thomas Gleixner's avatar
      scripts/spdxcheck.py: Handle special quotation mark comments · 959b4968
      Thomas Gleixner authored
      The SuperH boot code files use a magic format for the SPDX identifier
      comment:
      
        LIST "SPDX-License-Identifier: .... "
      
      The trailing quotation mark is not stripped before the token parser is
      invoked and causes the scan to fail. Handle it gracefully.
      
      Fixes: 6a0abce4 ("sh: include: convert to SPDX identifiers")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Simon Horman <horms+renesas@verge.net.au>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Kate Stewart <kstewart@linuxfoundation.org>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      959b4968
    • Thomas Gleixner's avatar
      LICENSES: Add GCC runtime library exception text · 6e6c61d3
      Thomas Gleixner authored
      A recent commit added SPDX identifiers to the SuperH low level library code
      which originates from GCC. This code is licensed under the GPL 2.0 or later
      with the GCC runtime library exception.
      
      Unfortunately the authors did not bother to add the exception text to the
      LICENSES directory so spdxcheck fails with:
      
       arch/sh/lib/ashiftrt.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/ashlsi3.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/ashrsi3.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/lshrsi3.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/movmem.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/udiv_qrnnd.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/udivsi3.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/udivsi3_i4i-Os.S: 1:42 Invalid Exception ID: GCC-exception-2.0
       arch/sh/lib/udivsi3_i4i.S: 1:42 Invalid Exception ID: GCC-exception-2.0
      
      Add the exception text along with the required tags which allow automated
      checking.
      
      Fixes: 4494ce4f ("sh: lib: convert to SPDX identifiers")
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Cc: Simon Horman <horms+renesas@verge.net.au>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Kate Stewart <kstewart@linuxfoundation.org>
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      6e6c61d3
    • Yang Shi's avatar
      doc: memcontrol: fix the obsolete content about force empty · 053bc569
      Yang Shi authored
      We don't do page cache reparent anymore when offlining memcg, so update
      force empty related content accordingly.
      Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarYang Shi <yang.shi@linux.alibaba.com>
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      053bc569
  7. 15 Jan, 2019 8 commits
  8. 14 Jan, 2019 2 commits
  9. 08 Jan, 2019 1 commit