From b24413180f5600bcb3bb70fbed5cf186b60864bd Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 1 Nov 2017 15:07:57 +0100 Subject: License cleanup: add SPDX GPL-2.0 license identifier to files with no license Many source files in the tree are missing licensing information, which makes it harder for compliance tools to determine the correct license. By default all files without license information are under the default license of the kernel, which is GPL version 2. Update the files which contain no license information with the 'GPL-2.0' SPDX license identifier. The SPDX identifier is a legally binding shorthand, which can be used instead of the full boiler plate text. This patch is based on work done by Thomas Gleixner and Kate Stewart and Philippe Ombredanne. How this work was done: Patches were generated and checked against linux-4.14-rc6 for a subset of the use cases: - file had no licensing information it it. - file was a */uapi/* one with no licensing information in it, - file was a */uapi/* one with existing licensing information, Further patches will be generated in subsequent months to fix up cases where non-standard license headers were used, and references to license had to be inferred by heuristics based on keywords. The analysis to determine which SPDX License Identifier to be applied to a file was done in a spreadsheet of side by side results from of the output of two independent scanners (ScanCode & Windriver) producing SPDX tag:value files created by Philippe Ombredanne. Philippe prepared the base worksheet, and did an initial spot review of a few 1000 files. The 4.13 kernel was the starting point of the analysis with 60,537 files assessed. Kate Stewart did a file by file comparison of the scanner results in the spreadsheet to determine which SPDX license identifier(s) to be applied to the file. She confirmed any determination that was not immediately clear with lawyers working with the Linux Foundation. Criteria used to select files for SPDX license identifier tagging was: - Files considered eligible had to be source code files. - Make and config files were included as candidates if they contained >5 lines of source - File already had some variant of a license header in it (even if <5 lines). All documentation files were explicitly excluded. The following heuristics were used to determine which SPDX license identifiers to apply. - when both scanners couldn't find any license traces, file was considered to have no license information in it, and the top level COPYING file license applied. For non */uapi/* files that summary was: SPDX license identifier # files ---------------------------------------------------|------- GPL-2.0 11139 and resulted in the first patch in this series. If that file was a */uapi/* path one, it was "GPL-2.0 WITH Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was: SPDX license identifier # files ---------------------------------------------------|------- GPL-2.0 WITH Linux-syscall-note 930 and resulted in the second patch in this series. - if a file had some form of licensing information in it, and was one of the */uapi/* ones, it was denoted with the Linux-syscall-note if any GPL family license was found in the file or had no licensing in it (per prior point). Results summary: SPDX license identifier # files ---------------------------------------------------|------ GPL-2.0 WITH Linux-syscall-note 270 GPL-2.0+ WITH Linux-syscall-note 169 ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21 ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17 LGPL-2.1+ WITH Linux-syscall-note 15 GPL-1.0+ WITH Linux-syscall-note 14 ((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5 LGPL-2.0+ WITH Linux-syscall-note 4 LGPL-2.1 WITH Linux-syscall-note 3 ((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3 ((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1 and that resulted in the third patch in this series. - when the two scanners agreed on the detected license(s), that became the concluded license(s). - when there was disagreement between the two scanners (one detected a license but the other didn't, or they both detected different licenses) a manual inspection of the file occurred. - In most cases a manual inspection of the information in the file resulted in a clear resolution of the license that should apply (and which scanner probably needed to revisit its heuristics). - When it was not immediately clear, the license identifier was confirmed with lawyers working with the Linux Foundation. - If there was any question as to the appropriate license identifier, the file was flagged for further research and to be revisited later in time. In total, over 70 hours of logged manual review was done on the spreadsheet to determine the SPDX license identifiers to apply to the source files by Kate, Philippe, Thomas and, in some cases, confirmation by lawyers working with the Linux Foundation. Kate also obtained a third independent scan of the 4.13 code base from FOSSology, and compared selected files where the other two scanners disagreed against that SPDX file, to see if there was new insights. The Windriver scanner is based on an older version of FOSSology in part, so they are related. Thomas did random spot checks in about 500 files from the spreadsheets for the uapi headers and agreed with SPDX license identifier in the files he inspected. For the non-uapi files Thomas did random spot checks in about 15000 files. In initial set of patches against 4.14-rc6, 3 files were found to have copy/paste license identifier errors, and have been fixed to reflect the correct identifier. Additionally Philippe spent 10 hours this week doing a detailed manual inspection and review of the 12,461 patched files from the initial patch version early this week with: - a full scancode scan run, collecting the matched texts, detected license ids and scores - reviewing anything where there was a license detected (about 500+ files) to ensure that the applied SPDX license was correct - reviewing anything where there was no detection but the patch license was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied SPDX license was correct This produced a worksheet with 20 files needing minor correction. This worksheet was then exported into 3 different .csv files for the different types of files to be modified. These .csv files were then reviewed by Greg. Thomas wrote a script to parse the csv files and add the proper SPDX tag to the file, in the format that the file expected. This script was further refined by Greg based on the output to detect more types of files automatically and to distinguish between header and source .c files (which need different comment types.) Finally Greg ran the script using the .csv files to generate the patches. Reviewed-by: Kate Stewart Reviewed-by: Philippe Ombredanne Reviewed-by: Thomas Gleixner Signed-off-by: Greg Kroah-Hartman --- include/net/Space.h | 1 + include/net/act_api.h | 1 + include/net/addrconf.h | 1 + include/net/af_unix.h | 1 + include/net/ah.h | 1 + include/net/arp.h | 1 + include/net/atmclip.h | 1 + include/net/ax25.h | 1 + include/net/compat.h | 1 + include/net/datalink.h | 1 + include/net/dn.h | 1 + include/net/dn_dev.h | 1 + include/net/dn_fib.h | 1 + include/net/dn_neigh.h | 1 + include/net/dsfield.h | 1 + include/net/dst.h | 1 + include/net/dst_cache.h | 1 + include/net/dst_metadata.h | 1 + include/net/dst_ops.h | 1 + include/net/esp.h | 1 + include/net/fib_rules.h | 1 + include/net/firewire.h | 1 + include/net/flow.h | 1 + include/net/flow_dissector.h | 1 + include/net/fou.h | 1 + include/net/garp.h | 1 + include/net/gen_stats.h | 1 + include/net/genetlink.h | 1 + include/net/geneve.h | 1 + include/net/gre.h | 1 + include/net/gro_cells.h | 1 + include/net/gtp.h | 1 + include/net/gue.h | 1 + include/net/hwbm.h | 1 + include/net/ife.h | 1 + include/net/inet_common.h | 1 + include/net/inet_ecn.h | 1 + include/net/inet_frag.h | 1 + include/net/inetpeer.h | 1 + include/net/ip6_route.h | 1 + include/net/ip6_tunnel.h | 1 + include/net/ip_tunnels.h | 1 + include/net/ip_vs.h | 1 + include/net/ipcomp.h | 1 + include/net/ipconfig.h | 1 + include/net/ipx.h | 1 + include/net/iucv/af_iucv.h | 1 + include/net/iucv/iucv.h | 1 + include/net/iw_handler.h | 1 + include/net/lapb.h | 1 + include/net/lib80211.h | 1 + include/net/lwtunnel.h | 1 + include/net/mld.h | 1 + include/net/mrp.h | 1 + include/net/ncsi.h | 1 + include/net/ndisc.h | 1 + include/net/neighbour.h | 1 + include/net/net_namespace.h | 1 + include/net/net_ratelimit.h | 1 + include/net/netevent.h | 1 + include/net/netfilter/br_netfilter.h | 1 + include/net/netfilter/ipv4/nf_conntrack_ipv4.h | 1 + include/net/netfilter/ipv4/nf_defrag_ipv4.h | 1 + include/net/netfilter/ipv4/nf_dup_ipv4.h | 1 + include/net/netfilter/ipv4/nf_nat_masquerade.h | 1 + include/net/netfilter/ipv4/nf_reject.h | 1 + include/net/netfilter/ipv6/nf_conntrack_icmpv6.h | 1 + include/net/netfilter/ipv6/nf_conntrack_ipv6.h | 1 + include/net/netfilter/ipv6/nf_defrag_ipv6.h | 1 + include/net/netfilter/ipv6/nf_dup_ipv6.h | 1 + include/net/netfilter/ipv6/nf_nat_masquerade.h | 1 + include/net/netfilter/ipv6/nf_reject.h | 1 + include/net/netfilter/nf_conntrack.h | 1 + include/net/netfilter/nf_conntrack_core.h | 1 + include/net/netfilter/nf_conntrack_ecache.h | 1 + include/net/netfilter/nf_conntrack_expect.h | 1 + include/net/netfilter/nf_conntrack_extend.h | 1 + include/net/netfilter/nf_conntrack_helper.h | 1 + include/net/netfilter/nf_conntrack_l3proto.h | 1 + include/net/netfilter/nf_conntrack_l4proto.h | 1 + include/net/netfilter/nf_conntrack_labels.h | 1 + include/net/netfilter/nf_conntrack_seqadj.h | 1 + include/net/netfilter/nf_conntrack_synproxy.h | 1 + include/net/netfilter/nf_conntrack_timeout.h | 1 + include/net/netfilter/nf_conntrack_timestamp.h | 1 + include/net/netfilter/nf_conntrack_tuple.h | 1 + include/net/netfilter/nf_conntrack_zones.h | 1 + include/net/netfilter/nf_dup_netdev.h | 1 + include/net/netfilter/nf_log.h | 1 + include/net/netfilter/nf_nat.h | 1 + include/net/netfilter/nf_nat_core.h | 1 + include/net/netfilter/nf_nat_helper.h | 1 + include/net/netfilter/nf_nat_l3proto.h | 1 + include/net/netfilter/nf_nat_l4proto.h | 1 + include/net/netfilter/nf_nat_redirect.h | 1 + include/net/netfilter/nf_queue.h | 1 + include/net/netfilter/nf_socket.h | 1 + include/net/netfilter/nf_tables.h | 1 + include/net/netfilter/nf_tables_core.h | 1 + include/net/netfilter/nf_tables_ipv4.h | 1 + include/net/netfilter/nf_tables_ipv6.h | 1 + include/net/netfilter/nfnetlink_log.h | 1 + include/net/netfilter/nft_dup.h | 1 + include/net/netfilter/nft_fib.h | 1 + include/net/netfilter/nft_masq.h | 1 + include/net/netfilter/nft_meta.h | 1 + include/net/netfilter/nft_redir.h | 1 + include/net/netfilter/nft_reject.h | 1 + include/net/netfilter/xt_rateest.h | 1 + include/net/netlink.h | 1 + include/net/netns/can.h | 1 + include/net/netns/conntrack.h | 1 + include/net/netns/core.h | 1 + include/net/netns/dccp.h | 1 + include/net/netns/generic.h | 1 + include/net/netns/hash.h | 1 + include/net/netns/ieee802154_6lowpan.h | 1 + include/net/netns/ipv4.h | 1 + include/net/netns/ipv6.h | 1 + include/net/netns/mib.h | 1 + include/net/netns/mpls.h | 1 + include/net/netns/netfilter.h | 1 + include/net/netns/nftables.h | 1 + include/net/netns/packet.h | 1 + include/net/netns/sctp.h | 1 + include/net/netns/unix.h | 1 + include/net/netns/x_tables.h | 1 + include/net/netns/xfrm.h | 1 + include/net/netrom.h | 1 + include/net/nexthop.h | 1 + include/net/p8022.h | 1 + include/net/pkt_cls.h | 1 + include/net/pkt_sched.h | 1 + include/net/pptp.h | 1 + include/net/psample.h | 1 + include/net/psnap.h | 1 + include/net/rawv6.h | 1 + include/net/red.h | 1 + include/net/rose.h | 1 + include/net/rtnetlink.h | 1 + include/net/sch_generic.h | 1 + include/net/scm.h | 1 + include/net/secure_seq.h | 1 + include/net/smc.h | 1 + include/net/sock_reuseport.h | 1 + include/net/stp.h | 1 + include/net/tc_act/tc_connmark.h | 1 + include/net/tc_act/tc_csum.h | 1 + include/net/tc_act/tc_defact.h | 1 + include/net/tc_act/tc_gact.h | 1 + include/net/tc_act/tc_ife.h | 1 + include/net/tc_act/tc_ipt.h | 1 + include/net/tc_act/tc_mirred.h | 1 + include/net/tc_act/tc_nat.h | 1 + include/net/tc_act/tc_pedit.h | 1 + include/net/tc_act/tc_sample.h | 1 + include/net/transp_v6.h | 1 + include/net/tso.h | 1 + include/net/udp_tunnel.h | 1 + include/net/udplite.h | 1 + include/net/vxlan.h | 1 + include/net/wext.h | 1 + include/net/x25.h | 1 + include/net/x25device.h | 1 + include/net/xfrm.h | 1 + 165 files changed, 165 insertions(+) (limited to 'include/net') diff --git a/include/net/Space.h b/include/net/Space.h index 8a32771e4215..27fb5c937c4f 100644 --- a/include/net/Space.h +++ b/include/net/Space.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* A unified ethernet device probe. This is the easiest way to have every * ethernet adaptor have the name "eth[0123...]". */ diff --git a/include/net/act_api.h b/include/net/act_api.h index b944e0eb93be..97a908ac424d 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_ACT_API_H #define __NET_ACT_API_H diff --git a/include/net/addrconf.h b/include/net/addrconf.h index f44ff2476758..35f5aabd432f 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ADDRCONF_H #define _ADDRCONF_H diff --git a/include/net/af_unix.h b/include/net/af_unix.h index afb37f835449..a5ba41b3b867 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __LINUX_NET_AFUNIX_H #define __LINUX_NET_AFUNIX_H diff --git a/include/net/ah.h b/include/net/ah.h index 4e2dfa474a7e..2d2dea521169 100644 --- a/include/net/ah.h +++ b/include/net/ah.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_AH_H #define _NET_AH_H diff --git a/include/net/arp.h b/include/net/arp.h index 17d90e4e8dc5..dc8cd47f883b 100644 --- a/include/net/arp.h +++ b/include/net/arp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* linux/net/inet/arp.h */ #ifndef _ARP_H #define _ARP_H diff --git a/include/net/atmclip.h b/include/net/atmclip.h index 5865924d4aac..70e350e0db3d 100644 --- a/include/net/atmclip.h +++ b/include/net/atmclip.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* net/atm/atmarp.h - RFC1577 ATM ARP */ /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ diff --git a/include/net/ax25.h b/include/net/ax25.h index c4a0cf6f0810..76fb39c272a7 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Declarations of AX.25 type objects. * diff --git a/include/net/compat.h b/include/net/compat.h index 13de0ccaa059..a91bea80b9fc 100644 --- a/include/net/compat.h +++ b/include/net/compat.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef NET_COMPAT_H #define NET_COMPAT_H diff --git a/include/net/datalink.h b/include/net/datalink.h index 93cb18f729b5..a9663229b913 100644 --- a/include/net/datalink.h +++ b/include/net/datalink.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_INET_DATALINK_H_ #define _NET_INET_DATALINK_H_ diff --git a/include/net/dn.h b/include/net/dn.h index 913b73d239f5..fc0036228d20 100644 --- a/include/net/dn.h +++ b/include/net/dn.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DN_H #define _NET_DN_H diff --git a/include/net/dn_dev.h b/include/net/dn_dev.h index 197886cd7bdd..595b4f6c1eb1 100644 --- a/include/net/dn_dev.h +++ b/include/net/dn_dev.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DN_DEV_H #define _NET_DN_DEV_H diff --git a/include/net/dn_fib.h b/include/net/dn_fib.h index 81210a8b8d7c..6dd2213c5eb2 100644 --- a/include/net/dn_fib.h +++ b/include/net/dn_fib.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DN_FIB_H #define _NET_DN_FIB_H diff --git a/include/net/dn_neigh.h b/include/net/dn_neigh.h index 5e902fc3f4eb..2e3e7793973a 100644 --- a/include/net/dn_neigh.h +++ b/include/net/dn_neigh.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DN_NEIGH_H #define _NET_DN_NEIGH_H diff --git a/include/net/dsfield.h b/include/net/dsfield.h index e1ad903a8d6a..1a245ee10c95 100644 --- a/include/net/dsfield.h +++ b/include/net/dsfield.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* include/net/dsfield.h - Manipulation of the Differentiated Services field */ /* Written 1998-2000 by Werner Almesberger, EPFL ICA */ diff --git a/include/net/dst.h b/include/net/dst.h index 06a6765da074..694c2e6ae618 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * net/dst.h Protocol independent destination cache definitions. * diff --git a/include/net/dst_cache.h b/include/net/dst_cache.h index 151accae708b..72fd5067c353 100644 --- a/include/net/dst_cache.h +++ b/include/net/dst_cache.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DST_CACHE_H #define _NET_DST_CACHE_H diff --git a/include/net/dst_metadata.h b/include/net/dst_metadata.h index a803129a4849..91bc7bdf6bf5 100644 --- a/include/net/dst_metadata.h +++ b/include/net/dst_metadata.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_DST_METADATA_H #define __NET_DST_METADATA_H 1 diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h index c84b3287e38b..5ec645f27ee3 100644 --- a/include/net/dst_ops.h +++ b/include/net/dst_ops.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_DST_OPS_H #define _NET_DST_OPS_H #include diff --git a/include/net/esp.h b/include/net/esp.h index c41994d1bfef..117652eb6ea3 100644 --- a/include/net/esp.h +++ b/include/net/esp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_ESP_H #define _NET_ESP_H diff --git a/include/net/fib_rules.h b/include/net/fib_rules.h index 3d7f1cefc6f5..648caf90ec07 100644 --- a/include/net/fib_rules.h +++ b/include/net/fib_rules.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_FIB_RULES_H #define __NET_FIB_RULES_H diff --git a/include/net/firewire.h b/include/net/firewire.h index 31bcbfe7a220..299e5df38552 100644 --- a/include/net/firewire.h +++ b/include/net/firewire.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_FIREWIRE_H #define _NET_FIREWIRE_H diff --git a/include/net/flow.h b/include/net/flow.h index eb60cee30b44..f1624fd5b1d0 100644 --- a/include/net/flow.h +++ b/include/net/flow.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * * Generic internet FLOW. diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h index fc3dce730a6b..22aba321282d 100644 --- a/include/net/flow_dissector.h +++ b/include/net/flow_dissector.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_FLOW_DISSECTOR_H #define _NET_FLOW_DISSECTOR_H diff --git a/include/net/fou.h b/include/net/fou.h index f5cc6910a27e..80f56e275b08 100644 --- a/include/net/fou.h +++ b/include/net/fou.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_FOU_H #define __NET_FOU_H diff --git a/include/net/garp.h b/include/net/garp.h index abf33bbd2e6a..c41833bd4590 100644 --- a/include/net/garp.h +++ b/include/net/garp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_GARP_H #define _NET_GARP_H diff --git a/include/net/gen_stats.h b/include/net/gen_stats.h index 8b7aa370e7a4..304f7aa9cc01 100644 --- a/include/net/gen_stats.h +++ b/include/net/gen_stats.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_GEN_STATS_H #define __NET_GEN_STATS_H diff --git a/include/net/genetlink.h b/include/net/genetlink.h index c59a098221db..5ac169a735f4 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_GENERIC_NETLINK_H #define __NET_GENERIC_NETLINK_H diff --git a/include/net/geneve.h b/include/net/geneve.h index ec0327d4331b..a7600ed55ea3 100644 --- a/include/net/geneve.h +++ b/include/net/geneve.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_GENEVE_H #define __NET_GENEVE_H 1 diff --git a/include/net/gre.h b/include/net/gre.h index d25d836c129b..f90585decbce 100644 --- a/include/net/gre.h +++ b/include/net/gre.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __LINUX_GRE_H #define __LINUX_GRE_H diff --git a/include/net/gro_cells.h b/include/net/gro_cells.h index fcaf8f479130..596688b67a2a 100644 --- a/include/net/gro_cells.h +++ b/include/net/gro_cells.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_GRO_CELLS_H #define _NET_GRO_CELLS_H diff --git a/include/net/gtp.h b/include/net/gtp.h index 6398891b99ba..0e16ebb2a82d 100644 --- a/include/net/gtp.h +++ b/include/net/gtp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _GTP_H_ #define _GTP_H_ diff --git a/include/net/gue.h b/include/net/gue.h index 3f28ec7f1c7f..2fdb29ca74c2 100644 --- a/include/net/gue.h +++ b/include/net/gue.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_GUE_H #define __NET_GUE_H diff --git a/include/net/hwbm.h b/include/net/hwbm.h index 47d08662501b..89085e2e2da5 100644 --- a/include/net/hwbm.h +++ b/include/net/hwbm.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _HWBM_H #define _HWBM_H diff --git a/include/net/ife.h b/include/net/ife.h index 2d87d6898b0a..44b9c00f7223 100644 --- a/include/net/ife.h +++ b/include/net/ife.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_IFE_H #define __NET_IFE_H diff --git a/include/net/inet_common.h b/include/net/inet_common.h index f39ae697347f..5a54c9570977 100644 --- a/include/net/inet_common.h +++ b/include/net/inet_common.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _INET_COMMON_H #define _INET_COMMON_H diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h index dce2d586d9ce..d30e4c869438 100644 --- a/include/net/inet_ecn.h +++ b/include/net/inet_ecn.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _INET_ECN_H_ #define _INET_ECN_H_ diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h index fc59e0775e00..a6e4edd8d4a2 100644 --- a/include/net/inet_frag.h +++ b/include/net/inet_frag.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_FRAG_H__ #define __NET_FRAG_H__ diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h index 950ed182f62f..00b5e7825508 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * INETPEER - A storage for permanent information about peers * diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index ee96f402cb75..bee528135cf1 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_IP6_ROUTE_H #define _NET_IP6_ROUTE_H diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h index 08fbc7f7d8d7..d66f70f63734 100644 --- a/include/net/ip6_tunnel.h +++ b/include/net/ip6_tunnel.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_IP6_TUNNEL_H #define _NET_IP6_TUNNEL_H diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 992652856fe8..eb2321a13506 100644 --- a/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_IP_TUNNELS_H #define __NET_IP_TUNNELS_H 1 diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 4f4f786255ef..5d08c1950e7d 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* IP Virtual Server * data structure and functionality definitions */ diff --git a/include/net/ipcomp.h b/include/net/ipcomp.h index cc4f30cd7315..fee6fc451597 100644 --- a/include/net/ipcomp.h +++ b/include/net/ipcomp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_IPCOMP_H #define _NET_IPCOMP_H diff --git a/include/net/ipconfig.h b/include/net/ipconfig.h index c74cc1bd5a02..e3534299bd2a 100644 --- a/include/net/ipconfig.h +++ b/include/net/ipconfig.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 1997 Martin Mares * diff --git a/include/net/ipx.h b/include/net/ipx.h index af32b97b5ddd..baf090390998 100644 --- a/include/net/ipx.h +++ b/include/net/ipx.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_INET_IPX_H_ #define _NET_INET_IPX_H_ /* diff --git a/include/net/iucv/af_iucv.h b/include/net/iucv/af_iucv.h index 714cc9a54a4c..070e93a17c59 100644 --- a/include/net/iucv/af_iucv.h +++ b/include/net/iucv/af_iucv.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright 2006 IBM Corporation * IUCV protocol stack for Linux on zSeries diff --git a/include/net/iucv/iucv.h b/include/net/iucv/iucv.h index b867b0cf79e8..f9e88401d7da 100644 --- a/include/net/iucv/iucv.h +++ b/include/net/iucv/iucv.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * drivers/s390/net/iucv.h * IUCV base support. diff --git a/include/net/iw_handler.h b/include/net/iw_handler.h index 2509728650bd..725282095840 100644 --- a/include/net/iw_handler.h +++ b/include/net/iw_handler.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * This file define the new driver API for Wireless Extensions * diff --git a/include/net/lapb.h b/include/net/lapb.h index 85e773742f4e..ccc3d1f020b0 100644 --- a/include/net/lapb.h +++ b/include/net/lapb.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LAPB_H #define _LAPB_H #include diff --git a/include/net/lib80211.h b/include/net/lib80211.h index aab0f427edb5..8b47d3a51cf8 100644 --- a/include/net/lib80211.h +++ b/include/net/lib80211.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * lib80211.h -- common bits for IEEE802.11 wireless drivers * diff --git a/include/net/lwtunnel.h b/include/net/lwtunnel.h index 7c26863b8cf4..d747ef975cd8 100644 --- a/include/net/lwtunnel.h +++ b/include/net/lwtunnel.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_LWTUNNEL_H #define __NET_LWTUNNEL_H 1 diff --git a/include/net/mld.h b/include/net/mld.h index 01d751303498..b0f5b3105ef0 100644 --- a/include/net/mld.h +++ b/include/net/mld.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef LINUX_MLD_H #define LINUX_MLD_H diff --git a/include/net/mrp.h b/include/net/mrp.h index 31912c3be772..ef58b4a07190 100644 --- a/include/net/mrp.h +++ b/include/net/mrp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_MRP_H #define _NET_MRP_H diff --git a/include/net/ncsi.h b/include/net/ncsi.h index fdc60ff2511d..fbefe80361ee 100644 --- a/include/net/ncsi.h +++ b/include/net/ncsi.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_NCSI_H #define __NET_NCSI_H diff --git a/include/net/ndisc.h b/include/net/ndisc.h index 31b1bb11ba3f..ddfbb591e2c5 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NDISC_H #define _NDISC_H diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 9816df225af3..a964366a7ef5 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_NEIGHBOUR_H #define _NET_NEIGHBOUR_H diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 57faa375eab9..10f99dafd5ac 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Operations on the network namespace */ diff --git a/include/net/net_ratelimit.h b/include/net/net_ratelimit.h index 7727b4247daf..93c1bd5133c2 100644 --- a/include/net/net_ratelimit.h +++ b/include/net/net_ratelimit.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_NET_RATELIMIT_H #define _LINUX_NET_RATELIMIT_H diff --git a/include/net/netevent.h b/include/net/netevent.h index f440df172b56..f728d9cad170 100644 --- a/include/net/netevent.h +++ b/include/net/netevent.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_EVENT_H #define _NET_EVENT_H diff --git a/include/net/netfilter/br_netfilter.h b/include/net/netfilter/br_netfilter.h index 925524ede6c8..74af19c3a8f7 100644 --- a/include/net/netfilter/br_netfilter.h +++ b/include/net/netfilter/br_netfilter.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _BR_NETFILTER_H_ #define _BR_NETFILTER_H_ diff --git a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h index 919e4e8af327..2cc728ef8cd0 100644 --- a/include/net/netfilter/ipv4/nf_conntrack_ipv4.h +++ b/include/net/netfilter/ipv4/nf_conntrack_ipv4.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * IPv4 support for nf_conntrack. * diff --git a/include/net/netfilter/ipv4/nf_defrag_ipv4.h b/include/net/netfilter/ipv4/nf_defrag_ipv4.h index db405f70e538..bcbd724cc048 100644 --- a/include/net/netfilter/ipv4/nf_defrag_ipv4.h +++ b/include/net/netfilter/ipv4/nf_defrag_ipv4.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_DEFRAG_IPV4_H #define _NF_DEFRAG_IPV4_H diff --git a/include/net/netfilter/ipv4/nf_dup_ipv4.h b/include/net/netfilter/ipv4/nf_dup_ipv4.h index 0a14733e8b82..c962e0be3549 100644 --- a/include/net/netfilter/ipv4/nf_dup_ipv4.h +++ b/include/net/netfilter/ipv4/nf_dup_ipv4.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_DUP_IPV4_H_ #define _NF_DUP_IPV4_H_ diff --git a/include/net/netfilter/ipv4/nf_nat_masquerade.h b/include/net/netfilter/ipv4/nf_nat_masquerade.h index a9c001c646da..ebd869473603 100644 --- a/include/net/netfilter/ipv4/nf_nat_masquerade.h +++ b/include/net/netfilter/ipv4/nf_nat_masquerade.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_MASQUERADE_IPV4_H_ #define _NF_NAT_MASQUERADE_IPV4_H_ diff --git a/include/net/netfilter/ipv4/nf_reject.h b/include/net/netfilter/ipv4/nf_reject.h index df7ecd806aba..2eb43fcefc50 100644 --- a/include/net/netfilter/ipv4/nf_reject.h +++ b/include/net/netfilter/ipv4/nf_reject.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _IPV4_NF_REJECT_H #define _IPV4_NF_REJECT_H diff --git a/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h b/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h index 67edd50a398a..c86895bc5eb6 100644 --- a/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h +++ b/include/net/netfilter/ipv6/nf_conntrack_icmpv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * ICMPv6 tracking. * diff --git a/include/net/netfilter/ipv6/nf_conntrack_ipv6.h b/include/net/netfilter/ipv6/nf_conntrack_ipv6.h index eaea968f8657..79a335c0d8b8 100644 --- a/include/net/netfilter/ipv6/nf_conntrack_ipv6.h +++ b/include/net/netfilter/ipv6/nf_conntrack_ipv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_IPV6_H #define _NF_CONNTRACK_IPV6_H diff --git a/include/net/netfilter/ipv6/nf_defrag_ipv6.h b/include/net/netfilter/ipv6/nf_defrag_ipv6.h index 7664efe37974..9d7e28736da9 100644 --- a/include/net/netfilter/ipv6/nf_defrag_ipv6.h +++ b/include/net/netfilter/ipv6/nf_defrag_ipv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_DEFRAG_IPV6_H #define _NF_DEFRAG_IPV6_H diff --git a/include/net/netfilter/ipv6/nf_dup_ipv6.h b/include/net/netfilter/ipv6/nf_dup_ipv6.h index fa6237b382a3..caf0c2dd8ee7 100644 --- a/include/net/netfilter/ipv6/nf_dup_ipv6.h +++ b/include/net/netfilter/ipv6/nf_dup_ipv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_DUP_IPV6_H_ #define _NF_DUP_IPV6_H_ diff --git a/include/net/netfilter/ipv6/nf_nat_masquerade.h b/include/net/netfilter/ipv6/nf_nat_masquerade.h index 0a13396cd390..1ed4f2631ed6 100644 --- a/include/net/netfilter/ipv6/nf_nat_masquerade.h +++ b/include/net/netfilter/ipv6/nf_nat_masquerade.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_MASQUERADE_IPV6_H_ #define _NF_NAT_MASQUERADE_IPV6_H_ diff --git a/include/net/netfilter/ipv6/nf_reject.h b/include/net/netfilter/ipv6/nf_reject.h index 0ea4fa37db16..3a5a9a36a0b2 100644 --- a/include/net/netfilter/ipv6/nf_reject.h +++ b/include/net/netfilter/ipv6/nf_reject.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _IPV6_NF_REJECT_H #define _IPV6_NF_REJECT_H diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 8f3bd30511de..792c3f6d30ce 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Connection state tracking for netfilter. This is separated from, * but required by, the (future) NAT layer; it can also be used by an iptables diff --git a/include/net/netfilter/nf_conntrack_core.h b/include/net/netfilter/nf_conntrack_core.h index 81d7f8a30945..9b5e7634713e 100644 --- a/include/net/netfilter/nf_conntrack_core.h +++ b/include/net/netfilter/nf_conntrack_core.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * This header is used to share core functionality between the * standalone connection tracking module, and the compatibility layer's use diff --git a/include/net/netfilter/nf_conntrack_ecache.h b/include/net/netfilter/nf_conntrack_ecache.h index 2a10c6570fcc..3f1ce9a8776e 100644 --- a/include/net/netfilter/nf_conntrack_ecache.h +++ b/include/net/netfilter/nf_conntrack_ecache.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * connection tracking event cache. */ diff --git a/include/net/netfilter/nf_conntrack_expect.h b/include/net/netfilter/nf_conntrack_expect.h index 818def011110..006e430d1cdf 100644 --- a/include/net/netfilter/nf_conntrack_expect.h +++ b/include/net/netfilter/nf_conntrack_expect.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * connection tracking expectations. */ diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h index 4944bc9153cf..21f887c5058c 100644 --- a/include/net/netfilter/nf_conntrack_extend.h +++ b/include/net/netfilter/nf_conntrack_extend.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_EXTEND_H #define _NF_CONNTRACK_EXTEND_H diff --git a/include/net/netfilter/nf_conntrack_helper.h b/include/net/netfilter/nf_conntrack_helper.h index c519bb5b5bb8..fc39bbaf107c 100644 --- a/include/net/netfilter/nf_conntrack_helper.h +++ b/include/net/netfilter/nf_conntrack_helper.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * connection tracking helpers. * diff --git a/include/net/netfilter/nf_conntrack_l3proto.h b/include/net/netfilter/nf_conntrack_l3proto.h index 6269deecbee7..d5808f3e2715 100644 --- a/include/net/netfilter/nf_conntrack_l3proto.h +++ b/include/net/netfilter/nf_conntrack_l3proto.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C)2003,2004 USAGI/WIDE Project * diff --git a/include/net/netfilter/nf_conntrack_l4proto.h b/include/net/netfilter/nf_conntrack_l4proto.h index 738a0307a96b..510192eb7e9d 100644 --- a/include/net/netfilter/nf_conntrack_l4proto.h +++ b/include/net/netfilter/nf_conntrack_l4proto.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Header for use in defining a given L4 protocol for connection tracking. * diff --git a/include/net/netfilter/nf_conntrack_labels.h b/include/net/netfilter/nf_conntrack_labels.h index 1723a67c0b0a..4eacce6f3bcc 100644 --- a/include/net/netfilter/nf_conntrack_labels.h +++ b/include/net/netfilter/nf_conntrack_labels.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #include #include #include diff --git a/include/net/netfilter/nf_conntrack_seqadj.h b/include/net/netfilter/nf_conntrack_seqadj.h index 4b3362991a25..0a10b50537ae 100644 --- a/include/net/netfilter/nf_conntrack_seqadj.h +++ b/include/net/netfilter/nf_conntrack_seqadj.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_SEQADJ_H #define _NF_CONNTRACK_SEQADJ_H diff --git a/include/net/netfilter/nf_conntrack_synproxy.h b/include/net/netfilter/nf_conntrack_synproxy.h index a2fcb5271726..2c7559a54092 100644 --- a/include/net/netfilter/nf_conntrack_synproxy.h +++ b/include/net/netfilter/nf_conntrack_synproxy.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_SYNPROXY_H #define _NF_CONNTRACK_SYNPROXY_H diff --git a/include/net/netfilter/nf_conntrack_timeout.h b/include/net/netfilter/nf_conntrack_timeout.h index 483d104fa254..9468ab4ad12d 100644 --- a/include/net/netfilter/nf_conntrack_timeout.h +++ b/include/net/netfilter/nf_conntrack_timeout.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_TIMEOUT_H #define _NF_CONNTRACK_TIMEOUT_H diff --git a/include/net/netfilter/nf_conntrack_timestamp.h b/include/net/netfilter/nf_conntrack_timestamp.h index 300ae2209f25..3b661986be8f 100644 --- a/include/net/netfilter/nf_conntrack_timestamp.h +++ b/include/net/netfilter/nf_conntrack_timestamp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_TSTAMP_H #define _NF_CONNTRACK_TSTAMP_H diff --git a/include/net/netfilter/nf_conntrack_tuple.h b/include/net/netfilter/nf_conntrack_tuple.h index aea3f8221be0..bf0444e111a6 100644 --- a/include/net/netfilter/nf_conntrack_tuple.h +++ b/include/net/netfilter/nf_conntrack_tuple.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Definitions and Declarations for tuple. * diff --git a/include/net/netfilter/nf_conntrack_zones.h b/include/net/netfilter/nf_conntrack_zones.h index 64a718b60839..52950baa3ab5 100644 --- a/include/net/netfilter/nf_conntrack_zones.h +++ b/include/net/netfilter/nf_conntrack_zones.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_CONNTRACK_ZONES_H #define _NF_CONNTRACK_ZONES_H diff --git a/include/net/netfilter/nf_dup_netdev.h b/include/net/netfilter/nf_dup_netdev.h index 3e919356bedf..2a6f6dcad3d9 100644 --- a/include/net/netfilter/nf_dup_netdev.h +++ b/include/net/netfilter/nf_dup_netdev.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_DUP_NETDEV_H_ #define _NF_DUP_NETDEV_H_ diff --git a/include/net/netfilter/nf_log.h b/include/net/netfilter/nf_log.h index 42e0696f38d8..e811ac07ea94 100644 --- a/include/net/netfilter/nf_log.h +++ b/include/net/netfilter/nf_log.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_LOG_H #define _NF_LOG_H diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h index b71701302e61..207a467e7ca6 100644 --- a/include/net/netfilter/nf_nat.h +++ b/include/net/netfilter/nf_nat.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_H #define _NF_NAT_H #include diff --git a/include/net/netfilter/nf_nat_core.h b/include/net/netfilter/nf_nat_core.h index 186c54138f35..235bd0e9a5aa 100644 --- a/include/net/netfilter/nf_nat_core.h +++ b/include/net/netfilter/nf_nat_core.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_CORE_H #define _NF_NAT_CORE_H #include diff --git a/include/net/netfilter/nf_nat_helper.h b/include/net/netfilter/nf_nat_helper.h index fbfa5acf4f14..97d7033e93a4 100644 --- a/include/net/netfilter/nf_nat_helper.h +++ b/include/net/netfilter/nf_nat_helper.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_HELPER_H #define _NF_NAT_HELPER_H /* NAT protocol helper routines. */ diff --git a/include/net/netfilter/nf_nat_l3proto.h b/include/net/netfilter/nf_nat_l3proto.h index aef3e5fc9fd9..ce7c2b4e64bb 100644 --- a/include/net/netfilter/nf_nat_l3proto.h +++ b/include/net/netfilter/nf_nat_l3proto.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_L3PROTO_H #define _NF_NAT_L3PROTO_H diff --git a/include/net/netfilter/nf_nat_l4proto.h b/include/net/netfilter/nf_nat_l4proto.h index 3923150f2a1e..67835ff8a2d9 100644 --- a/include/net/netfilter/nf_nat_l4proto.h +++ b/include/net/netfilter/nf_nat_l4proto.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* Header for use in defining a given protocol. */ #ifndef _NF_NAT_L4PROTO_H #define _NF_NAT_L4PROTO_H diff --git a/include/net/netfilter/nf_nat_redirect.h b/include/net/netfilter/nf_nat_redirect.h index 73b729543309..5ddabb08c472 100644 --- a/include/net/netfilter/nf_nat_redirect.h +++ b/include/net/netfilter/nf_nat_redirect.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_NAT_REDIRECT_H_ #define _NF_NAT_REDIRECT_H_ diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h index 39468720fc19..814058d0f167 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_QUEUE_H #define _NF_QUEUE_H diff --git a/include/net/netfilter/nf_socket.h b/include/net/netfilter/nf_socket.h index f2fc39c97d43..8230fefff9f5 100644 --- a/include/net/netfilter/nf_socket.h +++ b/include/net/netfilter/nf_socket.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_SOCK_H_ #define _NF_SOCK_H_ diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 0f5b12a4ad09..079c69cae2f6 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_NF_TABLES_H #define _NET_NF_TABLES_H diff --git a/include/net/netfilter/nf_tables_core.h b/include/net/netfilter/nf_tables_core.h index 424684c33771..ea5aab568be8 100644 --- a/include/net/netfilter/nf_tables_core.h +++ b/include/net/netfilter/nf_tables_core.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_NF_TABLES_CORE_H #define _NET_NF_TABLES_CORE_H diff --git a/include/net/netfilter/nf_tables_ipv4.h b/include/net/netfilter/nf_tables_ipv4.h index 25e33aee91e7..f0896ba456c4 100644 --- a/include/net/netfilter/nf_tables_ipv4.h +++ b/include/net/netfilter/nf_tables_ipv4.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_TABLES_IPV4_H_ #define _NF_TABLES_IPV4_H_ diff --git a/include/net/netfilter/nf_tables_ipv6.h b/include/net/netfilter/nf_tables_ipv6.h index 97983d1c05e4..b8065b72f56e 100644 --- a/include/net/netfilter/nf_tables_ipv6.h +++ b/include/net/netfilter/nf_tables_ipv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NF_TABLES_IPV6_H_ #define _NF_TABLES_IPV6_H_ diff --git a/include/net/netfilter/nfnetlink_log.h b/include/net/netfilter/nfnetlink_log.h index 5ca3f14f0998..612cfb63ac68 100644 --- a/include/net/netfilter/nfnetlink_log.h +++ b/include/net/netfilter/nfnetlink_log.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _KER_NFNETLINK_LOG_H #define _KER_NFNETLINK_LOG_H diff --git a/include/net/netfilter/nft_dup.h b/include/net/netfilter/nft_dup.h index 6b84cf6491a2..4d9d512984b2 100644 --- a/include/net/netfilter/nft_dup.h +++ b/include/net/netfilter/nft_dup.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_DUP_H_ #define _NFT_DUP_H_ diff --git a/include/net/netfilter/nft_fib.h b/include/net/netfilter/nft_fib.h index 381af9469e6a..a88f92737308 100644 --- a/include/net/netfilter/nft_fib.h +++ b/include/net/netfilter/nft_fib.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_FIB_H_ #define _NFT_FIB_H_ diff --git a/include/net/netfilter/nft_masq.h b/include/net/netfilter/nft_masq.h index a3f3c11b2526..e51ab3815797 100644 --- a/include/net/netfilter/nft_masq.h +++ b/include/net/netfilter/nft_masq.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_MASQ_H_ #define _NFT_MASQ_H_ diff --git a/include/net/netfilter/nft_meta.h b/include/net/netfilter/nft_meta.h index 1139cde0fdc5..5c69e9b09388 100644 --- a/include/net/netfilter/nft_meta.h +++ b/include/net/netfilter/nft_meta.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_META_H_ #define _NFT_META_H_ diff --git a/include/net/netfilter/nft_redir.h b/include/net/netfilter/nft_redir.h index a2d67546afab..4a970737c03c 100644 --- a/include/net/netfilter/nft_redir.h +++ b/include/net/netfilter/nft_redir.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_REDIR_H_ #define _NFT_REDIR_H_ diff --git a/include/net/netfilter/nft_reject.h b/include/net/netfilter/nft_reject.h index 02e28c529b29..de80c50761f0 100644 --- a/include/net/netfilter/nft_reject.h +++ b/include/net/netfilter/nft_reject.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NFT_REJECT_H_ #define _NFT_REJECT_H_ diff --git a/include/net/netfilter/xt_rateest.h b/include/net/netfilter/xt_rateest.h index 130e58361f99..b1db13772554 100644 --- a/include/net/netfilter/xt_rateest.h +++ b/include/net/netfilter/xt_rateest.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _XT_RATEEST_H #define _XT_RATEEST_H diff --git a/include/net/netlink.h b/include/net/netlink.h index 14c289393071..0c154f98e987 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_NETLINK_H #define __NET_NETLINK_H diff --git a/include/net/netns/can.h b/include/net/netns/can.h index b106e6ae2e5b..ecf238b8862c 100644 --- a/include/net/netns/can.h +++ b/include/net/netns/can.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * can in net namespaces */ diff --git a/include/net/netns/conntrack.h b/include/net/netns/conntrack.h index 17724c62de97..9795d628a127 100644 --- a/include/net/netns/conntrack.h +++ b/include/net/netns/conntrack.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_CONNTRACK_H #define __NETNS_CONNTRACK_H diff --git a/include/net/netns/core.h b/include/net/netns/core.h index 78eb1ff75475..0ad4d0c71228 100644 --- a/include/net/netns/core.h +++ b/include/net/netns/core.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_CORE_H__ #define __NETNS_CORE_H__ diff --git a/include/net/netns/dccp.h b/include/net/netns/dccp.h index 98d2a7ce1f71..cdbc4f5b8390 100644 --- a/include/net/netns/dccp.h +++ b/include/net/netns/dccp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_DCCP_H__ #define __NETNS_DCCP_H__ diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h index f15daaa89385..8a1ab47c3fb3 100644 --- a/include/net/netns/generic.h +++ b/include/net/netns/generic.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * generic net pointers */ diff --git a/include/net/netns/hash.h b/include/net/netns/hash.h index 69a6715d9f3f..24c78183a4c2 100644 --- a/include/net/netns/hash.h +++ b/include/net/netns/hash.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_NS_HASH_H__ #define __NET_NS_HASH_H__ diff --git a/include/net/netns/ieee802154_6lowpan.h b/include/net/netns/ieee802154_6lowpan.h index 8170f8d7052b..736aeac52f56 100644 --- a/include/net/netns/ieee802154_6lowpan.h +++ b/include/net/netns/ieee802154_6lowpan.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * ieee802154 6lowpan in net namespaces */ diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 20d061c805e3..8fcff2837484 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * ipv4 in net namespaces */ diff --git a/include/net/netns/ipv6.h b/include/net/netns/ipv6.h index 2544f9760a42..dc825a5ddd7f 100644 --- a/include/net/netns/ipv6.h +++ b/include/net/netns/ipv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * ipv6 in net namespaces */ diff --git a/include/net/netns/mib.h b/include/net/netns/mib.h index d542a4b28cca..830bdf345b17 100644 --- a/include/net/netns/mib.h +++ b/include/net/netns/mib.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_MIB_H__ #define __NETNS_MIB_H__ diff --git a/include/net/netns/mpls.h b/include/net/netns/mpls.h index 6608b3693385..a7bdcfbb0b28 100644 --- a/include/net/netns/mpls.h +++ b/include/net/netns/mpls.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * mpls in net namespaces */ diff --git a/include/net/netns/netfilter.h b/include/net/netns/netfilter.h index 72d66c8763d0..cc00af2ac2d7 100644 --- a/include/net/netns/netfilter.h +++ b/include/net/netns/netfilter.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_NETFILTER_H #define __NETNS_NETFILTER_H diff --git a/include/net/netns/nftables.h b/include/net/netns/nftables.h index c80781146019..4109b5f3010f 100644 --- a/include/net/netns/nftables.h +++ b/include/net/netns/nftables.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NETNS_NFTABLES_H_ #define _NETNS_NFTABLES_H_ diff --git a/include/net/netns/packet.h b/include/net/netns/packet.h index 17ec2b95c062..aae69bb43cde 100644 --- a/include/net/netns/packet.h +++ b/include/net/netns/packet.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Packet network namespace */ diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h index b7871d018354..ebc813277662 100644 --- a/include/net/netns/sctp.h +++ b/include/net/netns/sctp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_SCTP_H__ #define __NETNS_SCTP_H__ diff --git a/include/net/netns/unix.h b/include/net/netns/unix.h index 284649d4dfb4..91a3d7e39198 100644 --- a/include/net/netns/unix.h +++ b/include/net/netns/unix.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Unix network namespace */ diff --git a/include/net/netns/x_tables.h b/include/net/netns/x_tables.h index c8a7681efa6a..9bc5a12fdbb0 100644 --- a/include/net/netns/x_tables.h +++ b/include/net/netns/x_tables.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_X_TABLES_H #define __NETNS_X_TABLES_H diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h index 611521646dd4..9991e5ef52cc 100644 --- a/include/net/netns/xfrm.h +++ b/include/net/netns/xfrm.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NETNS_XFRM_H #define __NETNS_XFRM_H diff --git a/include/net/netrom.h b/include/net/netrom.h index 443a4ffca7aa..0dad2dd5f9d7 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Declarations of NET/ROM type objects. * diff --git a/include/net/nexthop.h b/include/net/nexthop.h index 3334dbfa5aa4..36bb794f5cd6 100644 --- a/include/net/nexthop.h +++ b/include/net/nexthop.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_NEXTHOP_H #define __NET_NEXTHOP_H diff --git a/include/net/p8022.h b/include/net/p8022.h index 05e41383856b..c2bacc66bfbc 100644 --- a/include/net/p8022.h +++ b/include/net/p8022.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_P8022_H #define _NET_P8022_H struct datalink_proto * diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index e80edd8879ef..13b23f3ed69a 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_PKT_CLS_H #define __NET_PKT_CLS_H diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 259bc191ba59..b3869f97d37d 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_PKT_SCHED_H #define __NET_PKT_SCHED_H diff --git a/include/net/pptp.h b/include/net/pptp.h index 92e9f1fe2628..383e25ca53a7 100644 --- a/include/net/pptp.h +++ b/include/net/pptp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_PPTP_H #define _NET_PPTP_H diff --git a/include/net/psample.h b/include/net/psample.h index 8888b0e1a82e..9b80f814ab04 100644 --- a/include/net/psample.h +++ b/include/net/psample.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_PSAMPLE_H #define __NET_PSAMPLE_H diff --git a/include/net/psnap.h b/include/net/psnap.h index 78db4cc1306a..7cb0c8ab4171 100644 --- a/include/net/psnap.h +++ b/include/net/psnap.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_PSNAP_H #define _NET_PSNAP_H diff --git a/include/net/rawv6.h b/include/net/rawv6.h index 4addc5c988e0..53d86b6055e8 100644 --- a/include/net/rawv6.h +++ b/include/net/rawv6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_RAWV6_H #define _NET_RAWV6_H diff --git a/include/net/red.h b/include/net/red.h index 208e718e16b9..9a9347710701 100644 --- a/include/net/red.h +++ b/include/net/red.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_SCHED_RED_H #define __NET_SCHED_RED_H diff --git a/include/net/rose.h b/include/net/rose.h index 50811fe2c585..04b72681f2ab 100644 --- a/include/net/rose.h +++ b/include/net/rose.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Declarations of Rose type objects. * diff --git a/include/net/rtnetlink.h b/include/net/rtnetlink.h index 21837ca68ecc..7b938fbeebc1 100644 --- a/include/net/rtnetlink.h +++ b/include/net/rtnetlink.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_RTNETLINK_H #define __NET_RTNETLINK_H diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 135f5a2dd931..1b33a6c8b477 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_SCHED_GENERIC_H #define __NET_SCHED_GENERIC_H diff --git a/include/net/scm.h b/include/net/scm.h index 142ea9e7a6d0..903771c8d4e3 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __LINUX_NET_SCM_H #define __LINUX_NET_SCM_H diff --git a/include/net/secure_seq.h b/include/net/secure_seq.h index 031bf16d1521..d7d2495f83c2 100644 --- a/include/net/secure_seq.h +++ b/include/net/secure_seq.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_SECURE_SEQ #define _NET_SECURE_SEQ diff --git a/include/net/smc.h b/include/net/smc.h index 12d26358ad9f..8381d163fefa 100644 --- a/include/net/smc.h +++ b/include/net/smc.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Shared Memory Communications over RDMA (SMC-R) and RoCE * diff --git a/include/net/sock_reuseport.h b/include/net/sock_reuseport.h index aecd30308d50..0054b3a9b923 100644 --- a/include/net/sock_reuseport.h +++ b/include/net/sock_reuseport.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _SOCK_REUSEPORT_H #define _SOCK_REUSEPORT_H diff --git a/include/net/stp.h b/include/net/stp.h index 3af174d70d9e..2914e6d53490 100644 --- a/include/net/stp.h +++ b/include/net/stp.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_STP_H #define _NET_STP_H diff --git a/include/net/tc_act/tc_connmark.h b/include/net/tc_act/tc_connmark.h index 59b515d32bb4..1f4cb477bb5d 100644 --- a/include/net/tc_act/tc_connmark.h +++ b/include/net/tc_act/tc_connmark.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_CONNMARK_H #define __NET_TC_CONNMARK_H diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h index 3248beaf16b0..781f3433a0be 100644 --- a/include/net/tc_act/tc_csum.h +++ b/include/net/tc_act/tc_csum.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_CSUM_H #define __NET_TC_CSUM_H diff --git a/include/net/tc_act/tc_defact.h b/include/net/tc_act/tc_defact.h index d47f040a3bdf..d7ba0402a732 100644 --- a/include/net/tc_act/tc_defact.h +++ b/include/net/tc_act/tc_defact.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_DEF_H #define __NET_TC_DEF_H diff --git a/include/net/tc_act/tc_gact.h b/include/net/tc_act/tc_gact.h index 41afe1ce7b16..e82d93346b63 100644 --- a/include/net/tc_act/tc_gact.h +++ b/include/net/tc_act/tc_gact.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_GACT_H #define __NET_TC_GACT_H diff --git a/include/net/tc_act/tc_ife.h b/include/net/tc_act/tc_ife.h index 30ba459ddd34..ba6667125bcd 100644 --- a/include/net/tc_act/tc_ife.h +++ b/include/net/tc_act/tc_ife.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_IFE_H #define __NET_TC_IFE_H diff --git a/include/net/tc_act/tc_ipt.h b/include/net/tc_act/tc_ipt.h index 31309766e379..4225fcb1c6ba 100644 --- a/include/net/tc_act/tc_ipt.h +++ b/include/net/tc_act/tc_ipt.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_IPT_H #define __NET_TC_IPT_H diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h index 604bc31e23ab..b2dbbfaefd22 100644 --- a/include/net/tc_act/tc_mirred.h +++ b/include/net/tc_act/tc_mirred.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_MIR_H #define __NET_TC_MIR_H diff --git a/include/net/tc_act/tc_nat.h b/include/net/tc_act/tc_nat.h index 56681a320612..c14407160812 100644 --- a/include/net/tc_act/tc_nat.h +++ b/include/net/tc_act/tc_nat.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_NAT_H #define __NET_TC_NAT_H diff --git a/include/net/tc_act/tc_pedit.h b/include/net/tc_act/tc_pedit.h index a46c3f2ace70..227a6f1d02f4 100644 --- a/include/net/tc_act/tc_pedit.h +++ b/include/net/tc_act/tc_pedit.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_PED_H #define __NET_TC_PED_H diff --git a/include/net/tc_act/tc_sample.h b/include/net/tc_act/tc_sample.h index 89e9305be880..524cee4f4c81 100644 --- a/include/net/tc_act/tc_sample.h +++ b/include/net/tc_act/tc_sample.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_TC_SAMPLE_H #define __NET_TC_SAMPLE_H diff --git a/include/net/transp_v6.h b/include/net/transp_v6.h index 276f9760ab56..c4f5caaf3778 100644 --- a/include/net/transp_v6.h +++ b/include/net/transp_v6.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _TRANSP_V6_H #define _TRANSP_V6_H diff --git a/include/net/tso.h b/include/net/tso.h index 9a56c39e6d0a..7e166a570349 100644 --- a/include/net/tso.h +++ b/include/net/tso.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _TSO_H #define _TSO_H diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 10cce0dd4450..b95a6927c718 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_UDP_TUNNEL_H #define __NET_UDP_TUNNEL_H diff --git a/include/net/udplite.h b/include/net/udplite.h index b7a18f63d86d..81bdbf97319b 100644 --- a/include/net/udplite.h +++ b/include/net/udplite.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Definitions for the UDP-Lite (RFC 3828) code. */ diff --git a/include/net/vxlan.h b/include/net/vxlan.h index 4e3876dde295..13223396dc64 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_VXLAN_H #define __NET_VXLAN_H 1 diff --git a/include/net/wext.h b/include/net/wext.h index 454ff763eeba..e51f067fdb3a 100644 --- a/include/net/wext.h +++ b/include/net/wext.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __NET_WEXT_H #define __NET_WEXT_H diff --git a/include/net/x25.h b/include/net/x25.h index 2609b57bd459..ed1acc3044ac 100644 --- a/include/net/x25.h +++ b/include/net/x25.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ /* * Declarations of X.25 Packet Layer type objects. * diff --git a/include/net/x25device.h b/include/net/x25device.h index 1fa08b49f1c2..cf749efca24d 100644 --- a/include/net/x25device.h +++ b/include/net/x25device.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _X25DEVICE_H #define _X25DEVICE_H diff --git a/include/net/xfrm.h b/include/net/xfrm.h index f002a2c5e33c..e015e164bac0 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _NET_XFRM_H #define _NET_XFRM_H -- cgit v1.2.3-58-ga151 From a159d3c4b8291998c018f0dbddd4678315264a1e Mon Sep 17 00:00:00 2001 From: Cong Wang Date: Wed, 1 Nov 2017 10:23:49 -0700 Subject: net_sched: acquire RTNL in tc_action_net_exit() I forgot to acquire RTNL in tc_action_net_exit() which leads that action ops->cleanup() is not always called with RTNL. This usually is not a big deal because this function is called after all netns refcnt are gone, but given RTNL protects more than just actions, add it for safety and consistency. Also add an assertion to catch other potential bugs. Fixes: ddf97ccdd7cb ("net_sched: add network namespace support for tc actions") Reported-by: Lucas Bates Tested-by: Lucas Bates Cc: Jamal Hadi Salim Cc: Jiri Pirko Signed-off-by: Cong Wang Signed-off-by: David S. Miller --- include/net/act_api.h | 2 ++ net/sched/act_api.c | 2 ++ 2 files changed, 4 insertions(+) (limited to 'include/net') diff --git a/include/net/act_api.h b/include/net/act_api.h index b944e0eb93be..5072446d5f06 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -122,7 +122,9 @@ void tcf_idrinfo_destroy(const struct tc_action_ops *ops, static inline void tc_action_net_exit(struct tc_action_net *tn) { + rtnl_lock(); tcf_idrinfo_destroy(tn->ops, tn->idrinfo); + rtnl_unlock(); kfree(tn->idrinfo); } diff --git a/net/sched/act_api.c b/net/sched/act_api.c index da6fa82c98a8..8f2c63514956 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -86,6 +86,8 @@ int __tcf_idr_release(struct tc_action *p, bool bind, bool strict) { int ret = 0; + ASSERT_RTNL(); + if (p) { if (bind) p->tcfa_bindcnt--; -- cgit v1.2.3-58-ga151 From ceffcc5e254b450e6159f173e4538215cebf1b59 Mon Sep 17 00:00:00 2001 From: Cong Wang Date: Wed, 1 Nov 2017 10:23:50 -0700 Subject: net_sched: hold netns refcnt for each action TC actions have been destroyed asynchronously for a long time, previously in a RCU callback and now in a workqueue. If we don't hold a refcnt for its netns, we could use the per netns data structure, struct tcf_idrinfo, after it has been freed by netns workqueue. Hold refcnt to ensure netns destroy happens after all actions are gone. Fixes: ddf97ccdd7cb ("net_sched: add network namespace support for tc actions") Reported-by: Lucas Bates Tested-by: Lucas Bates Cc: Jamal Hadi Salim Cc: Jiri Pirko Signed-off-by: Cong Wang Signed-off-by: David S. Miller --- include/net/act_api.h | 4 +++- net/sched/act_api.c | 2 ++ net/sched/act_bpf.c | 2 +- net/sched/act_connmark.c | 2 +- net/sched/act_csum.c | 2 +- net/sched/act_gact.c | 2 +- net/sched/act_ife.c | 2 +- net/sched/act_ipt.c | 4 ++-- net/sched/act_mirred.c | 2 +- net/sched/act_nat.c | 2 +- net/sched/act_pedit.c | 2 +- net/sched/act_police.c | 2 +- net/sched/act_sample.c | 2 +- net/sched/act_simple.c | 2 +- net/sched/act_skbedit.c | 2 +- net/sched/act_skbmod.c | 2 +- net/sched/act_tunnel_key.c | 2 +- net/sched/act_vlan.c | 2 +- 18 files changed, 22 insertions(+), 18 deletions(-) (limited to 'include/net') diff --git a/include/net/act_api.h b/include/net/act_api.h index 5072446d5f06..c68551255032 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -13,6 +13,7 @@ struct tcf_idrinfo { spinlock_t lock; struct idr action_idr; + struct net *net; }; struct tc_action_ops; @@ -104,7 +105,7 @@ struct tc_action_net { static inline int tc_action_net_init(struct tc_action_net *tn, - const struct tc_action_ops *ops) + const struct tc_action_ops *ops, struct net *net) { int err = 0; @@ -112,6 +113,7 @@ int tc_action_net_init(struct tc_action_net *tn, if (!tn->idrinfo) return -ENOMEM; tn->ops = ops; + tn->idrinfo->net = net; spin_lock_init(&tn->idrinfo->lock); idr_init(&tn->idrinfo->action_idr); return err; diff --git a/net/sched/act_api.c b/net/sched/act_api.c index 8f2c63514956..ca2ff0b3123f 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -78,6 +78,7 @@ static void tcf_idr_remove(struct tcf_idrinfo *idrinfo, struct tc_action *p) spin_lock_bh(&idrinfo->lock); idr_remove_ext(&idrinfo->action_idr, p->tcfa_index); spin_unlock_bh(&idrinfo->lock); + put_net(idrinfo->net); gen_kill_estimator(&p->tcfa_rate_est); free_tcf(p); } @@ -336,6 +337,7 @@ err3: p->idrinfo = idrinfo; p->ops = ops; INIT_LIST_HEAD(&p->list); + get_net(idrinfo->net); *a = p; return 0; } diff --git a/net/sched/act_bpf.c b/net/sched/act_bpf.c index c0c707eb2c96..9bce8cc84cbb 100644 --- a/net/sched/act_bpf.c +++ b/net/sched/act_bpf.c @@ -398,7 +398,7 @@ static __net_init int bpf_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, bpf_net_id); - return tc_action_net_init(tn, &act_bpf_ops); + return tc_action_net_init(tn, &act_bpf_ops, net); } static void __net_exit bpf_exit_net(struct net *net) diff --git a/net/sched/act_connmark.c b/net/sched/act_connmark.c index 10b7a8855a6c..34e52d01a5dd 100644 --- a/net/sched/act_connmark.c +++ b/net/sched/act_connmark.c @@ -206,7 +206,7 @@ static __net_init int connmark_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, connmark_net_id); - return tc_action_net_init(tn, &act_connmark_ops); + return tc_action_net_init(tn, &act_connmark_ops, net); } static void __net_exit connmark_exit_net(struct net *net) diff --git a/net/sched/act_csum.c b/net/sched/act_csum.c index 1c40caadcff9..35171df2ebef 100644 --- a/net/sched/act_csum.c +++ b/net/sched/act_csum.c @@ -626,7 +626,7 @@ static __net_init int csum_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, csum_net_id); - return tc_action_net_init(tn, &act_csum_ops); + return tc_action_net_init(tn, &act_csum_ops, net); } static void __net_exit csum_exit_net(struct net *net) diff --git a/net/sched/act_gact.c b/net/sched/act_gact.c index e29a48ef7fc3..ef7f7f39d26d 100644 --- a/net/sched/act_gact.c +++ b/net/sched/act_gact.c @@ -232,7 +232,7 @@ static __net_init int gact_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, gact_net_id); - return tc_action_net_init(tn, &act_gact_ops); + return tc_action_net_init(tn, &act_gact_ops, net); } static void __net_exit gact_exit_net(struct net *net) diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c index 8ccd35825b6b..f65e4b5058e0 100644 --- a/net/sched/act_ife.c +++ b/net/sched/act_ife.c @@ -818,7 +818,7 @@ static __net_init int ife_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, ife_net_id); - return tc_action_net_init(tn, &act_ife_ops); + return tc_action_net_init(tn, &act_ife_ops, net); } static void __net_exit ife_exit_net(struct net *net) diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c index d9e399a7e3d5..dbdf3b2470d5 100644 --- a/net/sched/act_ipt.c +++ b/net/sched/act_ipt.c @@ -334,7 +334,7 @@ static __net_init int ipt_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, ipt_net_id); - return tc_action_net_init(tn, &act_ipt_ops); + return tc_action_net_init(tn, &act_ipt_ops, net); } static void __net_exit ipt_exit_net(struct net *net) @@ -384,7 +384,7 @@ static __net_init int xt_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, xt_net_id); - return tc_action_net_init(tn, &act_xt_ops); + return tc_action_net_init(tn, &act_xt_ops, net); } static void __net_exit xt_exit_net(struct net *net) diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 416627c66f08..84759cfd5a33 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -343,7 +343,7 @@ static __net_init int mirred_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, mirred_net_id); - return tc_action_net_init(tn, &act_mirred_ops); + return tc_action_net_init(tn, &act_mirred_ops, net); } static void __net_exit mirred_exit_net(struct net *net) diff --git a/net/sched/act_nat.c b/net/sched/act_nat.c index c365d01b99c8..7eeaaf9217b6 100644 --- a/net/sched/act_nat.c +++ b/net/sched/act_nat.c @@ -307,7 +307,7 @@ static __net_init int nat_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, nat_net_id); - return tc_action_net_init(tn, &act_nat_ops); + return tc_action_net_init(tn, &act_nat_ops, net); } static void __net_exit nat_exit_net(struct net *net) diff --git a/net/sched/act_pedit.c b/net/sched/act_pedit.c index 491fe5deb09e..b3d82c334a5f 100644 --- a/net/sched/act_pedit.c +++ b/net/sched/act_pedit.c @@ -450,7 +450,7 @@ static __net_init int pedit_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, pedit_net_id); - return tc_action_net_init(tn, &act_pedit_ops); + return tc_action_net_init(tn, &act_pedit_ops, net); } static void __net_exit pedit_exit_net(struct net *net) diff --git a/net/sched/act_police.c b/net/sched/act_police.c index 3bb2ebf9e9ae..9ec42b26e4b9 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c @@ -331,7 +331,7 @@ static __net_init int police_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, police_net_id); - return tc_action_net_init(tn, &act_police_ops); + return tc_action_net_init(tn, &act_police_ops, net); } static void __net_exit police_exit_net(struct net *net) diff --git a/net/sched/act_sample.c b/net/sched/act_sample.c index 8b5abcd2f32f..e69a1e3a39bf 100644 --- a/net/sched/act_sample.c +++ b/net/sched/act_sample.c @@ -240,7 +240,7 @@ static __net_init int sample_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, sample_net_id); - return tc_action_net_init(tn, &act_sample_ops); + return tc_action_net_init(tn, &act_sample_ops, net); } static void __net_exit sample_exit_net(struct net *net) diff --git a/net/sched/act_simple.c b/net/sched/act_simple.c index e7b57e5071a3..a8d0ea95f894 100644 --- a/net/sched/act_simple.c +++ b/net/sched/act_simple.c @@ -201,7 +201,7 @@ static __net_init int simp_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, simp_net_id); - return tc_action_net_init(tn, &act_simp_ops); + return tc_action_net_init(tn, &act_simp_ops, net); } static void __net_exit simp_exit_net(struct net *net) diff --git a/net/sched/act_skbedit.c b/net/sched/act_skbedit.c index 59949d61f20d..fbac62472e09 100644 --- a/net/sched/act_skbedit.c +++ b/net/sched/act_skbedit.c @@ -238,7 +238,7 @@ static __net_init int skbedit_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, skbedit_net_id); - return tc_action_net_init(tn, &act_skbedit_ops); + return tc_action_net_init(tn, &act_skbedit_ops, net); } static void __net_exit skbedit_exit_net(struct net *net) diff --git a/net/sched/act_skbmod.c b/net/sched/act_skbmod.c index b642ad3d39dd..8e12d8897d2f 100644 --- a/net/sched/act_skbmod.c +++ b/net/sched/act_skbmod.c @@ -263,7 +263,7 @@ static __net_init int skbmod_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, skbmod_net_id); - return tc_action_net_init(tn, &act_skbmod_ops); + return tc_action_net_init(tn, &act_skbmod_ops, net); } static void __net_exit skbmod_exit_net(struct net *net) diff --git a/net/sched/act_tunnel_key.c b/net/sched/act_tunnel_key.c index 30c96274c638..c33faa373cf2 100644 --- a/net/sched/act_tunnel_key.c +++ b/net/sched/act_tunnel_key.c @@ -322,7 +322,7 @@ static __net_init int tunnel_key_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, tunnel_key_net_id); - return tc_action_net_init(tn, &act_tunnel_key_ops); + return tc_action_net_init(tn, &act_tunnel_key_ops, net); } static void __net_exit tunnel_key_exit_net(struct net *net) diff --git a/net/sched/act_vlan.c b/net/sched/act_vlan.c index 16eb067a8d8f..115fc33cc6d8 100644 --- a/net/sched/act_vlan.c +++ b/net/sched/act_vlan.c @@ -269,7 +269,7 @@ static __net_init int vlan_init_net(struct net *net) { struct tc_action_net *tn = net_generic(net, vlan_net_id); - return tc_action_net_init(tn, &act_vlan_ops); + return tc_action_net_init(tn, &act_vlan_ops, net); } static void __net_exit vlan_exit_net(struct net *net) -- cgit v1.2.3-58-ga151