mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	 48ea09cdda
			
		
	
	
		48ea09cdda
		
	
	
	
	
		
			
			- Convert flexible array members, fix -Wstringop-overflow warnings,
   and fix KCFI function type mismatches that went ignored by
   maintainers (Gustavo A. R. Silva, Nathan Chancellor, Kees Cook).
 
 - Remove the remaining side-effect users of ksize() by converting
   dma-buf, btrfs, and coredump to using kmalloc_size_roundup(),
   add more __alloc_size attributes, and introduce full testing
   of all allocator functions. Finally remove the ksize() side-effect
   so that each allocation-aware checker can finally behave without
   exceptions.
 
 - Introduce oops_limit (default 10,000) and warn_limit (default off)
   to provide greater granularity of control for panic_on_oops and
   panic_on_warn (Jann Horn, Kees Cook).
 
 - Introduce overflows_type() and castable_to_type() helpers for
   cleaner overflow checking.
 
 - Improve code generation for strscpy() and update str*() kern-doc.
 
 - Convert strscpy and sigphash tests to KUnit, and expand memcpy
   tests.
 
 - Always use a non-NULL argument for prepare_kernel_cred().
 
 - Disable structleak plugin in FORTIFY KUnit test (Anders Roxell).
 
 - Adjust orphan linker section checking to respect CONFIG_WERROR
   (Xin Li).
 
 - Make sure siginfo is cleared for forced SIGKILL (haifeng.xu).
 
 - Fix um vs FORTIFY warnings for always-NULL arguments.
 -----BEGIN PGP SIGNATURE-----
 
 iQJKBAABCgA0FiEEpcP2jyKd1g9yPm4TiXL039xtwCYFAmOZSOoWHGtlZXNjb29r
 QGNocm9taXVtLm9yZwAKCRCJcvTf3G3AJjAAD/0YkvpU7f03f8hcQMJK6wv//24K
 AW41hEaBikq9RcmkuvkLLrJRibGgZ5O2xUkUkxRs/HxhkhrZ0kEw8sbwZe8MoWls
 F4Y9+TDjsrdHmjhfcBZdLnVxwcKK5wlaEcpjZXtbsfcdhx3TbgcDA23YELl5t0K+
 I11j4kYmf9SLl4CwIrSP5iACml8CBHARDh8oIMF7FT/LrjNbM8XkvBcVVT6hTbOV
 yjgA8WP2e9GXvj9GzKgqvd0uE/kwPkVAeXLNFWopPi4FQ8AWjlxbBZR0gamA6/EB
 d7TIs0ifpVU2JGQaTav4xO6SsFMj3ntoUI0qIrFaTxZAvV4KYGrPT/Kwz1O4SFaG
 rN5lcxseQbPQSBTFNG4zFjpywTkVCgD2tZqDwz5Rrmiraz0RyIokCN+i4CD9S0Ds
 oEd8JSyLBk1sRALczkuEKo0an5AyC9YWRcBXuRdIHpLo08PsbeUUSe//4pe303cw
 0ApQxYOXnrIk26MLElTzSMImlSvlzW6/5XXzL9ME16leSHOIfDeerPnc9FU9Eb3z
 ODv22z6tJZ9H/apSUIHZbMciMbbVTZ8zgpkfydr08o87b342N/ncYHZ5cSvQ6DWb
 jS5YOIuvl46/IhMPT16qWC8p0bP5YhxoPv5l6Xr0zq0ooEj0E7keiD/SzoLvW+Qs
 AHXcibguPRQBPAdiPQ==
 =yaaN
 -----END PGP SIGNATURE-----
Merge tag 'hardening-v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull kernel hardening updates from Kees Cook:
 - Convert flexible array members, fix -Wstringop-overflow warnings, and
   fix KCFI function type mismatches that went ignored by maintainers
   (Gustavo A. R. Silva, Nathan Chancellor, Kees Cook)
 - Remove the remaining side-effect users of ksize() by converting
   dma-buf, btrfs, and coredump to using kmalloc_size_roundup(), add
   more __alloc_size attributes, and introduce full testing of all
   allocator functions. Finally remove the ksize() side-effect so that
   each allocation-aware checker can finally behave without exceptions
 - Introduce oops_limit (default 10,000) and warn_limit (default off) to
   provide greater granularity of control for panic_on_oops and
   panic_on_warn (Jann Horn, Kees Cook)
 - Introduce overflows_type() and castable_to_type() helpers for cleaner
   overflow checking
 - Improve code generation for strscpy() and update str*() kern-doc
 - Convert strscpy and sigphash tests to KUnit, and expand memcpy tests
 - Always use a non-NULL argument for prepare_kernel_cred()
 - Disable structleak plugin in FORTIFY KUnit test (Anders Roxell)
 - Adjust orphan linker section checking to respect CONFIG_WERROR (Xin
   Li)
 - Make sure siginfo is cleared for forced SIGKILL (haifeng.xu)
 - Fix um vs FORTIFY warnings for always-NULL arguments
* tag 'hardening-v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (31 commits)
  ksmbd: replace one-element arrays with flexible-array members
  hpet: Replace one-element array with flexible-array member
  um: virt-pci: Avoid GCC non-NULL warning
  signal: Initialize the info in ksignal
  lib: fortify_kunit: build without structleak plugin
  panic: Expose "warn_count" to sysfs
  panic: Introduce warn_limit
  panic: Consolidate open-coded panic_on_warn checks
  exit: Allow oops_limit to be disabled
  exit: Expose "oops_count" to sysfs
  exit: Put an upper limit on how often we can oops
  panic: Separate sysctl logic from CONFIG_SMP
  mm/pgtable: Fix multiple -Wstringop-overflow warnings
  mm: Make ksize() a reporting-only function
  kunit/fortify: Validate __alloc_size attribute results
  drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
  drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
  driver core: Add __alloc_size hint to devm allocators
  overflow: Introduce overflows_type() and castable_to_type()
  coredump: Proactively round up to kmalloc bucket size
  ...
		
	
			
		
			
				
	
	
		
			396 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			396 lines
		
	
	
	
		
			8.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| ====================
 | |
| The Linux Kernel API
 | |
| ====================
 | |
| 
 | |
| 
 | |
| List Management Functions
 | |
| =========================
 | |
| 
 | |
| .. kernel-doc:: include/linux/list.h
 | |
|    :internal:
 | |
| 
 | |
| Basic C Library Functions
 | |
| =========================
 | |
| 
 | |
| When writing drivers, you cannot in general use routines which are from
 | |
| the C Library. Some of the functions have been found generally useful
 | |
| and they are listed below. The behaviour of these functions may vary
 | |
| slightly from those defined by ANSI, and these deviations are noted in
 | |
| the text.
 | |
| 
 | |
| String Conversions
 | |
| ------------------
 | |
| 
 | |
| .. kernel-doc:: lib/vsprintf.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: include/linux/kstrtox.h
 | |
|    :functions: kstrtol kstrtoul
 | |
| 
 | |
| .. kernel-doc:: lib/kstrtox.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/string_helpers.c
 | |
|    :export:
 | |
| 
 | |
| String Manipulation
 | |
| -------------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/fortify-string.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: lib/string.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: include/linux/string.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: mm/util.c
 | |
|    :functions: kstrdup kstrdup_const kstrndup kmemdup kmemdup_nul memdup_user
 | |
|                vmemdup_user strndup_user memdup_user_nul
 | |
| 
 | |
| Basic Kernel Library Functions
 | |
| ==============================
 | |
| 
 | |
| The Linux kernel provides more basic utility functions.
 | |
| 
 | |
| Bit Operations
 | |
| --------------
 | |
| 
 | |
| .. kernel-doc:: include/asm-generic/bitops/instrumented-atomic.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: include/asm-generic/bitops/instrumented-non-atomic.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: include/asm-generic/bitops/instrumented-lock.h
 | |
|    :internal:
 | |
| 
 | |
| Bitmap Operations
 | |
| -----------------
 | |
| 
 | |
| .. kernel-doc:: lib/bitmap.c
 | |
|    :doc: bitmap introduction
 | |
| 
 | |
| .. kernel-doc:: include/linux/bitmap.h
 | |
|    :doc: declare bitmap
 | |
| 
 | |
| .. kernel-doc:: include/linux/bitmap.h
 | |
|    :doc: bitmap overview
 | |
| 
 | |
| .. kernel-doc:: include/linux/bitmap.h
 | |
|    :doc: bitmap bitops
 | |
| 
 | |
| .. kernel-doc:: lib/bitmap.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/bitmap.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: include/linux/bitmap.h
 | |
|    :internal:
 | |
| 
 | |
| Command-line Parsing
 | |
| --------------------
 | |
| 
 | |
| .. kernel-doc:: lib/cmdline.c
 | |
|    :export:
 | |
| 
 | |
| Sorting
 | |
| -------
 | |
| 
 | |
| .. kernel-doc:: lib/sort.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/list_sort.c
 | |
|    :export:
 | |
| 
 | |
| Text Searching
 | |
| --------------
 | |
| 
 | |
| .. kernel-doc:: lib/textsearch.c
 | |
|    :doc: ts_intro
 | |
| 
 | |
| .. kernel-doc:: lib/textsearch.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: include/linux/textsearch.h
 | |
|    :functions: textsearch_find textsearch_next \
 | |
|                textsearch_get_pattern textsearch_get_pattern_len
 | |
| 
 | |
| CRC and Math Functions in Linux
 | |
| ===============================
 | |
| 
 | |
| Arithmetic Overflow Checking
 | |
| ----------------------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/overflow.h
 | |
|    :internal:
 | |
| 
 | |
| CRC Functions
 | |
| -------------
 | |
| 
 | |
| .. kernel-doc:: lib/crc4.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/crc7.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/crc8.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/crc16.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/crc32.c
 | |
| 
 | |
| .. kernel-doc:: lib/crc-ccitt.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/crc-itu-t.c
 | |
|    :export:
 | |
| 
 | |
| Base 2 log and power Functions
 | |
| ------------------------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/log2.h
 | |
|    :internal:
 | |
| 
 | |
| Integer power Functions
 | |
| -----------------------
 | |
| 
 | |
| .. kernel-doc:: lib/math/int_pow.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: lib/math/int_sqrt.c
 | |
|    :export:
 | |
| 
 | |
| Division Functions
 | |
| ------------------
 | |
| 
 | |
| .. kernel-doc:: include/asm-generic/div64.h
 | |
|    :functions: do_div
 | |
| 
 | |
| .. kernel-doc:: include/linux/math64.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: lib/math/gcd.c
 | |
|    :export:
 | |
| 
 | |
| UUID/GUID
 | |
| ---------
 | |
| 
 | |
| .. kernel-doc:: lib/uuid.c
 | |
|    :export:
 | |
| 
 | |
| Kernel IPC facilities
 | |
| =====================
 | |
| 
 | |
| IPC utilities
 | |
| -------------
 | |
| 
 | |
| .. kernel-doc:: ipc/util.c
 | |
|    :internal:
 | |
| 
 | |
| FIFO Buffer
 | |
| ===========
 | |
| 
 | |
| kfifo interface
 | |
| ---------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/kfifo.h
 | |
|    :internal:
 | |
| 
 | |
| relay interface support
 | |
| =======================
 | |
| 
 | |
| Relay interface support is designed to provide an efficient mechanism
 | |
| for tools and facilities to relay large amounts of data from kernel
 | |
| space to user space.
 | |
| 
 | |
| relay interface
 | |
| ---------------
 | |
| 
 | |
| .. kernel-doc:: kernel/relay.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: kernel/relay.c
 | |
|    :internal:
 | |
| 
 | |
| Module Support
 | |
| ==============
 | |
| 
 | |
| Module Loading
 | |
| --------------
 | |
| 
 | |
| .. kernel-doc:: kernel/kmod.c
 | |
|    :export:
 | |
| 
 | |
| Inter Module support
 | |
| --------------------
 | |
| 
 | |
| Refer to the files in kernel/module/ for more information.
 | |
| 
 | |
| Hardware Interfaces
 | |
| ===================
 | |
| 
 | |
| DMA Channels
 | |
| ------------
 | |
| 
 | |
| .. kernel-doc:: kernel/dma.c
 | |
|    :export:
 | |
| 
 | |
| Resources Management
 | |
| --------------------
 | |
| 
 | |
| .. kernel-doc:: kernel/resource.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: kernel/resource.c
 | |
|    :export:
 | |
| 
 | |
| MTRR Handling
 | |
| -------------
 | |
| 
 | |
| .. kernel-doc:: arch/x86/kernel/cpu/mtrr/mtrr.c
 | |
|    :export:
 | |
| 
 | |
| Security Framework
 | |
| ==================
 | |
| 
 | |
| .. kernel-doc:: security/security.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: security/inode.c
 | |
|    :export:
 | |
| 
 | |
| Audit Interfaces
 | |
| ================
 | |
| 
 | |
| .. kernel-doc:: kernel/audit.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: kernel/auditsc.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: kernel/auditfilter.c
 | |
|    :internal:
 | |
| 
 | |
| Accounting Framework
 | |
| ====================
 | |
| 
 | |
| .. kernel-doc:: kernel/acct.c
 | |
|    :internal:
 | |
| 
 | |
| Block Devices
 | |
| =============
 | |
| 
 | |
| .. kernel-doc:: include/linux/bio.h
 | |
| .. kernel-doc:: block/blk-core.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/blk-core.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: block/blk-map.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/blk-sysfs.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: block/blk-settings.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/blk-flush.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/blk-lib.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/blk-integrity.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: kernel/trace/blktrace.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: block/genhd.c
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: block/genhd.c
 | |
|    :export:
 | |
| 
 | |
| .. kernel-doc:: block/bdev.c
 | |
|    :export:
 | |
| 
 | |
| Char devices
 | |
| ============
 | |
| 
 | |
| .. kernel-doc:: fs/char_dev.c
 | |
|    :export:
 | |
| 
 | |
| Clock Framework
 | |
| ===============
 | |
| 
 | |
| The clock framework defines programming interfaces to support software
 | |
| management of the system clock tree. This framework is widely used with
 | |
| System-On-Chip (SOC) platforms to support power management and various
 | |
| devices which may need custom clock rates. Note that these "clocks"
 | |
| don't relate to timekeeping or real time clocks (RTCs), each of which
 | |
| have separate frameworks. These :c:type:`struct clk <clk>`
 | |
| instances may be used to manage for example a 96 MHz signal that is used
 | |
| to shift bits into and out of peripherals or busses, or otherwise
 | |
| trigger synchronous state machine transitions in system hardware.
 | |
| 
 | |
| Power management is supported by explicit software clock gating: unused
 | |
| clocks are disabled, so the system doesn't waste power changing the
 | |
| state of transistors that aren't in active use. On some systems this may
 | |
| be backed by hardware clock gating, where clocks are gated without being
 | |
| disabled in software. Sections of chips that are powered but not clocked
 | |
| may be able to retain their last state. This low power state is often
 | |
| called a *retention mode*. This mode still incurs leakage currents,
 | |
| especially with finer circuit geometries, but for CMOS circuits power is
 | |
| mostly used by clocked state changes.
 | |
| 
 | |
| Power-aware drivers only enable their clocks when the device they manage
 | |
| is in active use. Also, system sleep states often differ according to
 | |
| which clock domains are active: while a "standby" state may allow wakeup
 | |
| from several active domains, a "mem" (suspend-to-RAM) state may require
 | |
| a more wholesale shutdown of clocks derived from higher speed PLLs and
 | |
| oscillators, limiting the number of possible wakeup event sources. A
 | |
| driver's suspend method may need to be aware of system-specific clock
 | |
| constraints on the target sleep state.
 | |
| 
 | |
| Some platforms support programmable clock generators. These can be used
 | |
| by external chips of various kinds, such as other CPUs, multimedia
 | |
| codecs, and devices with strict requirements for interface clocking.
 | |
| 
 | |
| .. kernel-doc:: include/linux/clk.h
 | |
|    :internal:
 | |
| 
 | |
| Synchronization Primitives
 | |
| ==========================
 | |
| 
 | |
| Read-Copy Update (RCU)
 | |
| ----------------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/rcupdate.h
 | |
| 
 | |
| .. kernel-doc:: kernel/rcu/tree.c
 | |
| 
 | |
| .. kernel-doc:: kernel/rcu/tree_exp.h
 | |
| 
 | |
| .. kernel-doc:: kernel/rcu/update.c
 | |
| 
 | |
| .. kernel-doc:: include/linux/srcu.h
 | |
| 
 | |
| .. kernel-doc:: kernel/rcu/srcutree.c
 | |
| 
 | |
| .. kernel-doc:: include/linux/rculist_bl.h
 | |
| 
 | |
| .. kernel-doc:: include/linux/rculist.h
 | |
| 
 | |
| .. kernel-doc:: include/linux/rculist_nulls.h
 | |
| 
 | |
| .. kernel-doc:: include/linux/rcu_sync.h
 | |
| 
 | |
| .. kernel-doc:: kernel/rcu/sync.c
 |