~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/bpf/bpf_licensing.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/bpf/bpf_licensing.rst (Version linux-6.12-rc7) and /Documentation/bpf/bpf_licensing.rst (Version linux-4.18.20)


  1 =============                                     
  2 BPF licensing                                     
  3 =============                                     
  4                                                   
  5 Background                                        
  6 ==========                                        
  7                                                   
  8 * Classic BPF was BSD licensed                    
  9                                                   
 10 "BPF" was originally introduced as BSD Packet     
 11 http://www.tcpdump.org/papers/bpf-usenix93.pdf    
 12 set and its implementation came from BSD with     
 13 instruction set is now known as "classic BPF".    
 14                                                   
 15 However an instruction set is a specification     
 16 similar to a programming language.  It is not     
 17 application of a BSD license may be misleading    
 18 instruction set may enjoy no copyright protect    
 19                                                   
 20 * eBPF (extended BPF) instruction set continue    
 21                                                   
 22 In 2014, the classic BPF instruction set was s    
 23 typically refer to this instruction set as eBP    
 24 The eBPF instruction set is still BSD licensed    
 25                                                   
 26 Implementations of eBPF                           
 27 =======================                           
 28                                                   
 29 Using the eBPF instruction set requires implem    
 30 and user space.                                   
 31                                                   
 32 In Linux Kernel                                   
 33 ---------------                                   
 34                                                   
 35 The reference implementations of the eBPF inte    
 36 compilers are part of Linux and are GPLv2 lice    
 37 eBPF helper functions is also GPLv2 licensed.     
 38 and verifiers are called eBPF runtime.            
 39                                                   
 40 In User Space                                     
 41 -------------                                     
 42                                                   
 43 There are also implementations of eBPF runtime    
 44 functions) under                                  
 45 Apache2 (https://github.com/iovisor/ubpf),        
 46 MIT (https://github.com/qmonnet/rbpf), and        
 47 BSD (https://github.com/DPDK/dpdk/blob/main/li    
 48                                                   
 49 In HW                                             
 50 -----                                             
 51                                                   
 52 The HW can choose to execute eBPF instruction     
 53 in HW or via the use of implementing firmware     
 54                                                   
 55 In other operating systems                        
 56 --------------------------                        
 57                                                   
 58 Other kernels or user space implementations of    
 59 can have proprietary licenses.                    
 60                                                   
 61 Using BPF programs in the Linux kernel            
 62 ======================================            
 63                                                   
 64 Linux Kernel (while being GPLv2) allows linkin    
 65 under these rules:                                
 66 Documentation/process/license-rules.rst           
 67                                                   
 68 When a kernel module is loaded, the linux kern    
 69 intends to use. If any function is marked as "    
 70 module or program has to have GPL compatible l    
 71                                                   
 72 Loading BPF program into the Linux kernel is s    
 73 module. BPF is loaded at run time and not stat    
 74 kernel. BPF program loading follows the same l    
 75 modules. BPF programs can be proprietary if th    
 76 helper functions.                                 
 77                                                   
 78 Further, some BPF program types - Linux Securi    
 79 Congestion Control (struct_ops), as of Aug 202    
 80 compatible even if they don't use "GPL only" h    
 81 registration step of LSM and TCP congestion co    
 82 kernel is done through EXPORT_SYMBOL_GPL kerne    
 83 and struct_ops BPF programs are implicitly cal    
 84 The same restriction applies to BPF programs t    
 85 directly via unstable interface also known as     
 86                                                   
 87 Packaging BPF programs with user space applica    
 88 ==============================================    
 89                                                   
 90 Generally, proprietary-licensed applications a    
 91 written for the Linux kernel in the same packa    
 92 separate executable processes. This applies to    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php