4922049993
Changes in 5.10.163
usb: musb: remove extra check in musb_gadget_vbus_draw
arm64: dts: qcom: ipq6018-cp01-c1: use BLSPI1 pins
arm64: dts: qcom: msm8996: fix GPU OPP table
ARM: dts: qcom: apq8064: fix coresight compatible
arm64: dts: qcom: sdm630: fix UART1 pin bias
arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias
arm64: dts: qcom: msm8916: Drop MSS fallback compatible
objtool, kcsan: Add volatile read/write instrumentation to whitelist
ARM: dts: stm32: Drop stm32mp15xc.dtsi from Avenger96
ARM: dts: stm32: Fix AV96 WLAN regulator gpio property
drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static
soc: qcom: llcc: make irq truly optional
soc: qcom: apr: make code more reuseable
soc: qcom: apr: Add check for idr_alloc and of_property_read_string_index
arm: dts: spear600: Fix clcd interrupt
soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of pm_runtime_get_sync
soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe
soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe
perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init()
perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init()
arm64: dts: ti: k3-am65-main: Drop dma-coherent in crypto node
arm64: dts: ti: k3-j721e-main: Drop dma-coherent in crypto node
arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators
arm64: dts: mt2712e: Fix unit address for pinctrl node
arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names
arm64: dts: mt2712-evb: Fix usb vbus regulators unit names
arm64: dts: mediatek: pumpkin-common: Fix devicetree warnings
arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name
ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
ARM: dts: turris-omnia: Add ethernet aliases
ARM: dts: turris-omnia: Add switch port 6 node
arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC
pstore/ram: Fix error return code in ramoops_probe()
ARM: mmp: fix timer_read delay
pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP
tpm/tpm_ftpm_tee: Fix error handling in ftpm_mod_init()
tpm/tpm_crb: Fix error message in __crb_relinquish_locality()
sched/fair: Cleanup task_util and capacity type
sched/uclamp: Fix relationship between uclamp and migration margin
cpuidle: dt: Return the correct numbers of parsed idle states
alpha: fix syscall entry in !AUDUT_SYSCALL case
PM: hibernate: Fix mistake in kerneldoc comment
fs: don't audit the capability check in simple_xattr_list()
cpufreq: qcom-hw: Fix memory leak in qcom_cpufreq_hw_read_lut()
selftests/ftrace: event_triggers: wait longer for test_event_enable
perf: Fix possible memleak in pmu_dev_alloc()
lib/debugobjects: fix stat count and optimize debug_objects_mem_init
platform/x86: huawei-wmi: fix return value calculation
timerqueue: Use rb_entry_safe() in timerqueue_getnext()
proc: fixup uptime selftest
lib/fonts: fix undefined behavior in bit shift for get_default_font
ocfs2: fix memory leak in ocfs2_stack_glue_init()
MIPS: vpe-mt: fix possible memory leak while module exiting
MIPS: vpe-cmp: fix possible memory leak while module exiting
selftests/efivarfs: Add checking of the test return value
PNP: fix name memory leak in pnp_alloc_dev()
perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox()
perf/x86/intel/uncore: Fix reference count leak in snr_uncore_mmio_map()
perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box()
platform/chrome: cros_usbpd_notify: Fix error handling in cros_usbpd_notify_init()
irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe()
EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper()
nfsd: don't call nfsd_file_put from client states seqfile display
genirq/irqdesc: Don't try to remove non-existing sysfs files
cpufreq: amd_freq_sensitivity: Add missing pci_dev_put()
libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value
lib/notifier-error-inject: fix error when writing -errno to debugfs file
docs: fault-injection: fix non-working usage of negative values
debugfs: fix error when writing negative value to atomic_t debugfs file
ocfs2: ocfs2_mount_volume does cleanup job before return error
ocfs2: rewrite error handling of ocfs2_fill_super
ocfs2: fix memory leak in ocfs2_mount_volume()
rapidio: fix possible name leaks when rio_add_device() fails
rapidio: rio: fix possible name leak in rio_register_mport()
clocksource/drivers/sh_cmt: Make sure channel clock supply is enabled
clocksource/drivers/sh_cmt: Access registers according to spec
futex: Move to kernel/futex/
futex: Resend potentially swallowed owner death notification
cpu/hotplug: Make target_store() a nop when target == state
clocksource/drivers/timer-ti-dm: Fix missing clk_disable_unprepare in dmtimer_systimer_init_clock()
ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage()
uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix
x86/xen: Fix memory leak in xen_smp_intr_init{_pv}()
x86/xen: Fix memory leak in xen_init_lock_cpu()
xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource()
PM: runtime: Improve path in rpm_idle() when no callback
PM: runtime: Do not call __rpm_callback() from rpm_idle()
platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]()
platform/x86: intel_scu_ipc: fix possible name leak in __intel_scu_ipc_register()
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
MIPS: OCTEON: warn only once if deprecated link status is being used
fs: sysv: Fix sysv_nblocks() returns wrong value
rapidio: fix possible UAF when kfifo_alloc() fails
eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD
relay: fix type mismatch when allocating memory in relay_create_buf()
hfs: Fix OOB Write in hfs_asc2mac
rapidio: devices: fix missing put_device in mport_cdev_open
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
wifi: rtl8xxxu: Fix reading the vendor of combo chips
drm/bridge: adv7533: remove dynamic lane switching from adv7533 bridge
libbpf: Fix use-after-free in btf_dump_name_dups
libbpf: Fix null-pointer dereference in find_prog_by_sec_insn()
pata_ipx4xx_cf: Fix unsigned comparison with less than zero
media: coda: jpeg: Add check for kmalloc
media: i2c: ad5820: Fix error path
venus: pm_helpers: Fix error check in vcodec_domains_get()
media: exynos4-is: Use v4l2_async_notifier_add_fwnode_remote_subdev
media: exynos4-is: don't rely on the v4l2_async_subdev internals
can: kvaser_usb: do not increase tx statistics when sending error message frames
can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device
can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to {leaf,usbcan}_cmd_can_error_event
can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT
can: kvaser_usb_leaf: Set Warning state even without bus errors
can: kvaser_usb_leaf: Fix improved state not being reported
can: kvaser_usb_leaf: Fix wrong CAN state after stopping
can: kvaser_usb_leaf: Fix bogus restart events
can: kvaser_usb: Add struct kvaser_usb_busparams
can: kvaser_usb: Compare requested bittiming parameters with actual parameters in do_set_{,data}_bittiming
drm/rockchip: lvds: fix PM usage counter unbalance in poweron
clk: renesas: r9a06g032: Repair grave increment error
spi: Update reference to struct spi_controller
drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure
ima: Fix fall-through warnings for Clang
ima: Handle -ESTALE returned by ima_filter_rule_match()
drm/msm/hdmi: switch to drm_bridge_connector
drm/msm/hdmi: drop unused GPIO support
bpf: Fix slot type check in check_stack_write_var_off
media: vivid: fix compose size exceed boundary
media: platform: exynos4-is: fix return value check in fimc_md_probe()
bpf: propagate precision in ALU/ALU64 operations
bpf: Check the other end of slot_type for STACK_SPILL
bpf: propagate precision across all frames, not just the last one
clk: qcom: gcc-sm8250: Use retention mode for USB GDSCs
mtd: Fix device name leak when register device failed in add_mtd_device()
Input: joystick - fix Kconfig warning for JOYSTICK_ADC
wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port
media: camss: Clean up received buffers on failed start of streaming
net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write()
rxrpc: Fix ack.bufferSize to be 0 when generating an ack
drm/radeon: Add the missed acpi_put_table() to fix memory leak
drm/mediatek: Modify dpi power on/off sequence.
ASoC: pxa: fix null-pointer dereference in filter()
regulator: core: fix unbalanced of node refcount in regulator_dev_lookup()
amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table()
drm/fourcc: Add packed 10bit YUV 4:2:0 format
drm/fourcc: Fix vsub/hsub for Q410 and Q401
integrity: Fix memory leakage in keyring allocation error path
ima: Fix misuse of dereference of pointer in template_desc_init_fields()
wifi: ath10k: Fix return value in ath10k_pci_init()
mtd: lpddr2_nvm: Fix possible null-ptr-deref
Input: elants_i2c - properly handle the reset GPIO when power is off
media: vidtv: Fix use-after-free in vidtv_bridge_dvb_init()
media: solo6x10: fix possible memory leak in solo_sysfs_init()
media: platform: exynos4-is: Fix error handling in fimc_md_init()
media: videobuf-dma-contig: use dma_mmap_coherent
inet: add READ_ONCE(sk->sk_bound_dev_if) in inet_csk_bind_conflict()
bpf: Move skb->len == 0 checks into __bpf_redirect
HID: hid-sensor-custom: set fixed size for custom attributes
ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT
ALSA: seq: fix undefined behavior in bit shift for SNDRV_SEQ_FILTER_USE_EVENT
regulator: core: use kfree_const() to free space conditionally
clk: rockchip: Fix memory leak in rockchip_clk_register_pll()
drm/amdgpu: fix pci device refcount leak
bonding: fix link recovery in mode 2 when updelay is nonzero
mtd: maps: pxa2xx-flash: fix memory leak in probe
drbd: fix an invalid memory access caused by incorrect use of list iterator
ASoC: qcom: Add checks for devm_kcalloc
media: vimc: Fix wrong function called when vimc_init() fails
media: imon: fix a race condition in send_packet()
clk: imx: replace osc_hdmi with dummy
pinctrl: pinconf-generic: add missing of_node_put()
media: dvb-core: Fix ignored return value in dvb_register_frontend()
media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer()
media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC
drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe()
ASoC: dt-bindings: wcd9335: fix reset line polarity in example
ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd
NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding
NFSv4.2: Fix a memory stomp in decode_attr_security_label
NFSv4.2: Fix initialisation of struct nfs4_label
NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn
NFS: Fix an Oops in nfs_d_automount()
ALSA: asihpi: fix missing pci_disable_device()
wifi: iwlwifi: mvm: fix double free on tx path.
ASoC: mediatek: mt8173: Fix debugfs registration for components
ASoC: mediatek: mt8173: Enable IRQ when pdata is ready
drm/amd/pm/smu11: BACO is supported when it's in BACO state
drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios()
drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios()
ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe
netfilter: conntrack: set icmpv6 redirects as RELATED
bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data
bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect
bonding: uninitialized variable in bond_miimon_inspect()
spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE
wifi: mac80211: fix memory leak in ieee80211_if_add()
wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() fails
wifi: mt76: fix coverity overrun-call in mt76_get_txpower()
regulator: core: fix module refcount leak in set_supply()
clk: qcom: clk-krait: fix wrong div2 functions
hsr: Add a rcu-read lock to hsr_forward_skb().
net: hsr: generate supervision frame without HSR/PRP tag
hsr: Disable netpoll.
hsr: Synchronize sending frames to have always incremented outgoing seq nr.
hsr: Synchronize sequence number updates.
configfs: fix possible memory leak in configfs_create_dir()
regulator: core: fix resource leak in regulator_register()
hwmon: (jc42) Convert register access and caching to regmap/regcache
hwmon: (jc42) Restore the min/max/critical temperatures on resume
bpf, sockmap: fix race in sock_map_free()
ALSA: pcm: Set missing stop_operating flag at undoing trigger start
media: saa7164: fix missing pci_disable_device()
ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt
xprtrdma: Fix regbuf data not freed in rpcrdma_req_create()
SUNRPC: Fix missing release socket in rpc_sockname()
NFSv4.x: Fail client initialisation if state manager thread can't run
mmc: alcor: fix return value check of mmc_add_host()
mmc: moxart: fix return value check of mmc_add_host()
mmc: mxcmmc: fix return value check of mmc_add_host()
mmc: pxamci: fix return value check of mmc_add_host()
mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host()
mmc: toshsd: fix return value check of mmc_add_host()
mmc: vub300: fix return value check of mmc_add_host()
mmc: wmt-sdmmc: fix return value check of mmc_add_host()
mmc: atmel-mci: fix return value check of mmc_add_host()
mmc: omap_hsmmc: fix return value check of mmc_add_host()
mmc: meson-gx: fix return value check of mmc_add_host()
mmc: via-sdmmc: fix return value check of mmc_add_host()
mmc: wbsd: fix return value check of mmc_add_host()
mmc: mmci: fix return value check of mmc_add_host()
media: c8sectpfe: Add of_node_put() when breaking out of loop
media: coda: Add check for dcoda_iram_alloc
media: coda: Add check for kmalloc
clk: samsung: Fix memory leak in _samsung_clk_register_pll()
spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode
wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h
wifi: rtl8xxxu: Fix the channel width reporting
wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware()
blktrace: Fix output non-blktrace event when blk_classic option enabled
clk: socfpga: clk-pll: Remove unused variable 'rc'
clk: socfpga: use clk_hw_register for a5/c5
clk: socfpga: Fix memory leak in socfpga_gate_init()
net: vmw_vsock: vmci: Check memcpy_from_msg()
net: defxx: Fix missing err handling in dfx_init()
net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload()
drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init()
of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() and find_dup_cset_prop()
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
net: farsync: Fix kmemleak when rmmods farsync
net/tunnel: wait until all sk_user_data reader finish before releasing the sock
net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave()
net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave()
net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave()
net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave()
hamradio: don't call dev_kfree_skb() under spin_lock_irqsave()
net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave()
net: amd-xgbe: Fix logic around active and passive cables
net: amd-xgbe: Check only the minimum speed for active/passive cables
can: tcan4x5x: Remove invalid write in clear_interrupts
net: lan9303: Fix read error execution path
ntb_netdev: Use dev_kfree_skb_any() in interrupt context
sctp: sysctl: make extra pointers netns aware
Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave()
Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave()
stmmac: fix potential division by 0
apparmor: fix a memleak in multi_transaction_new()
apparmor: fix lockdep warning when removing a namespace
apparmor: Fix abi check to include v8 abi
crypto: sun8i-ss - use dma_addr instead u32
crypto: nitrox - avoid double free on error path in nitrox_sriov_init()
scsi: core: Fix a race between scsi_done() and scsi_timeout()
apparmor: Use pointer to struct aa_label for lbs_cred
PCI: dwc: Fix n_fts[] array overrun
RDMA/core: Fix order of nldev_exit call
PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled
f2fs: Fix the race condition of resize flag between resizefs
crypto: rockchip - do not do custom power management
crypto: rockchip - do not store mode globally
crypto: rockchip - add fallback for cipher
crypto: rockchip - add fallback for ahash
crypto: rockchip - better handle cipher key
crypto: rockchip - remove non-aligned handling
crypto: rockchip - delete unneeded variable initialization
crypto: rockchip - rework by using crypto_engine
apparmor: Fix memleak in alloc_ns()
f2fs: fix normal discard process
RDMA/siw: Fix immediate work request flush to completion queue
RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port
RDMA/siw: Set defined status for work completion with undefined status
scsi: scsi_debug: Fix a warning in resp_write_scat()
crypto: ccree - Remove debugfs when platform_driver_register failed
crypto: cryptd - Use request context instead of stack for sub-request
crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set()
RDMA/hns: Repacing 'dseg_len' by macros in fill_ext_sge_inl_data()
RDMA/hns: Fix ext_sge num error when post send
PCI: Check for alloc failure in pci_request_irq()
RDMA/hfi: Decrease PCI device reference count in error path
crypto: ccree - Make cc_debugfs_global_fini() available for module init function
RDMA/hns: fix memory leak in hns_roce_alloc_mr()
RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create failed
scsi: hpsa: Fix possible memory leak in hpsa_init_one()
crypto: tcrypt - Fix multibuffer skcipher speed test mem leak
padata: Always leave BHs disabled when running ->parallel()
padata: Fix list iterator in padata_do_serial()
scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add()
scsi: hpsa: Fix error handling in hpsa_add_sas_host()
scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device()
scsi: scsi_debug: Fix a warning in resp_verify()
scsi: scsi_debug: Fix a warning in resp_report_zones()
scsi: fcoe: Fix possible name leak when device_register() fails
scsi: scsi_debug: Fix possible name leak in sdebug_add_host_helper()
scsi: ipr: Fix WARNING in ipr_init()
scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails
scsi: snic: Fix possible UAF in snic_tgt_create()
RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps()
f2fs: avoid victim selection from previous victim section
RDMA/nldev: Fix failure to send large messages
crypto: amlogic - Remove kcalloc without check
crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe()
riscv/mm: add arch hook arch_clear_hugepage_flags
RDMA/hfi1: Fix error return code in parse_platform_config()
RDMA/srp: Fix error return code in srp_parse_options()
orangefs: Fix sysfs not cleanup when dev init failed
RDMA/hns: Fix PBL page MTR find
RDMA/hns: Fix page size cap from firmware
crypto: img-hash - Fix variable dereferenced before check 'hdev->req'
hwrng: amd - Fix PCI device refcount leak
hwrng: geode - Fix PCI device refcount leak
IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces
drivers: dio: fix possible memory leak in dio_init()
serial: tegra: Read DMA status before terminating
class: fix possible memory leak in __class_register()
vfio: platform: Do not pass return buffer to ACPI _RST method
uio: uio_dmem_genirq: Fix missing unlock in irq configuration
uio: uio_dmem_genirq: Fix deadlock between irq config and handling
usb: fotg210-udc: Fix ages old endianness issues
staging: vme_user: Fix possible UAF in tsi148_dma_list_add
usb: typec: Check for ops->exit instead of ops->enter in altmode_exit
usb: typec: tcpci: fix of node refcount leak in tcpci_register_port()
usb: typec: tipd: Fix spurious fwnode_handle_put in error path
serial: amba-pl011: avoid SBSA UART accessing DMACR register
serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle.
serial: pch: Fix PCI device refcount leak in pch_request_dma()
tty: serial: clean up stop-tx part in altera_uart_tx_chars()
tty: serial: altera_uart_{r,t}x_chars() need only uart_port
serial: altera_uart: fix locking in polling mode
serial: sunsab: Fix error handling in sunsab_init()
test_firmware: fix memory leak in test_firmware_init()
misc: ocxl: fix possible name leak in ocxl_file_register_afu()
ocxl: fix pci device refcount leak when calling get_function_0()
misc: tifm: fix possible memory leak in tifm_7xx1_switch_media()
misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault and gru_handle_user_call_os
firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe()
cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter()
cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter()
iio: temperature: ltc2983: make bulk write buffer DMA-safe
genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()
iio:imu:adis: Use IRQF_NO_AUTOEN instead of irq request then disable
iio: adis: handle devices that cannot unmask the drdy pin
iio: adis: stylistic changes
iio:imu:adis: Move exports into IIO_ADISLIB namespace
iio: adis: add '__adis_enable_irq()' implementation
counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update
usb: roles: fix of node refcount leak in usb_role_switch_is_parent()
usb: gadget: f_hid: optional SETUP/SET_REPORT mode
usb: gadget: f_hid: fix f_hidg lifetime vs cdev
usb: gadget: f_hid: fix refcount leak on error path
drivers: mcb: fix resource leak in mcb_probe()
mcb: mcb-parse: fix error handing in chameleon_parse_gdd()
chardev: fix error handling in cdev_device_add()
i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe
staging: rtl8192u: Fix use after free in ieee80211_rx()
staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor()
vme: Fix error not catched in fake_init()
gpiolib: Get rid of redundant 'else'
gpiolib: cdev: fix NULL-pointer dereferences
i2c: mux: reg: check return value after calling platform_get_resource()
i2c: ismt: Fix an out-of-bounds bug in ismt_access()
usb: storage: Add check for kcalloc
tracing/hist: Fix issue of losting command info in error_log
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
thermal/drivers/imx8mm_thermal: Validate temperature range
fbdev: ssd1307fb: Drop optional dependency
fbdev: pm2fb: fix missing pci_disable_device()
fbdev: via: Fix error in via_core_init()
fbdev: vermilion: decrease reference count in error path
fbdev: uvesafb: Fixes an error handling path in uvesafb_probe()
HSI: omap_ssi_core: fix unbalanced pm_runtime_disable()
HSI: omap_ssi_core: fix possible memory leak in ssi_probe()
power: supply: fix residue sysfs file in error handle route of __power_supply_register()
perf trace: Return error if a system call doesn't exist
perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number
perf trace: Handle failure when trace point folder is missed
perf symbol: correction while adjusting symbol
HSI: omap_ssi_core: Fix error handling in ssi_init()
power: supply: fix null pointer dereferencing in power_supply_get_battery_info
RDMA/siw: Fix pointer cast warning
iommu/sun50i: Fix reset release
iommu/sun50i: Consider all fault sources for reset
iommu/sun50i: Fix R/W permission check
iommu/sun50i: Fix flush size
phy: usb: s2 WoL wakeup_count not incremented for USB->Eth devices
include/uapi/linux/swab: Fix potentially missing __always_inline
pwm: tegra: Improve required rate calculation
dmaengine: idxd: Fix crc_val field for completion record
rtc: rtc-cmos: Do not check ACPI_FADT_LOW_POWER_S0
rtc: cmos: Fix event handler registration ordering issue
rtc: cmos: Fix wake alarm breakage
rtc: cmos: fix build on non-ACPI platforms
rtc: cmos: Call cmos_wake_setup() from cmos_do_probe()
rtc: cmos: Call rtc_wake_setup() from cmos_do_probe()
rtc: cmos: Eliminate forward declarations of some functions
rtc: cmos: Rename ACPI-related functions
rtc: cmos: Disable ACPI RTC event on removal
rtc: snvs: Allow a time difference on clock register read
rtc: pcf85063: Fix reading alarm
iommu/amd: Fix pci device refcount leak in ppr_notifier()
iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe()
macintosh: fix possible memory leak in macio_add_one_device()
macintosh/macio-adb: check the return value of ioremap()
powerpc/52xx: Fix a resource leak in an error handling path
cxl: Fix refcount leak in cxl_calc_capp_routing
powerpc/xmon: Enable breakpoints on 8xx
powerpc/xmon: Fix -Wswitch-unreachable warning in bpt_cmds
powerpc/xive: add missing iounmap() in error path in xive_spapr_populate_irq_data()
kbuild: remove unneeded mkdir for external modules_install
kbuild: unify modules(_install) for in-tree and external modules
kbuild: refactor single builds of *.ko
powerpc/perf: callchain validate kernel stack pointer bounds
powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in of_fsl_spi_probe()
powerpc/hv-gpci: Fix hv_gpci event list
selftests/powerpc: Fix resource leaks
iommu/sun50i: Remove IOMMU_DOMAIN_IDENTITY
pwm: sifive: Call pwm_sifive_update_clock() while mutex is held
remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev()
remoteproc: qcom_q6v5_pas: disable wakeup on probe fail or remove
remoteproc: qcom_q6v5_pas: detach power domains on remove
remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in adsp_alloc_memory_region()
powerpc/eeh: Drop redundant spinlock initialization
powerpc/pseries/eeh: use correct API for error log size
netfilter: flowtable: really fix NAT IPv6 offload
rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe()
rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe()
rtc: pcf85063: fix pcf85063_clkout_control
NFSD: Remove spurious cb_setup_err tracepoint
nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure
net: macsec: fix net device access prior to holding a lock
mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under spin_lock_irqsave()
nfc: pn533: Clear nfc_target before being used
r6040: Fix kmemleak in probe and remove
net: switch to storing KCOV handle directly in sk_buff
net: add inline function skb_csum_is_sctp
net: igc: use skb_csum_is_sctp instead of protocol check
net: add a helper to avoid issues with HW TX timestamping and SO_TXTIME
igc: Enhance Qbv scheduling by using first flag bit
igc: Use strict cycles for Qbv scheduling
igc: Add checking for basetime less than zero
igc: recalculate Qbv end_time by considering cycle time
igc: Lift TAPRIO schedule restriction
igc: Set Qbv start_time and end_time to end_time if not being configured in GCL
rtc: mxc_v2: Add missing clk_disable_unprepare()
selftests: devlink: fix the fd redirect in dummy_reporter_test
openvswitch: Fix flow lookup to use unmasked key
skbuff: Account for tail adjustment during pull operations
mailbox: zynq-ipi: fix error handling while device_register() fails
net_sched: reject TCF_EM_SIMPLE case for complex ematch module
rxrpc: Fix missing unlock in rxrpc_do_sendmsg()
myri10ge: Fix an error handling path in myri10ge_probe()
net: stream: purge sk_error_queue in sk_stream_kill_queues()
rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state()
arm64: make is_ttbrX_addr() noinstr-safe
video: hyperv_fb: Avoid taking busy spinlock on panic path
x86/hyperv: Remove unregister syscore call from Hyper-V cleanup
binfmt_misc: fix shift-out-of-bounds in check_special_flags
fs: jfs: fix shift-out-of-bounds in dbAllocAG
udf: Avoid double brelse() in udf_rename()
fs: jfs: fix shift-out-of-bounds in dbDiscardAG
ACPICA: Fix error code path in acpi_ds_call_control_method()
nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset()
nilfs2: fix shift-out-of-bounds due to too large exponent of block size
acct: fix potential integer overflow in encode_comp_t()
hfs: fix OOB Read in __hfs_brec_find
drm/etnaviv: add missing quirks for GC300
brcmfmac: return error when getting invalid max_flowrings from dongle
wifi: ath9k: verify the expected usb_endpoints are present
wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out
ASoC: codecs: rt298: Add quirk for KBL-R RVP platform
ipmi: fix memleak when unload ipmi driver
drm/amd/display: prevent memory leak
qed (gcc13): use u16 for fid to be big enough
bpf: make sure skb->len != 0 when redirecting to a tunneling device
net: ethernet: ti: Fix return type of netcp_ndo_start_xmit()
hamradio: baycom_epp: Fix return type of baycom_send_packet()
wifi: brcmfmac: Fix potential shift-out-of-bounds in brcmf_fw_alloc_request()
igb: Do not free q_vector unless new one was allocated
drm/amdgpu: Fix type of second parameter in trans_msg() callback
drm/amdgpu: Fix type of second parameter in odn_edit_dpm_table() callback
s390/ctcm: Fix return type of ctc{mp,}m_tx()
s390/netiucv: Fix return type of netiucv_tx()
s390/lcs: Fix return type of lcs_start_xmit()
drm/msm: Use drm_mode_copy()
drm/rockchip: Use drm_mode_copy()
drm/sti: Use drm_mode_copy()
drivers/md/md-bitmap: check the return value of md_bitmap_get_counter()
md/raid1: stop mdx_raid1 thread when raid1 array run failed
drm/amd/display: fix array index out of bound error in bios parser
net: add atomic_long_t to net_device_stats fields
mrp: introduce active flags to prevent UAF when applicant uninit
ppp: associate skb with a device at tx
bpf: Prevent decl_tag from being referenced in func_proto arg
ethtool: avoiding integer overflow in ethtool_phys_id()
media: dvb-frontends: fix leak of memory fw
media: dvbdev: adopts refcnt to avoid UAF
media: dvb-usb: fix memory leak in dvb_usb_adapter_init()
blk-mq: fix possible memleak when register 'hctx' failed
libbpf: Avoid enum forward-declarations in public API in C++ mode
regulator: core: fix use_count leakage when handling boot-on
mmc: f-sdh30: Add quirks for broken timeout clock capability
mmc: renesas_sdhi: better reset from HS400 mode
media: si470x: Fix use-after-free in si470x_int_in_callback()
clk: st: Fix memory leak in st_of_quadfs_setup()
hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param()
drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid()
drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid()
orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string()
orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init()
hwmon: (jc42) Fix missing unlock on error in jc42_write()
ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c
ALSA: hda: add snd_hdac_stop_streams() helper
ASoC: Intel: Skylake: Fix driver hang during shutdown
ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in mt8173_rt5650_rt5514_dev_probe()
ASoC: audio-graph-card: fix refcount leak of cpu_ep in __graph_for_each_link()
ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in rockchip_pdm_runtime_resume()
ASoC: wm8994: Fix potential deadlock
ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in rk_spdif_runtime_resume()
ASoC: rt5670: Remove unbalanced pm_runtime_put()
LoadPin: Ignore the "contents" argument of the LSM hooks
pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion
perf debug: Set debug_peo_args and redirect_to_stderr variable to correct values in perf_quiet_option()
afs: Fix lost servers_outstanding count
pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES
ima: Simplify ima_lsm_copy_rule
ALSA: usb-audio: add the quirk for KT0206 device
ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB
ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list
usb: dwc3: Fix race between dwc3_set_mode and __dwc3_set_mode
usb: dwc3: core: defer probe on ulpi_read_id timeout
HID: wacom: Ensure bootloader PID is usable in hidraw mode
HID: mcp2221: don't connect hidraw
reiserfs: Add missing calls to reiserfs_security_free()
iio: adc: ad_sigma_delta: do not use internal iio_dev lock
iio: adc128s052: add proper .data members in adc128_of_match table
regulator: core: fix deadlock on regulator enable
gcov: add support for checksum field
ovl: fix use inode directly in rcu-walk mode
media: dvbdev: fix build warning due to comments
media: dvbdev: fix refcnt bug
pwm: tegra: Fix 32 bit build
usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init
cifs: fix oops during encryption
nvme-pci: fix doorbell buffer value endianness
nvme-pci: fix mempool alloc size
nvme-pci: fix page size checks
ata: ahci: Fix PCS quirk application for suspend
nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition
nvmet: don't defer passthrough commands with trivial effects to the workqueue
objtool: Fix SEGFAULT
powerpc/rtas: avoid device tree lookups in rtas_os_term()
powerpc/rtas: avoid scheduling in rtas_os_term()
HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint
HID: plantronics: Additional PIDs for double volume key presses quirk
pstore/zone: Use GFP_ATOMIC to allocate zone buffer
hfsplus: fix bug causing custom uid and gid being unable to be assigned with mount
binfmt: Fix error return code in load_elf_fdpic_binary()
ovl: Use ovl mounter's fsuid and fsgid in ovl_link()
ALSA: line6: correct midi status byte when receiving data from podxt
ALSA: line6: fix stack overflow in line6_midi_transmit
pnode: terminate at peers of source
md: fix a crash in mempool_free
mm, compaction: fix fast_isolate_around() to stay within boundaries
f2fs: should put a page when checking the summary info
mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING
tpm: acpi: Call acpi_put_table() to fix memory leak
tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak
tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak
SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
kcsan: Instrument memcpy/memset/memmove with newer Clang
ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio
ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire
net/mlx5e: Fix nullptr in mlx5e_tc_add_fdb_flow()
wifi: rtlwifi: remove always-true condition pointed out by GCC 12
wifi: rtlwifi: 8192de: correct checking of IQK reload
torture: Exclude "NOHZ tick-stop error" from fatal errors
rcu: Prevent lockdep-RCU splats on lock acquisition/release
net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO
net/af_packet: make sure to pull mac header
media: stv0288: use explicitly signed char
soc: qcom: Select REMAP_MMIO for LLCC driver
kest.pl: Fix grub2 menu handling for rebooting
ktest.pl minconfig: Unset configs instead of just removing them
jbd2: use the correct print format
arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength
mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K
btrfs: fix resolving backrefs for inline extent followed by prealloc
ARM: ux500: do not directly dereference __iomem
arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength
selftests: Use optional USERCFLAGS and USERLDFLAGS
PM/devfreq: governor: Add a private governor_data for governor
cpufreq: Init completion before kobject_init_and_add()
ALSA: patch_realtek: Fix Dell Inspiron Plus 16
ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops
dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort
dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata
dm thin: Use last transaction's pmd->root when commit failed
dm thin: resume even if in FAIL mode
dm thin: Fix UAF in run_timer_softirq()
dm integrity: Fix UAF in dm_integrity_dtr()
dm clone: Fix UAF in clone_dtr()
dm cache: Fix UAF in destroy()
dm cache: set needs_check flag after aborting metadata
tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx'
perf/core: Call LSM hook after copying perf_event_attr
KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails
x86/microcode/intel: Do not retry microcode reloading on the APs
ftrace/x86: Add back ftrace_expected for ftrace bug reports
x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK
tracing/hist: Fix wrong return value in parse_action_params()
tracing: Fix infinite loop in tracing_read_pipe on overflowed print_trace_line
staging: media: tegra-video: fix chan->mipi value on error
ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod
media: dvb-core: Fix double free in dvb_register_device()
media: dvb-core: Fix UAF due to refcount races at releasing
cifs: fix confusing debug message
cifs: fix missing display of three mount options
rtc: ds1347: fix value written to century register
md/bitmap: Fix bitmap chunk size overflow issues
efi: Add iMac Pro 2017 to uefi skip cert quirk
wifi: wilc1000: sdio: fix module autoloading
ASoC: jz4740-i2s: Handle independent FIFO flush bits
ipmi: fix long wait in unload when IPMI disconnect
mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type()
ima: Fix a potential NULL pointer access in ima_restore_measurement_list
ipmi: fix use after free in _ipmi_destroy_user()
PCI: Fix pci_device_is_present() for VFs by checking PF
PCI/sysfs: Fix double free in error path
crypto: n2 - add missing hash statesize
driver core: Fix bus_type.match() error handling in __driver_attach()
iommu/amd: Fix ivrs_acpihid cmdline parsing code
remoteproc: core: Do pm_relax when in RPROC_OFFLINE state
parisc: led: Fix potential null-ptr-deref in start_task()
device_cgroup: Roll back to original exceptions after copy failure
drm/connector: send hotplug uevent on connector cleanup
drm/vmwgfx: Validate the box size for the snooped cursor
drm/i915/dsi: fix VBT send packet port selection for dual link DSI
drm/ingenic: Fix missing platform_driver_unregister() call in ingenic_drm_init()
ext4: silence the warning when evicting inode with dioread_nolock
ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
ext4: fix use-after-free in ext4_orphan_cleanup
ext4: fix undefined behavior in bit shift for ext4_check_flag_values
ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode
ext4: add helper to check quota inums
ext4: fix bug_on in __es_tree_search caused by bad quota inode
ext4: fix reserved cluster accounting in __es_remove_extent()
ext4: check and assert if marking an no_delete evicting inode dirty
ext4: fix bug_on in __es_tree_search caused by bad boot loader inode
ext4: init quota for 'old.inode' in 'ext4_rename'
ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline
ext4: fix corruption when online resizing a 1K bigalloc fs
ext4: fix error code return to user-space in ext4_get_branch()
ext4: avoid BUG_ON when creating xattrs
ext4: fix inode leak in ext4_xattr_inode_create() on an error path
ext4: initialize quota before expanding inode in setproject ioctl
ext4: avoid unaccounted block allocation when expanding inode
ext4: allocate extended attribute value in vmalloc area
drm/amdgpu: handle polaris10/11 overlap asics (v2)
drm/amdgpu: make display pinning more flexible (v2)
ARM: renumber bits related to _TIF_WORK_MASK
perf/x86/intel/uncore: Generalize I/O stacks to PMON mapping procedure
perf/x86/intel/uncore: Clear attr_update properly
btrfs: replace strncpy() with strscpy()
x86/mce: Get rid of msr_ops
x86/MCE/AMD: Clear DFR errors found in THR handler
media: s5p-mfc: Fix to handle reference queue during finishing
media: s5p-mfc: Clear workbit to handle error condition
media: s5p-mfc: Fix in register read and write for H264
perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor
perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged data
x86/kprobes: Convert to insn_decode()
x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK
staging: media: tegra-video: fix device_node use after free
ravb: Fix "failed to switch device to config mode" message during unbind
riscv/stacktrace: Fix stack output without ra on the stack top
riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument
ext4: goto right label 'failed_mount3a'
ext4: correct inconsistent error msg in nojournal mode
mm/highmem: Lift memcpy_[to|from]_page to core
ext4: use memcpy_to_page() in pagecache_write()
fs: ext4: initialize fsdata in pagecache_write()
ext4: move functions in super.c
ext4: simplify ext4 error translation
ext4: fix various seppling typos
ext4: fix leaking uninitialized memory in fast-commit journal
ext4: use kmemdup() to replace kmalloc + memcpy
mbcache: don't reclaim used entries
mbcache: add functions to delete entry if unused
ext4: remove EA inode entry from mbcache on inode eviction
ext4: unindent codeblock in ext4_xattr_block_set()
ext4: fix race when reusing xattr blocks
mbcache: automatically delete entries from cache on freeing
ext4: fix deadlock due to mbcache entry corruption
SUNRPC: ensure the matching upcall is in-flight upon downcall
bpf: pull before calling skb_postpull_rcsum()
drm/panfrost: Fix GEM handle creation ref-counting
vmxnet3: correctly report csum_level for encapsulated packet
veth: Fix race with AF_XDP exposing old or uninitialized descriptors
nfsd: shut down the NFSv4 state objects before the filecache
net: hns3: add interrupts re-initialization while doing VF FLR
net: sched: fix memory leak in tcindex_set_parms
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
nfc: Fix potential resource leaks
vhost/vsock: Fix error handling in vhost_vsock_init()
vringh: fix range used in iotlb_translate()
vhost: fix range used in translate_desc()
net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path
net/mlx5: Avoid recovery in probe flows
net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default
net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
net: amd-xgbe: add missed tasklet_kill
net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe
RDMA/mlx5: Fix validation of max_rd_atomic caps for DC
drm/meson: Reduce the FIFO lines held when AFBC is not used
filelock: new helper: vfs_inode_has_locks
ceph: switch to vfs_inode_has_locks() to fix file lock bug
gpio: sifive: Fix refcount leak in sifive_gpio_probe
net: sched: atm: dont intepret cls results when asked to drop
net: sched: cbq: dont intepret cls results when asked to drop
netfilter: ipset: fix hash:net,port,net hang with /0 subnet
netfilter: ipset: Rework long task execution when adding/deleting entries
perf tools: Fix resources leak in perf_data__open_dir()
drivers/net/bonding/bond_3ad: return when there's no aggregator
usb: rndis_host: Secure rndis_query check against int overflow
drm/i915: unpin on error in intel_vgpu_shadow_mm_pin()
caif: fix memory leak in cfctrl_linkup_request()
udf: Fix extension of the last extent in the file
ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet
nvme: fix multipath crash caused by flush request when blktrace is enabled
x86/bugs: Flush IBP in ib_prctl_set()
nfsd: fix handling of readdir in v4root vs. mount upcall timeout
fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB
riscv: uaccess: fix type of 0 variable on error in get_user()
drm/i915/gvt: fix gvt debugfs destroy
drm/i915/gvt: fix vgpu debugfs clean in remove
ext4: don't allow journal inode to have encrypt flag
selftests: set the BUILD variable to absolute path
hfs/hfsplus: use WARN_ON for sanity check
hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling
mbcache: Avoid nesting of cache->c_list_lock under bit locks
efi: random: combine bootloader provided RNG seed with RNG protocol output
io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res()
parisc: Align parisc MADV_XXX constants with all other architectures
ext4: disable fast-commit of encrypted dir operations
ext4: don't set up encryption key during jbd2 transaction
fsl_lpuart: Don't enable interrupts too early
serial: fixup backport of "serial: Deassert Transmit Enable on probe in driver-specific way"
mptcp: mark ops structures as ro_after_init
mptcp: remove MPTCP 'ifdef' in TCP SYN cookies
mptcp: dedicated request sock for subflow in v6
mptcp: use proper req destructor for IPv6
net: sched: disallow noqueue for qdisc classes
net/ulp: prevent ULP without clone op from entering the LISTEN status
ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF
ALSA: hda/hdmi: Add a HP device 0x8715 to force connect list
ALSA: hda - Enable headset mic on another Dell laptop with ALC3254
Linux 5.10.163
Change-Id: I9026971760be8484f1e1fa607f9f91243cc87785
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2498 lines
81 KiB
Plaintext
2498 lines
81 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menu "Kernel hacking"
|
|
|
|
menu "printk and dmesg options"
|
|
|
|
config PRINTK_TIME
|
|
bool "Show timing information on printks"
|
|
depends on PRINTK
|
|
help
|
|
Selecting this option causes time stamps of the printk()
|
|
messages to be added to the output of the syslog() system
|
|
call and at the console.
|
|
|
|
The timestamp is always recorded internally, and exported
|
|
to /dev/kmsg. This flag just specifies if the timestamp should
|
|
be included, not that the timestamp is recorded.
|
|
|
|
The behavior is also controlled by the kernel command line
|
|
parameter printk.time=1. See Documentation/admin-guide/kernel-parameters.rst
|
|
|
|
config PRINTK_CALLER
|
|
bool "Show caller information on printks"
|
|
depends on PRINTK
|
|
help
|
|
Selecting this option causes printk() to add a caller "thread id" (if
|
|
in task context) or a caller "processor id" (if not in task context)
|
|
to every message.
|
|
|
|
This option is intended for environments where multiple threads
|
|
concurrently call printk() for many times, for it is difficult to
|
|
interpret without knowing where these lines (or sometimes individual
|
|
line which was divided into multiple lines due to race) came from.
|
|
|
|
Since toggling after boot makes the code racy, currently there is
|
|
no option to enable/disable at the kernel command line parameter or
|
|
sysfs interface.
|
|
|
|
config CONSOLE_LOGLEVEL_DEFAULT
|
|
int "Default console loglevel (1-15)"
|
|
range 1 15
|
|
default "7"
|
|
help
|
|
Default loglevel to determine what will be printed on the console.
|
|
|
|
Setting a default here is equivalent to passing in loglevel=<x> in
|
|
the kernel bootargs. loglevel=<x> continues to override whatever
|
|
value is specified here as well.
|
|
|
|
Note: This does not affect the log level of un-prefixed printk()
|
|
usage in the kernel. That is controlled by the MESSAGE_LOGLEVEL_DEFAULT
|
|
option.
|
|
|
|
config CONSOLE_LOGLEVEL_QUIET
|
|
int "quiet console loglevel (1-15)"
|
|
range 1 15
|
|
default "4"
|
|
help
|
|
loglevel to use when "quiet" is passed on the kernel commandline.
|
|
|
|
When "quiet" is passed on the kernel commandline this loglevel
|
|
will be used as the loglevel. IOW passing "quiet" will be the
|
|
equivalent of passing "loglevel=<CONSOLE_LOGLEVEL_QUIET>"
|
|
|
|
config MESSAGE_LOGLEVEL_DEFAULT
|
|
int "Default message log level (1-7)"
|
|
range 1 7
|
|
default "4"
|
|
help
|
|
Default log level for printk statements with no specified priority.
|
|
|
|
This was hard-coded to KERN_WARNING since at least 2.6.10 but folks
|
|
that are auditing their logs closely may want to set it to a lower
|
|
priority.
|
|
|
|
Note: This does not affect what message level gets printed on the console
|
|
by default. To change that, use loglevel=<x> in the kernel bootargs,
|
|
or pick a different CONSOLE_LOGLEVEL_DEFAULT configuration value.
|
|
|
|
config BOOT_PRINTK_DELAY
|
|
bool "Delay each boot printk message by N milliseconds"
|
|
depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY
|
|
help
|
|
This build option allows you to read kernel boot messages
|
|
by inserting a short delay after each one. The delay is
|
|
specified in milliseconds on the kernel command line,
|
|
using "boot_delay=N".
|
|
|
|
It is likely that you would also need to use "lpj=M" to preset
|
|
the "loops per jiffie" value.
|
|
See a previous boot log for the "lpj" value to use for your
|
|
system, and then set "lpj=M" before setting "boot_delay=N".
|
|
NOTE: Using this option may adversely affect SMP systems.
|
|
I.e., processors other than the first one may not boot up.
|
|
BOOT_PRINTK_DELAY also may cause LOCKUP_DETECTOR to detect
|
|
what it believes to be lockup conditions.
|
|
|
|
config DYNAMIC_DEBUG
|
|
bool "Enable dynamic printk() support"
|
|
default n
|
|
depends on PRINTK
|
|
depends on (DEBUG_FS || PROC_FS)
|
|
select DYNAMIC_DEBUG_CORE
|
|
help
|
|
|
|
Compiles debug level messages into the kernel, which would not
|
|
otherwise be available at runtime. These messages can then be
|
|
enabled/disabled based on various levels of scope - per source file,
|
|
function, module, format string, and line number. This mechanism
|
|
implicitly compiles in all pr_debug() and dev_dbg() calls, which
|
|
enlarges the kernel text size by about 2%.
|
|
|
|
If a source file is compiled with DEBUG flag set, any
|
|
pr_debug() calls in it are enabled by default, but can be
|
|
disabled at runtime as below. Note that DEBUG flag is
|
|
turned on by many CONFIG_*DEBUG* options.
|
|
|
|
Usage:
|
|
|
|
Dynamic debugging is controlled via the 'dynamic_debug/control' file,
|
|
which is contained in the 'debugfs' filesystem or procfs.
|
|
Thus, the debugfs or procfs filesystem must first be mounted before
|
|
making use of this feature.
|
|
We refer the control file as: <debugfs>/dynamic_debug/control. This
|
|
file contains a list of the debug statements that can be enabled. The
|
|
format for each line of the file is:
|
|
|
|
filename:lineno [module]function flags format
|
|
|
|
filename : source file of the debug statement
|
|
lineno : line number of the debug statement
|
|
module : module that contains the debug statement
|
|
function : function that contains the debug statement
|
|
flags : '=p' means the line is turned 'on' for printing
|
|
format : the format used for the debug statement
|
|
|
|
From a live system:
|
|
|
|
nullarbor:~ # cat <debugfs>/dynamic_debug/control
|
|
# filename:lineno [module]function flags format
|
|
fs/aio.c:222 [aio]__put_ioctx =_ "__put_ioctx:\040freeing\040%p\012"
|
|
fs/aio.c:248 [aio]ioctx_alloc =_ "ENOMEM:\040nr_events\040too\040high\012"
|
|
fs/aio.c:1770 [aio]sys_io_cancel =_ "calling\040cancel\012"
|
|
|
|
Example usage:
|
|
|
|
// enable the message at line 1603 of file svcsock.c
|
|
nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all the messages in file svcsock.c
|
|
nullarbor:~ # echo -n 'file svcsock.c +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all the messages in the NFS server module
|
|
nullarbor:~ # echo -n 'module nfsd +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// enable all 12 messages in the function svc_process()
|
|
nullarbor:~ # echo -n 'func svc_process +p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
// disable all 12 messages in the function svc_process()
|
|
nullarbor:~ # echo -n 'func svc_process -p' >
|
|
<debugfs>/dynamic_debug/control
|
|
|
|
See Documentation/admin-guide/dynamic-debug-howto.rst for additional
|
|
information.
|
|
|
|
config DYNAMIC_DEBUG_CORE
|
|
bool "Enable core function of dynamic debug support"
|
|
depends on PRINTK
|
|
depends on (DEBUG_FS || PROC_FS)
|
|
help
|
|
Enable core functional support of dynamic debug. It is useful
|
|
when you want to tie dynamic debug to your kernel modules with
|
|
DYNAMIC_DEBUG_MODULE defined for each of them, especially for
|
|
the case of embedded system where the kernel image size is
|
|
sensitive for people.
|
|
|
|
config SYMBOLIC_ERRNAME
|
|
bool "Support symbolic error names in printf"
|
|
default y if PRINTK
|
|
help
|
|
If you say Y here, the kernel's printf implementation will
|
|
be able to print symbolic error names such as ENOSPC instead
|
|
of the number 28. It makes the kernel image slightly larger
|
|
(about 3KB), but can make the kernel logs easier to read.
|
|
|
|
config DEBUG_BUGVERBOSE
|
|
bool "Verbose BUG() reporting (adds 70K)" if DEBUG_KERNEL && EXPERT
|
|
depends on BUG && (GENERIC_BUG || HAVE_DEBUG_BUGVERBOSE)
|
|
default y
|
|
help
|
|
Say Y here to make BUG() panics output the file name and line number
|
|
of the BUG call as well as the EIP and oops trace. This aids
|
|
debugging but costs about 70-100K of memory.
|
|
|
|
endmenu # "printk and dmesg options"
|
|
|
|
menu "Compile-time checks and compiler options"
|
|
|
|
config DEBUG_INFO
|
|
bool "Compile the kernel with debug info"
|
|
depends on DEBUG_KERNEL && !COMPILE_TEST
|
|
help
|
|
If you say Y here the resulting kernel image will include
|
|
debugging info resulting in a larger kernel image.
|
|
This adds debug symbols to the kernel and modules (gcc -g), and
|
|
is needed if you intend to use kernel crashdump or binary object
|
|
tools like crash, kgdb, LKCD, gdb, etc on the kernel.
|
|
Say Y here only if you plan to debug the kernel.
|
|
|
|
If unsure, say N.
|
|
|
|
if DEBUG_INFO
|
|
|
|
config DEBUG_INFO_REDUCED
|
|
bool "Reduce debugging information"
|
|
help
|
|
If you say Y here gcc is instructed to generate less debugging
|
|
information for structure types. This means that tools that
|
|
need full debugging information (like kgdb or systemtap) won't
|
|
be happy. But if you merely need debugging information to
|
|
resolve line numbers there is no loss. Advantage is that
|
|
build directory object sizes shrink dramatically over a full
|
|
DEBUG_INFO build and compile times are reduced too.
|
|
Only works with newer gcc versions.
|
|
|
|
config DEBUG_INFO_COMPRESSED
|
|
bool "Compressed debugging information"
|
|
depends on $(cc-option,-gz=zlib)
|
|
depends on $(ld-option,--compress-debug-sections=zlib)
|
|
help
|
|
Compress the debug information using zlib. Requires GCC 5.0+ or Clang
|
|
5.0+, binutils 2.26+, and zlib.
|
|
|
|
Users of dpkg-deb via scripts/package/builddeb may find an increase in
|
|
size of their debug .deb packages with this config set, due to the
|
|
debug info being compressed with zlib, then the object files being
|
|
recompressed with a different compression scheme. But this is still
|
|
preferable to setting $KDEB_COMPRESS to "none" which would be even
|
|
larger.
|
|
|
|
config DEBUG_INFO_SPLIT
|
|
bool "Produce split debuginfo in .dwo files"
|
|
depends on $(cc-option,-gsplit-dwarf)
|
|
help
|
|
Generate debug info into separate .dwo files. This significantly
|
|
reduces the build directory size for builds with DEBUG_INFO,
|
|
because it stores the information only once on disk in .dwo
|
|
files instead of multiple times in object files and executables.
|
|
In addition the debug information is also compressed.
|
|
|
|
Requires recent gcc (4.7+) and recent gdb/binutils.
|
|
Any tool that packages or reads debug information would need
|
|
to know about the .dwo files and include them.
|
|
Incompatible with older versions of ccache.
|
|
|
|
config DEBUG_INFO_DWARF4
|
|
bool "Generate dwarf4 debuginfo"
|
|
depends on $(cc-option,-gdwarf-4)
|
|
help
|
|
Generate dwarf4 debug info. This requires recent versions
|
|
of gcc and gdb. It makes the debug information larger.
|
|
But it significantly improves the success of resolving
|
|
variables in gdb on optimized code.
|
|
|
|
config DEBUG_INFO_BTF
|
|
bool "Generate BTF typeinfo"
|
|
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
|
|
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
|
|
help
|
|
Generate deduplicated BTF type information from DWARF debug info.
|
|
Turning this on expects presence of pahole tool, which will convert
|
|
DWARF type info into equivalent deduplicated BTF type info.
|
|
|
|
config GDB_SCRIPTS
|
|
bool "Provide GDB scripts for kernel debugging"
|
|
help
|
|
This creates the required links to GDB helper scripts in the
|
|
build directory. If you load vmlinux into gdb, the helper
|
|
scripts will be automatically imported by gdb as well, and
|
|
additional functions are available to analyze a Linux kernel
|
|
instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
|
|
for further details.
|
|
|
|
endif # DEBUG_INFO
|
|
|
|
config ENABLE_MUST_CHECK
|
|
bool "Enable __must_check logic"
|
|
default y
|
|
help
|
|
Enable the __must_check logic in the kernel build. Disable this to
|
|
suppress the "warning: ignoring return value of 'foo', declared with
|
|
attribute warn_unused_result" messages.
|
|
|
|
config FRAME_WARN
|
|
int "Warn for stack frames larger than"
|
|
range 0 8192
|
|
default 2048 if GCC_PLUGIN_LATENT_ENTROPY
|
|
default 2048 if PARISC
|
|
default 1536 if (!64BIT && XTENSA)
|
|
default 1280 if KASAN && !64BIT
|
|
default 1024 if !64BIT
|
|
default 2048 if 64BIT
|
|
help
|
|
Tell gcc to warn at build time for stack frames larger than this.
|
|
Setting this too low will cause a lot of warnings.
|
|
Setting it to 0 disables the warning.
|
|
|
|
config STRIP_ASM_SYMS
|
|
bool "Strip assembler-generated symbols during link"
|
|
default n
|
|
help
|
|
Strip internal assembler-generated symbols during a link (symbols
|
|
that look like '.Lxxx') so they don't pollute the output of
|
|
get_wchan() and suchlike.
|
|
|
|
config READABLE_ASM
|
|
bool "Generate readable assembler code"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Disable some compiler optimizations that tend to generate human unreadable
|
|
assembler output. This may make the kernel slightly slower, but it helps
|
|
to keep kernel developers who have to stare a lot at assembler listings
|
|
sane.
|
|
|
|
config HEADERS_INSTALL
|
|
bool "Install uapi headers to usr/include"
|
|
depends on !UML
|
|
help
|
|
This option will install uapi headers (headers exported to user-space)
|
|
into the usr/include directory for use during the kernel build.
|
|
This is unneeded for building the kernel itself, but needed for some
|
|
user-space program samples. It is also needed by some features such
|
|
as uapi header sanity checks.
|
|
|
|
config DEBUG_SECTION_MISMATCH
|
|
bool "Enable full Section mismatch analysis"
|
|
help
|
|
The section mismatch analysis checks if there are illegal
|
|
references from one section to another section.
|
|
During linktime or runtime, some sections are dropped;
|
|
any use of code/data previously in these sections would
|
|
most likely result in an oops.
|
|
In the code, functions and variables are annotated with
|
|
__init,, etc. (see the full list in include/linux/init.h),
|
|
which results in the code/data being placed in specific sections.
|
|
The section mismatch analysis is always performed after a full
|
|
kernel build, and enabling this option causes the following
|
|
additional step to occur:
|
|
- Add the option -fno-inline-functions-called-once to gcc commands.
|
|
When inlining a function annotated with __init in a non-init
|
|
function, we would lose the section information and thus
|
|
the analysis would not catch the illegal reference.
|
|
This option tells gcc to inline less (but it does result in
|
|
a larger kernel).
|
|
|
|
config SECTION_MISMATCH_WARN_ONLY
|
|
bool "Make section mismatch errors non-fatal"
|
|
default y
|
|
help
|
|
If you say N here, the build process will fail if there are any
|
|
section mismatch, instead of just throwing warnings.
|
|
|
|
If unsure, say Y.
|
|
|
|
config DEBUG_FORCE_FUNCTION_ALIGN_32B
|
|
bool "Force all function address 32B aligned" if EXPERT
|
|
help
|
|
There are cases that a commit from one domain changes the function
|
|
address alignment of other domains, and cause magic performance
|
|
bump (regression or improvement). Enable this option will help to
|
|
verify if the bump is caused by function alignment changes, while
|
|
it will slightly increase the kernel size and affect icache usage.
|
|
|
|
It is mainly for debug and performance tuning use.
|
|
|
|
#
|
|
# Select this config option from the architecture Kconfig, if it
|
|
# is preferred to always offer frame pointers as a config
|
|
# option on the architecture (regardless of KERNEL_DEBUG):
|
|
#
|
|
config ARCH_WANT_FRAME_POINTERS
|
|
bool
|
|
|
|
config FRAME_POINTER
|
|
bool "Compile the kernel with frame pointers"
|
|
depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
|
|
default y if (DEBUG_INFO && UML) || ARCH_WANT_FRAME_POINTERS
|
|
help
|
|
If you say Y here the resulting kernel image will be slightly
|
|
larger and slower, but it gives very useful debugging information
|
|
in case of kernel bugs. (precise oopses/stacktraces/warnings)
|
|
|
|
config STACK_VALIDATION
|
|
bool "Compile-time stack metadata validation"
|
|
depends on HAVE_STACK_VALIDATION
|
|
default n
|
|
help
|
|
Add compile-time checks to validate stack metadata, including frame
|
|
pointers (if CONFIG_FRAME_POINTER is enabled). This helps ensure
|
|
that runtime stack traces are more reliable.
|
|
|
|
This is also a prerequisite for generation of ORC unwind data, which
|
|
is needed for CONFIG_UNWINDER_ORC.
|
|
|
|
For more information, see
|
|
tools/objtool/Documentation/stack-validation.txt.
|
|
|
|
config VMLINUX_VALIDATION
|
|
bool
|
|
depends on STACK_VALIDATION && DEBUG_ENTRY && !PARAVIRT
|
|
default y
|
|
|
|
config DEBUG_FORCE_WEAK_PER_CPU
|
|
bool "Force weak per-cpu definitions"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
s390 and alpha require percpu variables in modules to be
|
|
defined weak to work around addressing range issue which
|
|
puts the following two restrictions on percpu variable
|
|
definitions.
|
|
|
|
1. percpu symbols must be unique whether static or not
|
|
2. percpu variables can't be defined inside a function
|
|
|
|
To ensure that generic code follows the above rules, this
|
|
option forces all percpu variables to be defined as weak.
|
|
|
|
endmenu # "Compiler options"
|
|
|
|
menu "Generic Kernel Debugging Instruments"
|
|
|
|
config MAGIC_SYSRQ
|
|
bool "Magic SysRq key"
|
|
depends on !UML
|
|
help
|
|
If you say Y here, you will have some control over the system even
|
|
if the system crashes for example during kernel debugging (e.g., you
|
|
will be able to flush the buffer cache to disk, reboot the system
|
|
immediately or dump some status information). This is accomplished
|
|
by pressing various keys while holding SysRq (Alt+PrintScreen). It
|
|
also works on a serial console (on PC hardware at least), if you
|
|
send a BREAK and then within 5 seconds a command keypress. The
|
|
keys are documented in <file:Documentation/admin-guide/sysrq.rst>.
|
|
Don't say Y unless you really know what this hack does.
|
|
|
|
config MAGIC_SYSRQ_DEFAULT_ENABLE
|
|
hex "Enable magic SysRq key functions by default"
|
|
depends on MAGIC_SYSRQ
|
|
default 0x1
|
|
help
|
|
Specifies which SysRq key functions are enabled by default.
|
|
This may be set to 1 or 0 to enable or disable them all, or
|
|
to a bitmask as described in Documentation/admin-guide/sysrq.rst.
|
|
|
|
config MAGIC_SYSRQ_SERIAL
|
|
bool "Enable magic SysRq key over serial"
|
|
depends on MAGIC_SYSRQ
|
|
default y
|
|
help
|
|
Many embedded boards have a disconnected TTL level serial which can
|
|
generate some garbage that can lead to spurious false sysrq detects.
|
|
This option allows you to decide whether you want to enable the
|
|
magic SysRq key.
|
|
|
|
config MAGIC_SYSRQ_SERIAL_SEQUENCE
|
|
string "Char sequence that enables magic SysRq over serial"
|
|
depends on MAGIC_SYSRQ_SERIAL
|
|
default ""
|
|
help
|
|
Specifies a sequence of characters that can follow BREAK to enable
|
|
SysRq on a serial console.
|
|
|
|
If unsure, leave an empty string and the option will not be enabled.
|
|
|
|
config DEBUG_FS
|
|
bool "Debug Filesystem"
|
|
help
|
|
debugfs is a virtual file system that kernel developers use to put
|
|
debugging files into. Enable this option to be able to read and
|
|
write to these files.
|
|
|
|
For detailed documentation on the debugfs API, see
|
|
Documentation/filesystems/.
|
|
|
|
If unsure, say N.
|
|
|
|
choice
|
|
prompt "Debugfs default access"
|
|
depends on DEBUG_FS
|
|
default DEBUG_FS_ALLOW_ALL
|
|
help
|
|
This selects the default access restrictions for debugfs.
|
|
It can be overridden with kernel command line option
|
|
debugfs=[on,no-mount,off]. The restrictions apply for API access
|
|
and filesystem registration.
|
|
|
|
config DEBUG_FS_ALLOW_ALL
|
|
bool "Access normal"
|
|
help
|
|
No restrictions apply. Both API and filesystem registration
|
|
is on. This is the normal default operation.
|
|
|
|
config DEBUG_FS_DISALLOW_MOUNT
|
|
bool "Do not register debugfs as filesystem"
|
|
help
|
|
The API is open but filesystem is not loaded. Clients can still do
|
|
their work and read with debug tools that do not need
|
|
debugfs filesystem.
|
|
|
|
config DEBUG_FS_ALLOW_NONE
|
|
bool "No access"
|
|
help
|
|
Access is off. Clients get -PERM when trying to create nodes in
|
|
debugfs tree and debugfs is not registered as a filesystem.
|
|
Client can then back-off or continue without debugfs access.
|
|
|
|
endchoice
|
|
|
|
source "lib/Kconfig.kgdb"
|
|
source "lib/Kconfig.ubsan"
|
|
source "lib/Kconfig.kcsan"
|
|
|
|
endmenu
|
|
|
|
config DEBUG_KERNEL
|
|
bool "Kernel debugging"
|
|
help
|
|
Say Y here if you are developing drivers or trying to debug and
|
|
identify kernel problems.
|
|
|
|
config DEBUG_MISC
|
|
bool "Miscellaneous debug code"
|
|
default DEBUG_KERNEL
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here if you need to enable miscellaneous debug code that should
|
|
be under a more specific debug option but isn't.
|
|
|
|
|
|
menu "Memory Debugging"
|
|
|
|
source "mm/Kconfig.debug"
|
|
|
|
config DEBUG_OBJECTS
|
|
bool "Debug object operations"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
kernel to track the life time of various objects and validate
|
|
the operations on those objects.
|
|
|
|
config DEBUG_OBJECTS_SELFTEST
|
|
bool "Debug objects selftest"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
This enables the selftest of the object debug code.
|
|
|
|
config DEBUG_OBJECTS_FREE
|
|
bool "Debug objects in freed memory"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
This enables checks whether a k/v free operation frees an area
|
|
which contains an object which has not been deactivated
|
|
properly. This can make kmalloc/kfree-intensive workloads
|
|
much slower.
|
|
|
|
config DEBUG_OBJECTS_TIMERS
|
|
bool "Debug timer objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
timer routines to track the life time of timer objects and
|
|
validate the timer operations.
|
|
|
|
config DEBUG_OBJECTS_WORK
|
|
bool "Debug work objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
work queue routines to track the life time of work objects and
|
|
validate the work operations.
|
|
|
|
config DEBUG_OBJECTS_RCU_HEAD
|
|
bool "Debug RCU callbacks objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
Enable this to turn on debugging of RCU list heads (call_rcu() usage).
|
|
|
|
config DEBUG_OBJECTS_PERCPU_COUNTER
|
|
bool "Debug percpu counter objects"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
percpu counter routines to track the life time of percpu counter
|
|
objects and validate the percpu counter operations.
|
|
|
|
config DEBUG_OBJECTS_ENABLE_DEFAULT
|
|
int "debug_objects bootup default value (0-1)"
|
|
range 0 1
|
|
default "1"
|
|
depends on DEBUG_OBJECTS
|
|
help
|
|
Debug objects boot parameter default value
|
|
|
|
config DEBUG_SLAB
|
|
bool "Debug slab memory allocations"
|
|
depends on DEBUG_KERNEL && SLAB
|
|
help
|
|
Say Y here to have the kernel do limited verification on memory
|
|
allocation as well as poisoning memory on free to catch use of freed
|
|
memory. This can make kmalloc/kfree-intensive workloads much slower.
|
|
|
|
config SLUB_DEBUG_ON
|
|
bool "SLUB debugging on by default"
|
|
depends on SLUB && SLUB_DEBUG
|
|
default n
|
|
help
|
|
Boot with debugging on by default. SLUB boots by default with
|
|
the runtime debug capabilities switched off. Enabling this is
|
|
equivalent to specifying the "slub_debug" parameter on boot.
|
|
There is no support for more fine grained debug control like
|
|
possible with slub_debug=xxx. SLUB debugging may be switched
|
|
off in a kernel built with CONFIG_SLUB_DEBUG_ON by specifying
|
|
"slub_debug=-".
|
|
|
|
config SLUB_STATS
|
|
default n
|
|
bool "Enable SLUB performance statistics"
|
|
depends on SLUB && SYSFS
|
|
help
|
|
SLUB statistics are useful to debug SLUBs allocation behavior in
|
|
order find ways to optimize the allocator. This should never be
|
|
enabled for production use since keeping statistics slows down
|
|
the allocator by a few percentage points. The slabinfo command
|
|
supports the determination of the most active slabs to figure
|
|
out which slabs are relevant to a particular load.
|
|
Try running: slabinfo -DA
|
|
|
|
config HAVE_DEBUG_KMEMLEAK
|
|
bool
|
|
|
|
config DEBUG_KMEMLEAK
|
|
bool "Kernel memory leak detector"
|
|
depends on DEBUG_KERNEL && HAVE_DEBUG_KMEMLEAK
|
|
select DEBUG_FS
|
|
select STACKTRACE if STACKTRACE_SUPPORT
|
|
select KALLSYMS
|
|
select CRC32
|
|
help
|
|
Say Y here if you want to enable the memory leak
|
|
detector. The memory allocation/freeing is traced in a way
|
|
similar to the Boehm's conservative garbage collector, the
|
|
difference being that the orphan objects are not freed but
|
|
only shown in /sys/kernel/debug/kmemleak. Enabling this
|
|
feature will introduce an overhead to memory
|
|
allocations. See Documentation/dev-tools/kmemleak.rst for more
|
|
details.
|
|
|
|
Enabling DEBUG_SLAB or SLUB_DEBUG may increase the chances
|
|
of finding leaks due to the slab objects poisoning.
|
|
|
|
In order to access the kmemleak file, debugfs needs to be
|
|
mounted (usually at /sys/kernel/debug).
|
|
|
|
config DEBUG_KMEMLEAK_MEM_POOL_SIZE
|
|
int "Kmemleak memory pool size"
|
|
depends on DEBUG_KMEMLEAK
|
|
range 200 1000000
|
|
default 16000
|
|
help
|
|
Kmemleak must track all the memory allocations to avoid
|
|
reporting false positives. Since memory may be allocated or
|
|
freed before kmemleak is fully initialised, use a static pool
|
|
of metadata objects to track such callbacks. After kmemleak is
|
|
fully initialised, this memory pool acts as an emergency one
|
|
if slab allocations fail.
|
|
|
|
config DEBUG_KMEMLEAK_TEST
|
|
tristate "Simple test for the kernel memory leak detector"
|
|
depends on DEBUG_KMEMLEAK && m
|
|
help
|
|
This option enables a module that explicitly leaks memory.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_KMEMLEAK_DEFAULT_OFF
|
|
bool "Default kmemleak to off"
|
|
depends on DEBUG_KMEMLEAK
|
|
help
|
|
Say Y here to disable kmemleak by default. It can then be enabled
|
|
on the command line via kmemleak=on.
|
|
|
|
config DEBUG_KMEMLEAK_AUTO_SCAN
|
|
bool "Enable kmemleak auto scan thread on boot up"
|
|
default y
|
|
depends on DEBUG_KMEMLEAK
|
|
help
|
|
Depending on the cpu, kmemleak scan may be cpu intensive and can
|
|
stall user tasks at times. This option enables/disables automatic
|
|
kmemleak scan at boot up.
|
|
|
|
Say N here to disable kmemleak auto scan thread to stop automatic
|
|
scanning. Disabling this option disables automatic reporting of
|
|
memory leaks.
|
|
|
|
If unsure, say Y.
|
|
|
|
config DEBUG_STACK_USAGE
|
|
bool "Stack utilization instrumentation"
|
|
depends on DEBUG_KERNEL && !IA64
|
|
help
|
|
Enables the display of the minimum amount of free stack which each
|
|
task has ever had available in the sysrq-T and sysrq-P debug output.
|
|
|
|
This option will slow down process creation somewhat.
|
|
|
|
config SCHED_STACK_END_CHECK
|
|
bool "Detect stack corruption on calls to schedule()"
|
|
depends on DEBUG_KERNEL
|
|
default n
|
|
help
|
|
This option checks for a stack overrun on calls to schedule().
|
|
If the stack end location is found to be over written always panic as
|
|
the content of the corrupted region can no longer be trusted.
|
|
This is to ensure no erroneous behaviour occurs which could result in
|
|
data corruption or a sporadic crash at a later stage once the region
|
|
is examined. The runtime overhead introduced is minimal.
|
|
|
|
config ARCH_HAS_DEBUG_VM_PGTABLE
|
|
bool
|
|
help
|
|
An architecture should select this when it can successfully
|
|
build and run DEBUG_VM_PGTABLE.
|
|
|
|
config DEBUG_VM
|
|
bool "Debug VM"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the virtual-memory system
|
|
that may impact performance.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_VMACACHE
|
|
bool "Debug VMA caching"
|
|
depends on DEBUG_VM
|
|
help
|
|
Enable this to turn on VMA caching debug information. Doing so
|
|
can cause significant overhead, so only enable it in non-production
|
|
environments.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_RB
|
|
bool "Debug VM red-black trees"
|
|
depends on DEBUG_VM
|
|
help
|
|
Enable VM red-black tree debugging information and extra validations.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_PGFLAGS
|
|
bool "Debug page-flags operations"
|
|
depends on DEBUG_VM
|
|
help
|
|
Enables extra validation on page flags operations.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_VM_PGTABLE
|
|
bool "Debug arch page table for semantics compliance"
|
|
depends on MMU
|
|
depends on ARCH_HAS_DEBUG_VM_PGTABLE
|
|
default y if DEBUG_VM
|
|
help
|
|
This option provides a debug method which can be used to test
|
|
architecture page table helper functions on various platforms in
|
|
verifying if they comply with expected generic MM semantics. This
|
|
will help architecture code in making sure that any changes or
|
|
new additions of these helpers still conform to expected
|
|
semantics of the generic MM. Platforms will have to opt in for
|
|
this through ARCH_HAS_DEBUG_VM_PGTABLE.
|
|
|
|
If unsure, say N.
|
|
|
|
config ARCH_HAS_DEBUG_VIRTUAL
|
|
bool
|
|
|
|
config DEBUG_VIRTUAL
|
|
bool "Debug VM translations"
|
|
depends on DEBUG_KERNEL && ARCH_HAS_DEBUG_VIRTUAL
|
|
help
|
|
Enable some costly sanity checks in virtual to page code. This can
|
|
catch mistakes with virt_to_page() and friends.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_NOMMU_REGIONS
|
|
bool "Debug the global anon/private NOMMU mapping region tree"
|
|
depends on DEBUG_KERNEL && !MMU
|
|
help
|
|
This option causes the global tree of anonymous and private mapping
|
|
regions to be regularly checked for invalid topology.
|
|
|
|
config DEBUG_MEMORY_INIT
|
|
bool "Debug memory initialisation" if EXPERT
|
|
default !EXPERT
|
|
help
|
|
Enable this for additional checks during memory initialisation.
|
|
The sanity checks verify aspects of the VM such as the memory model
|
|
and other information provided by the architecture. Verbose
|
|
information will be printed at KERN_DEBUG loglevel depending
|
|
on the mminit_loglevel= command-line option.
|
|
|
|
If unsure, say Y
|
|
|
|
config MEMORY_NOTIFIER_ERROR_INJECT
|
|
tristate "Memory hotplug notifier error injection module"
|
|
depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
memory hotplug notifier chain callbacks. It is controlled through
|
|
debugfs interface under /sys/kernel/debug/notifier-error-inject/memory
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject memory hotplug offline error (-12 == -ENOMEM)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/memory
|
|
# echo -12 > actions/MEM_GOING_OFFLINE/error
|
|
# echo offline > /sys/devices/system/memory/memoryXXX/state
|
|
bash: echo: write error: Cannot allocate memory
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called memory-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_PER_CPU_MAPS
|
|
bool "Debug access to per_cpu maps"
|
|
depends on DEBUG_KERNEL
|
|
depends on SMP
|
|
help
|
|
Say Y to verify that the per_cpu map being accessed has
|
|
been set up. This adds a fair amount of code to kernel memory
|
|
and decreases performance.
|
|
|
|
Say N if unsure.
|
|
|
|
config DEBUG_HIGHMEM
|
|
bool "Highmem debugging"
|
|
depends on DEBUG_KERNEL && HIGHMEM
|
|
help
|
|
This option enables additional error checking for high memory
|
|
systems. Disable for production systems.
|
|
|
|
config HAVE_DEBUG_STACKOVERFLOW
|
|
bool
|
|
|
|
config DEBUG_STACKOVERFLOW
|
|
bool "Check for stack overflows"
|
|
depends on DEBUG_KERNEL && HAVE_DEBUG_STACKOVERFLOW
|
|
help
|
|
Say Y here if you want to check for overflows of kernel, IRQ
|
|
and exception stacks (if your architecture uses them). This
|
|
option will show detailed messages if free stack space drops
|
|
below a certain limit.
|
|
|
|
These kinds of bugs usually occur when call-chains in the
|
|
kernel get too deep, especially when interrupts are
|
|
involved.
|
|
|
|
Use this in cases where you see apparently random memory
|
|
corruption, especially if it appears in 'struct thread_info'
|
|
|
|
If in doubt, say "N".
|
|
|
|
source "lib/Kconfig.kasan"
|
|
source "lib/Kconfig.kfence"
|
|
|
|
endmenu # "Memory Debugging"
|
|
|
|
config DEBUG_SHIRQ
|
|
bool "Debug shared IRQ handlers"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to generate a spurious interrupt just before a shared
|
|
interrupt handler is deregistered (generating one when registering
|
|
is currently disabled). Drivers need to handle this correctly. Some
|
|
don't and need to be caught.
|
|
|
|
menu "Debug Oops, Lockups and Hangs"
|
|
|
|
config PANIC_ON_OOPS
|
|
bool "Panic on Oops"
|
|
help
|
|
Say Y here to enable the kernel to panic when it oopses. This
|
|
has the same effect as setting oops=panic on the kernel command
|
|
line.
|
|
|
|
This feature is useful to ensure that the kernel does not do
|
|
anything erroneous after an oops which could result in data
|
|
corruption or other issues.
|
|
|
|
Say N if unsure.
|
|
|
|
config PANIC_ON_OOPS_VALUE
|
|
int
|
|
range 0 1
|
|
default 0 if !PANIC_ON_OOPS
|
|
default 1 if PANIC_ON_OOPS
|
|
|
|
config PANIC_TIMEOUT
|
|
int "panic timeout"
|
|
default 0
|
|
help
|
|
Set the timeout value (in seconds) until a reboot occurs when
|
|
the kernel panics. If n = 0, then we wait forever. A timeout
|
|
value n > 0 will wait n seconds before rebooting, while a timeout
|
|
value n < 0 will reboot immediately.
|
|
|
|
config LOCKUP_DETECTOR
|
|
bool
|
|
|
|
config SOFTLOCKUP_DETECTOR
|
|
bool "Detect Soft Lockups"
|
|
depends on DEBUG_KERNEL && !S390
|
|
select LOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to act as a watchdog to detect
|
|
soft lockups.
|
|
|
|
Softlockups are bugs that cause the kernel to loop in kernel
|
|
mode for more than 20 seconds, without giving other tasks a
|
|
chance to run. The current stack trace is displayed upon
|
|
detection and the system will stay locked up.
|
|
|
|
config BOOTPARAM_SOFTLOCKUP_PANIC
|
|
bool "Panic (Reboot) On Soft Lockups"
|
|
depends on SOFTLOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to panic on "soft lockups",
|
|
which are bugs that cause the kernel to loop in kernel
|
|
mode for more than 20 seconds (configurable using the watchdog_thresh
|
|
sysctl), without giving other tasks a chance to run.
|
|
|
|
The panic can be used in combination with panic_timeout,
|
|
to cause the system to reboot automatically after a
|
|
lockup has been detected. This feature is useful for
|
|
high-availability systems that have uptime guarantees and
|
|
where a lockup must be resolved ASAP.
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
|
|
int
|
|
depends on SOFTLOCKUP_DETECTOR
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
|
|
default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
|
|
|
|
config HARDLOCKUP_DETECTOR_PERF
|
|
bool
|
|
select SOFTLOCKUP_DETECTOR
|
|
|
|
#
|
|
# Enables a timestamp based low pass filter to compensate for perf based
|
|
# hard lockup detection which runs too fast due to turbo modes.
|
|
#
|
|
config HARDLOCKUP_CHECK_TIMESTAMP
|
|
bool
|
|
|
|
#
|
|
# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
|
|
# lockup detector rather than the perf based detector.
|
|
#
|
|
config HARDLOCKUP_DETECTOR
|
|
bool "Detect Hard Lockups"
|
|
depends on DEBUG_KERNEL && !S390
|
|
depends on HAVE_HARDLOCKUP_DETECTOR_PERF || HAVE_HARDLOCKUP_DETECTOR_ARCH
|
|
select LOCKUP_DETECTOR
|
|
select HARDLOCKUP_DETECTOR_PERF if HAVE_HARDLOCKUP_DETECTOR_PERF
|
|
help
|
|
Say Y here to enable the kernel to act as a watchdog to detect
|
|
hard lockups.
|
|
|
|
Hardlockups are bugs that cause the CPU to loop in kernel mode
|
|
for more than 10 seconds, without letting other interrupts have a
|
|
chance to run. The current stack trace is displayed upon detection
|
|
and the system will stay locked up.
|
|
|
|
config BOOTPARAM_HARDLOCKUP_PANIC
|
|
bool "Panic (Reboot) On Hard Lockups"
|
|
depends on HARDLOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to panic on "hard lockups",
|
|
which are bugs that cause the kernel to loop in kernel
|
|
mode with interrupts disabled for more than 10 seconds (configurable
|
|
using the watchdog_thresh sysctl).
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_HARDLOCKUP_PANIC_VALUE
|
|
int
|
|
depends on HARDLOCKUP_DETECTOR
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_HARDLOCKUP_PANIC
|
|
default 1 if BOOTPARAM_HARDLOCKUP_PANIC
|
|
|
|
config DETECT_HUNG_TASK
|
|
bool "Detect Hung Tasks"
|
|
depends on DEBUG_KERNEL
|
|
default SOFTLOCKUP_DETECTOR
|
|
help
|
|
Say Y here to enable the kernel to detect "hung tasks",
|
|
which are bugs that cause the task to be stuck in
|
|
uninterruptible "D" state indefinitely.
|
|
|
|
When a hung task is detected, the kernel will print the
|
|
current stack trace (which you should report), but the
|
|
task will stay in uninterruptible state. If lockdep is
|
|
enabled then all held locks will also be reported. This
|
|
feature has negligible overhead.
|
|
|
|
config DEFAULT_HUNG_TASK_TIMEOUT
|
|
int "Default timeout for hung task detection (in seconds)"
|
|
depends on DETECT_HUNG_TASK
|
|
default 120
|
|
help
|
|
This option controls the default timeout (in seconds) used
|
|
to determine when a task has become non-responsive and should
|
|
be considered hung.
|
|
|
|
It can be adjusted at runtime via the kernel.hung_task_timeout_secs
|
|
sysctl or by writing a value to
|
|
/proc/sys/kernel/hung_task_timeout_secs.
|
|
|
|
A timeout of 0 disables the check. The default is two minutes.
|
|
Keeping the default should be fine in most cases.
|
|
|
|
config BOOTPARAM_HUNG_TASK_PANIC
|
|
bool "Panic (Reboot) On Hung Tasks"
|
|
depends on DETECT_HUNG_TASK
|
|
help
|
|
Say Y here to enable the kernel to panic on "hung tasks",
|
|
which are bugs that cause the kernel to leave a task stuck
|
|
in uninterruptible "D" state.
|
|
|
|
The panic can be used in combination with panic_timeout,
|
|
to cause the system to reboot automatically after a
|
|
hung task has been detected. This feature is useful for
|
|
high-availability systems that have uptime guarantees and
|
|
where a hung tasks must be resolved ASAP.
|
|
|
|
Say N if unsure.
|
|
|
|
config BOOTPARAM_HUNG_TASK_PANIC_VALUE
|
|
int
|
|
depends on DETECT_HUNG_TASK
|
|
range 0 1
|
|
default 0 if !BOOTPARAM_HUNG_TASK_PANIC
|
|
default 1 if BOOTPARAM_HUNG_TASK_PANIC
|
|
|
|
config WQ_WATCHDOG
|
|
bool "Detect Workqueue Stalls"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here to enable stall detection on workqueues. If a
|
|
worker pool doesn't make forward progress on a pending work
|
|
item for over a given amount of time, 30s by default, a
|
|
warning message is printed along with dump of workqueue
|
|
state. This can be configured through kernel parameter
|
|
"workqueue.watchdog_thresh" and its sysfs counterpart.
|
|
|
|
config TEST_LOCKUP
|
|
tristate "Test module to generate lockups"
|
|
depends on m
|
|
help
|
|
This builds the "test_lockup" module that helps to make sure
|
|
that watchdogs and lockup detectors are working properly.
|
|
|
|
Depending on module parameters it could emulate soft or hard
|
|
lockup, "hung task", or locking arbitrary lock for a long time.
|
|
Also it could generate series of lockups with cooling-down periods.
|
|
|
|
If unsure, say N.
|
|
|
|
endmenu # "Debug lockups and hangs"
|
|
|
|
menu "Scheduler Debugging"
|
|
|
|
config SCHED_DEBUG
|
|
bool "Collect scheduler debugging info"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
default y
|
|
help
|
|
If you say Y here, the /proc/sched_debug file will be provided
|
|
that can help debug the scheduler. The runtime overhead of this
|
|
option is minimal.
|
|
|
|
config SCHED_INFO
|
|
bool
|
|
default n
|
|
|
|
config SCHEDSTATS
|
|
bool "Collect scheduler statistics"
|
|
depends on DEBUG_KERNEL && PROC_FS
|
|
select SCHED_INFO
|
|
help
|
|
If you say Y here, additional code will be inserted into the
|
|
scheduler and related routines to collect statistics about
|
|
scheduler behavior and provide them in /proc/schedstat. These
|
|
stats may be useful for both tuning and debugging the scheduler
|
|
If you aren't debugging the scheduler or trying to tune a specific
|
|
application, you can say N to avoid the very slight overhead
|
|
this adds.
|
|
|
|
endmenu
|
|
|
|
config DEBUG_TIMEKEEPING
|
|
bool "Enable extra timekeeping sanity checking"
|
|
help
|
|
This option will enable additional timekeeping sanity checks
|
|
which may be helpful when diagnosing issues where timekeeping
|
|
problems are suspected.
|
|
|
|
This may include checks in the timekeeping hotpaths, so this
|
|
option may have a (very small) performance impact to some
|
|
workloads.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_PREEMPT
|
|
bool "Debug preemptible kernel"
|
|
depends on DEBUG_KERNEL && PREEMPTION && TRACE_IRQFLAGS_SUPPORT
|
|
default y
|
|
help
|
|
If you say Y here then the kernel will use a debug variant of the
|
|
commonly used smp_processor_id() function and will print warnings
|
|
if kernel code uses it in a preemption-unsafe way. Also, the kernel
|
|
will detect preemption count underflows.
|
|
|
|
menu "Lock Debugging (spinlocks, mutexes, etc...)"
|
|
|
|
config LOCK_DEBUGGING_SUPPORT
|
|
bool
|
|
depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
|
default y
|
|
|
|
config PROVE_LOCKING
|
|
bool "Lock debugging: prove locking correctness"
|
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
|
select LOCKDEP
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select DEBUG_RT_MUTEXES if RT_MUTEXES
|
|
select DEBUG_RWSEMS
|
|
select DEBUG_WW_MUTEX_SLOWPATH
|
|
select DEBUG_LOCK_ALLOC
|
|
select PREEMPT_COUNT if !ARCH_NO_PREEMPT
|
|
select TRACE_IRQFLAGS
|
|
default n
|
|
help
|
|
This feature enables the kernel to prove that all locking
|
|
that occurs in the kernel runtime is mathematically
|
|
correct: that under no circumstance could an arbitrary (and
|
|
not yet triggered) combination of observed locking
|
|
sequences (on an arbitrary number of CPUs, running an
|
|
arbitrary number of tasks and interrupt contexts) cause a
|
|
deadlock.
|
|
|
|
In short, this feature enables the kernel to report locking
|
|
related deadlocks before they actually occur.
|
|
|
|
The proof does not depend on how hard and complex a
|
|
deadlock scenario would be to trigger: how many
|
|
participant CPUs, tasks and irq-contexts would be needed
|
|
for it to trigger. The proof also does not depend on
|
|
timing: if a race and a resulting deadlock is possible
|
|
theoretically (no matter how unlikely the race scenario
|
|
is), it will be proven so and will immediately be
|
|
reported by the kernel (once the event is observed that
|
|
makes the deadlock theoretically possible).
|
|
|
|
If a deadlock is impossible (i.e. the locking rules, as
|
|
observed by the kernel, are mathematically correct), the
|
|
kernel reports nothing.
|
|
|
|
NOTE: this feature can also be enabled for rwlocks, mutexes
|
|
and rwsems - in which case all dependencies between these
|
|
different locking variants are observed and mapped too, and
|
|
the proof of observed correctness is also maintained for an
|
|
arbitrary combination of these separate locking variants.
|
|
|
|
For more details, see Documentation/locking/lockdep-design.rst.
|
|
|
|
config PROVE_RAW_LOCK_NESTING
|
|
bool "Enable raw_spinlock - spinlock nesting checks"
|
|
depends on PROVE_LOCKING
|
|
default n
|
|
help
|
|
Enable the raw_spinlock vs. spinlock nesting checks which ensure
|
|
that the lock nesting rules for PREEMPT_RT enabled kernels are
|
|
not violated.
|
|
|
|
NOTE: There are known nesting problems. So if you enable this
|
|
option expect lockdep splats until these problems have been fully
|
|
addressed which is work in progress. This config switch allows to
|
|
identify and analyze these problems. It will be removed and the
|
|
check permanentely enabled once the main issues have been fixed.
|
|
|
|
If unsure, select N.
|
|
|
|
config LOCK_STAT
|
|
bool "Lock usage statistics"
|
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
|
select LOCKDEP
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select DEBUG_RT_MUTEXES if RT_MUTEXES
|
|
select DEBUG_LOCK_ALLOC
|
|
default n
|
|
help
|
|
This feature enables tracking lock contention points
|
|
|
|
For more details, see Documentation/locking/lockstat.rst
|
|
|
|
This also enables lock events required by "perf lock",
|
|
subcommand of perf.
|
|
If you want to use "perf lock", you also need to turn on
|
|
CONFIG_EVENT_TRACING.
|
|
|
|
CONFIG_LOCK_STAT defines "contended" and "acquired" lock events.
|
|
(CONFIG_LOCKDEP defines "acquire" and "release" events.)
|
|
|
|
config DEBUG_RT_MUTEXES
|
|
bool "RT Mutex debugging, deadlock detection"
|
|
depends on DEBUG_KERNEL && RT_MUTEXES
|
|
help
|
|
This allows rt mutex semantics violations and rt mutex related
|
|
deadlocks (lockups) to be detected and reported automatically.
|
|
|
|
config DEBUG_SPINLOCK
|
|
bool "Spinlock and rw-lock debugging: basic checks"
|
|
depends on DEBUG_KERNEL
|
|
select UNINLINE_SPIN_UNLOCK
|
|
help
|
|
Say Y here and build SMP to catch missing spinlock initialization
|
|
and certain other kinds of spinlock errors commonly made. This is
|
|
best used in conjunction with the NMI watchdog so that spinlock
|
|
deadlocks are also debuggable.
|
|
|
|
config DEBUG_MUTEXES
|
|
bool "Mutex debugging: basic checks"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This feature allows mutex semantics violations to be detected and
|
|
reported.
|
|
|
|
config DEBUG_WW_MUTEX_SLOWPATH
|
|
bool "Wait/wound mutex debugging: Slowpath testing"
|
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
|
select DEBUG_LOCK_ALLOC
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
help
|
|
This feature enables slowpath testing for w/w mutex users by
|
|
injecting additional -EDEADLK wound/backoff cases. Together with
|
|
the full mutex checks enabled with (CONFIG_PROVE_LOCKING) this
|
|
will test all possible w/w mutex interface abuse with the
|
|
exception of simply not acquiring all the required locks.
|
|
Note that this feature can introduce significant overhead, so
|
|
it really should not be enabled in a production or distro kernel,
|
|
even a debug kernel. If you are a driver writer, enable it. If
|
|
you are a distro, do not.
|
|
|
|
config DEBUG_RWSEMS
|
|
bool "RW Semaphore debugging: basic checks"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This debugging feature allows mismatched rw semaphore locks
|
|
and unlocks to be detected and reported.
|
|
|
|
config DEBUG_LOCK_ALLOC
|
|
bool "Lock debugging: detect incorrect freeing of live locks"
|
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
|
select DEBUG_SPINLOCK
|
|
select DEBUG_MUTEXES
|
|
select DEBUG_RT_MUTEXES if RT_MUTEXES
|
|
select LOCKDEP
|
|
help
|
|
This feature will check whether any held lock (spinlock, rwlock,
|
|
mutex or rwsem) is incorrectly freed by the kernel, via any of the
|
|
memory-freeing routines (kfree(), kmem_cache_free(), free_pages(),
|
|
vfree(), etc.), whether a live lock is incorrectly reinitialized via
|
|
spin_lock_init()/mutex_init()/etc., or whether there is any lock
|
|
held during task exit.
|
|
|
|
config LOCKDEP
|
|
bool
|
|
depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
|
|
select STACKTRACE
|
|
select KALLSYMS
|
|
select KALLSYMS_ALL
|
|
|
|
config LOCKDEP_SMALL
|
|
bool
|
|
|
|
config LOCKDEP_BITS
|
|
int "Bitsize for MAX_LOCKDEP_ENTRIES"
|
|
depends on LOCKDEP && !LOCKDEP_SMALL
|
|
range 10 30
|
|
default 15
|
|
help
|
|
Try increasing this value if you hit "BUG: MAX_LOCKDEP_ENTRIES too low!" message.
|
|
|
|
config LOCKDEP_CHAINS_BITS
|
|
int "Bitsize for MAX_LOCKDEP_CHAINS"
|
|
depends on LOCKDEP && !LOCKDEP_SMALL
|
|
range 10 30
|
|
default 16
|
|
help
|
|
Try increasing this value if you hit "BUG: MAX_LOCKDEP_CHAINS too low!" message.
|
|
|
|
config LOCKDEP_STACK_TRACE_BITS
|
|
int "Bitsize for MAX_STACK_TRACE_ENTRIES"
|
|
depends on LOCKDEP && !LOCKDEP_SMALL
|
|
range 10 30
|
|
default 19
|
|
help
|
|
Try increasing this value if you hit "BUG: MAX_STACK_TRACE_ENTRIES too low!" message.
|
|
|
|
config LOCKDEP_STACK_TRACE_HASH_BITS
|
|
int "Bitsize for STACK_TRACE_HASH_SIZE"
|
|
depends on LOCKDEP && !LOCKDEP_SMALL
|
|
range 10 30
|
|
default 14
|
|
help
|
|
Try increasing this value if you need large MAX_STACK_TRACE_ENTRIES.
|
|
|
|
config LOCKDEP_CIRCULAR_QUEUE_BITS
|
|
int "Bitsize for elements in circular_queue struct"
|
|
depends on LOCKDEP
|
|
range 10 30
|
|
default 12
|
|
help
|
|
Try increasing this value if you hit "lockdep bfs error:-1" warning due to __cq_enqueue() failure.
|
|
|
|
config DEBUG_LOCKDEP
|
|
bool "Lock dependency engine debugging"
|
|
depends on DEBUG_KERNEL && LOCKDEP
|
|
help
|
|
If you say Y here, the lock dependency engine will do
|
|
additional runtime checks to debug itself, at the price
|
|
of more runtime overhead.
|
|
|
|
config DEBUG_ATOMIC_SLEEP
|
|
bool "Sleep inside atomic section checking"
|
|
select PREEMPT_COUNT
|
|
depends on DEBUG_KERNEL
|
|
depends on !ARCH_NO_PREEMPT
|
|
help
|
|
If you say Y here, various routines which may sleep will become very
|
|
noisy if they are called inside atomic sections: when a spinlock is
|
|
held, inside an rcu read side critical section, inside preempt disabled
|
|
sections, inside an interrupt, etc...
|
|
|
|
config DEBUG_LOCKING_API_SELFTESTS
|
|
bool "Locking API boot-time self-tests"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Say Y here if you want the kernel to run a short self-test during
|
|
bootup. The self-test checks whether common types of locking bugs
|
|
are detected by debugging mechanisms or not. (if you disable
|
|
lock debugging then those bugs wont be detected of course.)
|
|
The following locking APIs are covered: spinlocks, rwlocks,
|
|
mutexes and rwsems.
|
|
|
|
config LOCK_TORTURE_TEST
|
|
tristate "torture tests for locking"
|
|
depends on DEBUG_KERNEL
|
|
select TORTURE_TEST
|
|
help
|
|
This option provides a kernel module that runs torture tests
|
|
on kernel locking primitives. The kernel module may be built
|
|
after the fact on the running kernel to be tested, if desired.
|
|
|
|
Say Y here if you want kernel locking-primitive torture tests
|
|
to be built into the kernel.
|
|
Say M if you want these torture tests to build as a module.
|
|
Say N if you are unsure.
|
|
|
|
config WW_MUTEX_SELFTEST
|
|
tristate "Wait/wound mutex selftests"
|
|
help
|
|
This option provides a kernel module that runs tests on the
|
|
on the struct ww_mutex locking API.
|
|
|
|
It is recommended to enable DEBUG_WW_MUTEX_SLOWPATH in conjunction
|
|
with this test harness.
|
|
|
|
Say M if you want these self tests to build as a module.
|
|
Say N if you are unsure.
|
|
|
|
config SCF_TORTURE_TEST
|
|
tristate "torture tests for smp_call_function*()"
|
|
depends on DEBUG_KERNEL
|
|
select TORTURE_TEST
|
|
help
|
|
This option provides a kernel module that runs torture tests
|
|
on the smp_call_function() family of primitives. The kernel
|
|
module may be built after the fact on the running kernel to
|
|
be tested, if desired.
|
|
|
|
config CSD_LOCK_WAIT_DEBUG
|
|
bool "Debugging for csd_lock_wait(), called from smp_call_function*()"
|
|
depends on DEBUG_KERNEL
|
|
depends on 64BIT
|
|
default n
|
|
help
|
|
This option enables debug prints when CPUs are slow to respond
|
|
to the smp_call_function*() IPI wrappers. These debug prints
|
|
include the IPI handler function currently executing (if any)
|
|
and relevant stack traces.
|
|
|
|
endmenu # lock debugging
|
|
|
|
config TRACE_IRQFLAGS
|
|
depends on TRACE_IRQFLAGS_SUPPORT
|
|
bool
|
|
help
|
|
Enables hooks to interrupt enabling and disabling for
|
|
either tracing or lock debugging.
|
|
|
|
config TRACE_IRQFLAGS_NMI
|
|
def_bool y
|
|
depends on TRACE_IRQFLAGS
|
|
depends on TRACE_IRQFLAGS_NMI_SUPPORT
|
|
|
|
config STACKTRACE
|
|
bool "Stack backtrace support"
|
|
depends on STACKTRACE_SUPPORT
|
|
help
|
|
This option causes the kernel to create a /proc/pid/stack for
|
|
every process, showing its current stack trace.
|
|
It is also used by various kernel debugging features that require
|
|
stack trace generation.
|
|
|
|
config WARN_ALL_UNSEEDED_RANDOM
|
|
bool "Warn for all uses of unseeded randomness"
|
|
default n
|
|
help
|
|
Some parts of the kernel contain bugs relating to their use of
|
|
cryptographically secure random numbers before it's actually possible
|
|
to generate those numbers securely. This setting ensures that these
|
|
flaws don't go unnoticed, by enabling a message, should this ever
|
|
occur. This will allow people with obscure setups to know when things
|
|
are going wrong, so that they might contact developers about fixing
|
|
it.
|
|
|
|
Unfortunately, on some models of some architectures getting
|
|
a fully seeded CRNG is extremely difficult, and so this can
|
|
result in dmesg getting spammed for a surprisingly long
|
|
time. This is really bad from a security perspective, and
|
|
so architecture maintainers really need to do what they can
|
|
to get the CRNG seeded sooner after the system is booted.
|
|
However, since users cannot do anything actionable to
|
|
address this, by default this option is disabled.
|
|
|
|
Say Y here if you want to receive warnings for all uses of
|
|
unseeded randomness. This will be of use primarily for
|
|
those developers interested in improving the security of
|
|
Linux kernels running on their architecture (or
|
|
subarchitecture).
|
|
|
|
config DEBUG_KOBJECT
|
|
bool "kobject debugging"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here, some extra kobject debugging messages will be sent
|
|
to the syslog.
|
|
|
|
config DEBUG_KOBJECT_RELEASE
|
|
bool "kobject release debugging"
|
|
depends on DEBUG_OBJECTS_TIMERS
|
|
help
|
|
kobjects are reference counted objects. This means that their
|
|
last reference count put is not predictable, and the kobject can
|
|
live on past the point at which a driver decides to drop it's
|
|
initial reference to the kobject gained on allocation. An
|
|
example of this would be a struct device which has just been
|
|
unregistered.
|
|
|
|
However, some buggy drivers assume that after such an operation,
|
|
the memory backing the kobject can be immediately freed. This
|
|
goes completely against the principles of a refcounted object.
|
|
|
|
If you say Y here, the kernel will delay the release of kobjects
|
|
on the last reference count to improve the visibility of this
|
|
kind of kobject release bug.
|
|
|
|
config HAVE_DEBUG_BUGVERBOSE
|
|
bool
|
|
|
|
menu "Debug kernel data structures"
|
|
|
|
config DEBUG_LIST
|
|
bool "Debug linked list manipulation"
|
|
depends on DEBUG_KERNEL || BUG_ON_DATA_CORRUPTION
|
|
help
|
|
Enable this to turn on extended checks in the linked-list
|
|
walking routines.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_PLIST
|
|
bool "Debug priority linked list manipulation"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on extended checks in the priority-ordered
|
|
linked-list (plist) walking routines. This checks the entire
|
|
list multiple times during each manipulation.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_SG
|
|
bool "Debug SG table operations"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on checks on scatter-gather tables. This can
|
|
help find problems with drivers that do not properly initialize
|
|
their sg tables.
|
|
|
|
If unsure, say N.
|
|
|
|
config DEBUG_NOTIFIERS
|
|
bool "Debug notifier call chains"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on sanity checking for notifier call chains.
|
|
This is most useful for kernel developers to make sure that
|
|
modules properly unregister themselves from notifier chains.
|
|
This is a relatively cheap check but if you care about maximum
|
|
performance, say N.
|
|
|
|
config BUG_ON_DATA_CORRUPTION
|
|
bool "Trigger a BUG when data corruption is detected"
|
|
select DEBUG_LIST
|
|
help
|
|
Select this option if the kernel should BUG when it encounters
|
|
data corruption in kernel memory structures when they get checked
|
|
for validity.
|
|
|
|
If unsure, say N.
|
|
|
|
endmenu
|
|
|
|
config DEBUG_CREDENTIALS
|
|
bool "Debug credential management"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enable this to turn on some debug checking for credential
|
|
management. The additional code keeps track of the number of
|
|
pointers from task_structs to any given cred struct, and checks to
|
|
see that this number never exceeds the usage count of the cred
|
|
struct.
|
|
|
|
Furthermore, if SELinux is enabled, this also checks that the
|
|
security pointer in the cred struct is never seen to be invalid.
|
|
|
|
If unsure, say N.
|
|
|
|
source "kernel/rcu/Kconfig.debug"
|
|
|
|
config DEBUG_WQ_FORCE_RR_CPU
|
|
bool "Force round-robin CPU selection for unbound work items"
|
|
depends on DEBUG_KERNEL
|
|
default n
|
|
help
|
|
Workqueue used to implicitly guarantee that work items queued
|
|
without explicit CPU specified are put on the local CPU. This
|
|
guarantee is no longer true and while local CPU is still
|
|
preferred work items may be put on foreign CPUs. Kernel
|
|
parameter "workqueue.debug_force_rr_cpu" is added to force
|
|
round-robin CPU selection to flush out usages which depend on the
|
|
now broken guarantee. This config option enables the debug
|
|
feature by default. When enabled, memory and cache locality will
|
|
be impacted.
|
|
|
|
config DEBUG_BLOCK_EXT_DEVT
|
|
bool "Force extended block device numbers and spread them"
|
|
depends on DEBUG_KERNEL
|
|
depends on BLOCK
|
|
default n
|
|
help
|
|
BIG FAT WARNING: ENABLING THIS OPTION MIGHT BREAK BOOTING ON
|
|
SOME DISTRIBUTIONS. DO NOT ENABLE THIS UNLESS YOU KNOW WHAT
|
|
YOU ARE DOING. Distros, please enable this and fix whatever
|
|
is broken.
|
|
|
|
Conventionally, block device numbers are allocated from
|
|
predetermined contiguous area. However, extended block area
|
|
may introduce non-contiguous block device numbers. This
|
|
option forces most block device numbers to be allocated from
|
|
the extended space and spreads them to discover kernel or
|
|
userland code paths which assume predetermined contiguous
|
|
device number allocation.
|
|
|
|
Note that turning on this debug option shuffles all the
|
|
device numbers for all IDE and SCSI devices including libata
|
|
ones, so root partition specified using device number
|
|
directly (via rdev or root=MAJ:MIN) won't work anymore.
|
|
Textual device names (root=/dev/sdXn) will continue to work.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config CPU_HOTPLUG_STATE_CONTROL
|
|
bool "Enable CPU hotplug state control"
|
|
depends on DEBUG_KERNEL
|
|
depends on HOTPLUG_CPU
|
|
default n
|
|
help
|
|
Allows to write steps between "offline" and "online" to the CPUs
|
|
sysfs target file so states can be stepped granular. This is a debug
|
|
option for now as the hotplug machinery cannot be stopped and
|
|
restarted at arbitrary points yet.
|
|
|
|
Say N if your are unsure.
|
|
|
|
config LATENCYTOP
|
|
bool "Latency measuring infrastructure"
|
|
depends on DEBUG_KERNEL
|
|
depends on STACKTRACE_SUPPORT
|
|
depends on PROC_FS
|
|
depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
|
|
select KALLSYMS
|
|
select KALLSYMS_ALL
|
|
select STACKTRACE
|
|
select SCHEDSTATS
|
|
select SCHED_DEBUG
|
|
help
|
|
Enable this option if you want to use the LatencyTOP tool
|
|
to find out which userspace is blocking on what kernel operations.
|
|
|
|
source "kernel/trace/Kconfig"
|
|
|
|
config PROVIDE_OHCI1394_DMA_INIT
|
|
bool "Remote debugging over FireWire early on boot"
|
|
depends on PCI && X86
|
|
help
|
|
If you want to debug problems which hang or crash the kernel early
|
|
on boot and the crashing machine has a FireWire port, you can use
|
|
this feature to remotely access the memory of the crashed machine
|
|
over FireWire. This employs remote DMA as part of the OHCI1394
|
|
specification which is now the standard for FireWire controllers.
|
|
|
|
With remote DMA, you can monitor the printk buffer remotely using
|
|
firescope and access all memory below 4GB using fireproxy from gdb.
|
|
Even controlling a kernel debugger is possible using remote DMA.
|
|
|
|
Usage:
|
|
|
|
If ohci1394_dma=early is used as boot parameter, it will initialize
|
|
all OHCI1394 controllers which are found in the PCI config space.
|
|
|
|
As all changes to the FireWire bus such as enabling and disabling
|
|
devices cause a bus reset and thereby disable remote DMA for all
|
|
devices, be sure to have the cable plugged and FireWire enabled on
|
|
the debugging host before booting the debug target for debugging.
|
|
|
|
This code (~1k) is freed after boot. By then, the firewire stack
|
|
in charge of the OHCI-1394 controllers should be used instead.
|
|
|
|
See Documentation/core-api/debugging-via-ohci1394.rst for more information.
|
|
|
|
source "samples/Kconfig"
|
|
|
|
config ARCH_HAS_DEVMEM_IS_ALLOWED
|
|
bool
|
|
|
|
config STRICT_DEVMEM
|
|
bool "Filter access to /dev/mem"
|
|
depends on MMU && DEVMEM
|
|
depends on ARCH_HAS_DEVMEM_IS_ALLOWED
|
|
default y if PPC || X86 || ARM64
|
|
help
|
|
If this option is disabled, you allow userspace (root) access to all
|
|
of memory, including kernel and userspace memory. Accidental
|
|
access to this is obviously disastrous, but specific access can
|
|
be used by people debugging the kernel. Note that with PAT support
|
|
enabled, even in this case there are restrictions on /dev/mem
|
|
use due to the cache aliasing requirements.
|
|
|
|
If this option is switched on, and IO_STRICT_DEVMEM=n, the /dev/mem
|
|
file only allows userspace access to PCI space and the BIOS code and
|
|
data regions. This is sufficient for dosemu and X and all common
|
|
users of /dev/mem.
|
|
|
|
If in doubt, say Y.
|
|
|
|
config IO_STRICT_DEVMEM
|
|
bool "Filter I/O access to /dev/mem"
|
|
depends on STRICT_DEVMEM
|
|
help
|
|
If this option is disabled, you allow userspace (root) access to all
|
|
io-memory regardless of whether a driver is actively using that
|
|
range. Accidental access to this is obviously disastrous, but
|
|
specific access can be used by people debugging kernel drivers.
|
|
|
|
If this option is switched on, the /dev/mem file only allows
|
|
userspace access to *idle* io-memory ranges (see /proc/iomem) This
|
|
may break traditional users of /dev/mem (dosemu, legacy X, etc...)
|
|
if the driver using a given range cannot be disabled.
|
|
|
|
If in doubt, say Y.
|
|
|
|
menu "$(SRCARCH) Debugging"
|
|
|
|
source "arch/$(SRCARCH)/Kconfig.debug"
|
|
|
|
endmenu
|
|
|
|
menu "Kernel Testing and Coverage"
|
|
|
|
source "lib/kunit/Kconfig"
|
|
|
|
config NOTIFIER_ERROR_INJECTION
|
|
tristate "Notifier error injection"
|
|
depends on DEBUG_KERNEL
|
|
select DEBUG_FS
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
specified notifier chain callbacks. It is useful to test the error
|
|
handling of notifier call chain failures.
|
|
|
|
Say N if unsure.
|
|
|
|
config PM_NOTIFIER_ERROR_INJECT
|
|
tristate "PM notifier error injection module"
|
|
depends on PM && NOTIFIER_ERROR_INJECTION
|
|
default m if PM_DEBUG
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
PM notifier chain callbacks. It is controlled through debugfs
|
|
interface /sys/kernel/debug/notifier-error-inject/pm
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject PM suspend error (-12 = -ENOMEM)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/pm/
|
|
# echo -12 > actions/PM_SUSPEND_PREPARE/error
|
|
# echo mem > /sys/power/state
|
|
bash: echo: write error: Cannot allocate memory
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called pm-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config OF_RECONFIG_NOTIFIER_ERROR_INJECT
|
|
tristate "OF reconfig notifier error injection module"
|
|
depends on OF_DYNAMIC && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
OF reconfig notifier chain callbacks. It is controlled
|
|
through debugfs interface under
|
|
/sys/kernel/debug/notifier-error-inject/OF-reconfig/
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called of-reconfig-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config NETDEV_NOTIFIER_ERROR_INJECT
|
|
tristate "Netdev notifier error injection module"
|
|
depends on NET && NOTIFIER_ERROR_INJECTION
|
|
help
|
|
This option provides the ability to inject artificial errors to
|
|
netdevice notifier chain callbacks. It is controlled through debugfs
|
|
interface /sys/kernel/debug/notifier-error-inject/netdev
|
|
|
|
If the notifier call chain should be failed with some events
|
|
notified, write the error code to "actions/<notifier event>/error".
|
|
|
|
Example: Inject netdevice mtu change error (-22 = -EINVAL)
|
|
|
|
# cd /sys/kernel/debug/notifier-error-inject/netdev
|
|
# echo -22 > actions/NETDEV_CHANGEMTU/error
|
|
# ip link set eth0 mtu 1024
|
|
RTNETLINK answers: Invalid argument
|
|
|
|
To compile this code as a module, choose M here: the module will
|
|
be called netdev-notifier-error-inject.
|
|
|
|
If unsure, say N.
|
|
|
|
config FUNCTION_ERROR_INJECTION
|
|
bool "Fault-injections of functions"
|
|
depends on HAVE_FUNCTION_ERROR_INJECTION && KPROBES
|
|
help
|
|
Add fault injections into various functions that are annotated with
|
|
ALLOW_ERROR_INJECTION() in the kernel. BPF may also modify the return
|
|
value of theses functions. This is useful to test error paths of code.
|
|
|
|
If unsure, say N
|
|
|
|
config FAULT_INJECTION
|
|
bool "Fault-injection framework"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Provide fault-injection framework.
|
|
For more details, see Documentation/fault-injection/.
|
|
|
|
config FAILSLAB
|
|
bool "Fault-injection capability for kmalloc"
|
|
depends on FAULT_INJECTION
|
|
depends on SLAB || SLUB
|
|
help
|
|
Provide fault-injection capability for kmalloc.
|
|
|
|
config FAIL_PAGE_ALLOC
|
|
bool "Fault-injection capability for alloc_pages()"
|
|
depends on FAULT_INJECTION
|
|
help
|
|
Provide fault-injection capability for alloc_pages().
|
|
|
|
config FAULT_INJECTION_USERCOPY
|
|
bool "Fault injection capability for usercopy functions"
|
|
depends on FAULT_INJECTION
|
|
help
|
|
Provides fault-injection capability to inject failures
|
|
in usercopy functions (copy_from_user(), get_user(), ...).
|
|
|
|
config FAIL_MAKE_REQUEST
|
|
bool "Fault-injection capability for disk IO"
|
|
depends on FAULT_INJECTION && BLOCK
|
|
help
|
|
Provide fault-injection capability for disk IO.
|
|
|
|
config FAIL_IO_TIMEOUT
|
|
bool "Fault-injection capability for faking disk interrupts"
|
|
depends on FAULT_INJECTION && BLOCK
|
|
help
|
|
Provide fault-injection capability on end IO handling. This
|
|
will make the block layer "forget" an interrupt as configured,
|
|
thus exercising the error handling.
|
|
|
|
Only works with drivers that use the generic timeout handling,
|
|
for others it wont do anything.
|
|
|
|
config FAIL_FUTEX
|
|
bool "Fault-injection capability for futexes"
|
|
select DEBUG_FS
|
|
depends on FAULT_INJECTION && FUTEX
|
|
help
|
|
Provide fault-injection capability for futexes.
|
|
|
|
config FAULT_INJECTION_DEBUG_FS
|
|
bool "Debugfs entries for fault-injection capabilities"
|
|
depends on FAULT_INJECTION && SYSFS && DEBUG_FS
|
|
help
|
|
Enable configuration of fault-injection capabilities via debugfs.
|
|
|
|
config FAIL_FUNCTION
|
|
bool "Fault-injection capability for functions"
|
|
depends on FAULT_INJECTION_DEBUG_FS && FUNCTION_ERROR_INJECTION
|
|
help
|
|
Provide function-based fault-injection capability.
|
|
This will allow you to override a specific function with a return
|
|
with given return value. As a result, function caller will see
|
|
an error value and have to handle it. This is useful to test the
|
|
error handling in various subsystems.
|
|
|
|
config FAIL_MMC_REQUEST
|
|
bool "Fault-injection capability for MMC IO"
|
|
depends on FAULT_INJECTION_DEBUG_FS && MMC
|
|
help
|
|
Provide fault-injection capability for MMC IO.
|
|
This will make the mmc core return data errors. This is
|
|
useful to test the error handling in the mmc block device
|
|
and to test how the mmc host driver handles retries from
|
|
the block device.
|
|
|
|
config FAULT_INJECTION_STACKTRACE_FILTER
|
|
bool "stacktrace filter for fault-injection capabilities"
|
|
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
|
depends on !X86_64
|
|
select STACKTRACE
|
|
depends on FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86
|
|
help
|
|
Provide stacktrace filter for fault-injection capabilities
|
|
|
|
config ARCH_HAS_KCOV
|
|
bool
|
|
help
|
|
An architecture should select this when it can successfully
|
|
build and run with CONFIG_KCOV. This typically requires
|
|
disabling instrumentation for some early boot code.
|
|
|
|
config CC_HAS_SANCOV_TRACE_PC
|
|
def_bool $(cc-option,-fsanitize-coverage=trace-pc)
|
|
|
|
|
|
config KCOV
|
|
bool "Code coverage for fuzzing"
|
|
depends on ARCH_HAS_KCOV
|
|
depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS
|
|
select DEBUG_FS
|
|
select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC
|
|
help
|
|
KCOV exposes kernel code coverage information in a form suitable
|
|
for coverage-guided fuzzing (randomized testing).
|
|
|
|
If RANDOMIZE_BASE is enabled, PC values will not be stable across
|
|
different machines and across reboots. If you need stable PC values,
|
|
disable RANDOMIZE_BASE.
|
|
|
|
For more details, see Documentation/dev-tools/kcov.rst.
|
|
|
|
config KCOV_ENABLE_COMPARISONS
|
|
bool "Enable comparison operands collection by KCOV"
|
|
depends on KCOV
|
|
depends on $(cc-option,-fsanitize-coverage=trace-cmp)
|
|
help
|
|
KCOV also exposes operands of every comparison in the instrumented
|
|
code along with operand sizes and PCs of the comparison instructions.
|
|
These operands can be used by fuzzing engines to improve the quality
|
|
of fuzzing coverage.
|
|
|
|
config KCOV_INSTRUMENT_ALL
|
|
bool "Instrument all code by default"
|
|
depends on KCOV
|
|
default y
|
|
help
|
|
If you are doing generic system call fuzzing (like e.g. syzkaller),
|
|
then you will want to instrument the whole kernel and you should
|
|
say y here. If you are doing more targeted fuzzing (like e.g.
|
|
filesystem fuzzing with AFL) then you will want to enable coverage
|
|
for more specific subsets of files, and should say n here.
|
|
|
|
config KCOV_IRQ_AREA_SIZE
|
|
hex "Size of interrupt coverage collection area in words"
|
|
depends on KCOV
|
|
default 0x40000
|
|
help
|
|
KCOV uses preallocated per-cpu areas to collect coverage from
|
|
soft interrupts. This specifies the size of those areas in the
|
|
number of unsigned long words.
|
|
|
|
menuconfig RUNTIME_TESTING_MENU
|
|
bool "Runtime Testing"
|
|
def_bool y
|
|
|
|
if RUNTIME_TESTING_MENU
|
|
|
|
config LKDTM
|
|
tristate "Linux Kernel Dump Test Tool Module"
|
|
depends on DEBUG_FS
|
|
help
|
|
This module enables testing of the different dumping mechanisms by
|
|
inducing system failures at predefined crash points.
|
|
If you don't need it: say N
|
|
Choose M here to compile this code as a module. The module will be
|
|
called lkdtm.
|
|
|
|
Documentation on how to use the module can be found in
|
|
Documentation/fault-injection/provoke-crashes.rst
|
|
|
|
config TEST_LIST_SORT
|
|
tristate "Linked list sorting test"
|
|
depends on DEBUG_KERNEL || m
|
|
help
|
|
Enable this to turn on 'list_sort()' function test. This test is
|
|
executed only once during system boot (so affects only boot time),
|
|
or at module load time.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_MIN_HEAP
|
|
tristate "Min heap test"
|
|
depends on DEBUG_KERNEL || m
|
|
help
|
|
Enable this to turn on min heap function tests. This test is
|
|
executed only once during system boot (so affects only boot time),
|
|
or at module load time.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_SORT
|
|
tristate "Array-based sort test"
|
|
depends on DEBUG_KERNEL || m
|
|
help
|
|
This option enables the self-test function of 'sort()' at boot,
|
|
or at module load time.
|
|
|
|
If unsure, say N.
|
|
|
|
config KPROBES_SANITY_TEST
|
|
bool "Kprobes sanity tests"
|
|
depends on DEBUG_KERNEL
|
|
depends on KPROBES
|
|
help
|
|
This option provides for testing basic kprobes functionality on
|
|
boot. Samples of kprobe and kretprobe are inserted and
|
|
verified for functionality.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config BACKTRACE_SELF_TEST
|
|
tristate "Self test for the backtrace code"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This option provides a kernel module that can be used to test
|
|
the kernel stack backtrace code. This option is not useful
|
|
for distributions or general kernels, but only for kernel
|
|
developers working on architecture code.
|
|
|
|
Note that if you want to also test saved backtraces, you will
|
|
have to enable STACKTRACE as well.
|
|
|
|
Say N if you are unsure.
|
|
|
|
config RBTREE_TEST
|
|
tristate "Red-Black tree test"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
A benchmark measuring the performance of the rbtree library.
|
|
Also includes rbtree invariant checks.
|
|
|
|
config REED_SOLOMON_TEST
|
|
tristate "Reed-Solomon library test"
|
|
depends on DEBUG_KERNEL || m
|
|
select REED_SOLOMON
|
|
select REED_SOLOMON_ENC16
|
|
select REED_SOLOMON_DEC16
|
|
help
|
|
This option enables the self-test function of rslib at boot,
|
|
or at module load time.
|
|
|
|
If unsure, say N.
|
|
|
|
config INTERVAL_TREE_TEST
|
|
tristate "Interval tree test"
|
|
depends on DEBUG_KERNEL
|
|
select INTERVAL_TREE
|
|
help
|
|
A benchmark measuring the performance of the interval tree library
|
|
|
|
config PERCPU_TEST
|
|
tristate "Per cpu operations test"
|
|
depends on m && DEBUG_KERNEL
|
|
help
|
|
Enable this option to build test module which validates per-cpu
|
|
operations.
|
|
|
|
If unsure, say N.
|
|
|
|
config ATOMIC64_SELFTEST
|
|
tristate "Perform an atomic64_t self-test"
|
|
help
|
|
Enable this option to test the atomic64_t functions at boot or
|
|
at module load time.
|
|
|
|
If unsure, say N.
|
|
|
|
config ASYNC_RAID6_TEST
|
|
tristate "Self test for hardware accelerated raid6 recovery"
|
|
depends on ASYNC_RAID6_RECOV
|
|
select ASYNC_MEMCPY
|
|
help
|
|
This is a one-shot self test that permutes through the
|
|
recovery of all the possible two disk failure scenarios for a
|
|
N-disk array. Recovery is performed with the asynchronous
|
|
raid6 recovery routines, and will optionally use an offload
|
|
engine if one is available.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_HEXDUMP
|
|
tristate "Test functions located in the hexdump module at runtime"
|
|
|
|
config TEST_STRING_HELPERS
|
|
tristate "Test functions located in the string_helpers module at runtime"
|
|
|
|
config TEST_STRSCPY
|
|
tristate "Test strscpy*() family of functions at runtime"
|
|
|
|
config TEST_KSTRTOX
|
|
tristate "Test kstrto*() family of functions at runtime"
|
|
|
|
config TEST_PRINTF
|
|
tristate "Test printf() family of functions at runtime"
|
|
|
|
config TEST_BITMAP
|
|
tristate "Test bitmap_*() family of functions at runtime"
|
|
help
|
|
Enable this option to test the bitmap functions at boot.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_UUID
|
|
tristate "Test functions located in the uuid module at runtime"
|
|
|
|
config TEST_XARRAY
|
|
tristate "Test the XArray code at runtime"
|
|
|
|
config TEST_OVERFLOW
|
|
tristate "Test check_*_overflow() functions at runtime"
|
|
|
|
config TEST_RHASHTABLE
|
|
tristate "Perform selftest on resizable hash table"
|
|
help
|
|
Enable this option to test the rhashtable functions at boot.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_HASH
|
|
tristate "Perform selftest on hash functions"
|
|
help
|
|
Enable this option to test the kernel's integer (<linux/hash.h>),
|
|
string (<linux/stringhash.h>), and siphash (<linux/siphash.h>)
|
|
hash functions on boot (or module load).
|
|
|
|
This is intended to help people writing architecture-specific
|
|
optimized versions. If unsure, say N.
|
|
|
|
config TEST_IDA
|
|
tristate "Perform selftest on IDA functions"
|
|
|
|
config TEST_PARMAN
|
|
tristate "Perform selftest on priority array manager"
|
|
depends on PARMAN
|
|
help
|
|
Enable this option to test priority array manager on boot
|
|
(or module load).
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_IRQ_TIMINGS
|
|
bool "IRQ timings selftest"
|
|
depends on IRQ_TIMINGS
|
|
help
|
|
Enable this option to test the irq timings code on boot.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_LKM
|
|
tristate "Test module loading with 'hello world' module"
|
|
depends on m
|
|
help
|
|
This builds the "test_module" module that emits "Hello, world"
|
|
on printk when loaded. It is designed to be used for basic
|
|
evaluation of the module loading subsystem (for example when
|
|
validating module verification). It lacks any extra dependencies,
|
|
and will not normally be loaded by the system unless explicitly
|
|
requested by name.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_BITOPS
|
|
tristate "Test module for compilation of bitops operations"
|
|
depends on m
|
|
help
|
|
This builds the "test_bitops" module that is much like the
|
|
TEST_LKM module except that it does a basic exercise of the
|
|
set/clear_bit macros and get_count_order/long to make sure there are
|
|
no compiler warnings from C=1 sparse checker or -Wextra
|
|
compilations. It has no dependencies and doesn't run or load unless
|
|
explicitly requested by name. for example: modprobe test_bitops.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_VMALLOC
|
|
tristate "Test module for stress/performance analysis of vmalloc allocator"
|
|
default n
|
|
depends on MMU
|
|
depends on m
|
|
help
|
|
This builds the "test_vmalloc" module that should be used for
|
|
stress and performance analysis. So, any new change for vmalloc
|
|
subsystem can be evaluated from performance and stability point
|
|
of view.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_USER_COPY
|
|
tristate "Test user/kernel boundary protections"
|
|
depends on m
|
|
help
|
|
This builds the "test_user_copy" module that runs sanity checks
|
|
on the copy_to/from_user infrastructure, making sure basic
|
|
user/kernel boundary testing is working. If it fails to load,
|
|
a regression has been detected in the user/kernel memory boundary
|
|
protections.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_BPF
|
|
tristate "Test BPF filter functionality"
|
|
depends on m && NET
|
|
help
|
|
This builds the "test_bpf" module that runs various test vectors
|
|
against the BPF interpreter or BPF JIT compiler depending on the
|
|
current setting. This is in particular useful for BPF JIT compiler
|
|
development, but also to run regression tests against changes in
|
|
the interpreter code. It also enables test stubs for eBPF maps and
|
|
verifier used by user space verifier testsuite.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_BLACKHOLE_DEV
|
|
tristate "Test blackhole netdev functionality"
|
|
depends on m && NET
|
|
help
|
|
This builds the "test_blackhole_dev" module that validates the
|
|
data path through this blackhole netdev.
|
|
|
|
If unsure, say N.
|
|
|
|
config FIND_BIT_BENCHMARK
|
|
tristate "Test find_bit functions"
|
|
help
|
|
This builds the "test_find_bit" module that measure find_*_bit()
|
|
functions performance.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_FIRMWARE
|
|
tristate "Test firmware loading via userspace interface"
|
|
depends on FW_LOADER
|
|
help
|
|
This builds the "test_firmware" module that creates a userspace
|
|
interface for testing firmware loading. This can be used to
|
|
control the triggering of firmware loading without needing an
|
|
actual firmware-using device. The contents can be rechecked by
|
|
userspace.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_SYSCTL
|
|
tristate "sysctl test driver"
|
|
depends on PROC_SYSCTL
|
|
help
|
|
This builds the "test_sysctl" module. This driver enables to test the
|
|
proc sysctl interfaces available to drivers safely without affecting
|
|
production knobs which might alter system functionality.
|
|
|
|
If unsure, say N.
|
|
|
|
config BITFIELD_KUNIT
|
|
tristate "KUnit test bitfield functions at runtime"
|
|
depends on KUNIT
|
|
help
|
|
Enable this option to test the bitfield functions at boot.
|
|
|
|
KUnit tests run during boot and output the results to the debug log
|
|
in TAP format (http://testanything.org/). Only useful for kernel devs
|
|
running the KUnit test harness, and not intended for inclusion into a
|
|
production build.
|
|
|
|
For more information on KUnit and unit tests in general please refer
|
|
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
|
|
|
If unsure, say N.
|
|
|
|
config SYSCTL_KUNIT_TEST
|
|
tristate "KUnit test for sysctl" if !KUNIT_ALL_TESTS
|
|
depends on KUNIT
|
|
default KUNIT_ALL_TESTS
|
|
help
|
|
This builds the proc sysctl unit test, which runs on boot.
|
|
Tests the API contract and implementation correctness of sysctl.
|
|
For more information on KUnit and unit tests in general please refer
|
|
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
|
|
|
If unsure, say N.
|
|
|
|
config LIST_KUNIT_TEST
|
|
tristate "KUnit Test for Kernel Linked-list structures" if !KUNIT_ALL_TESTS
|
|
depends on KUNIT
|
|
default KUNIT_ALL_TESTS
|
|
help
|
|
This builds the linked list KUnit test suite.
|
|
It tests that the API and basic functionality of the list_head type
|
|
and associated macros.
|
|
|
|
KUnit tests run during boot and output the results to the debug log
|
|
in TAP format (https://testanything.org/). Only useful for kernel devs
|
|
running the KUnit test harness, and not intended for inclusion into a
|
|
production build.
|
|
|
|
For more information on KUnit and unit tests in general please refer
|
|
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
|
|
|
If unsure, say N.
|
|
|
|
config LINEAR_RANGES_TEST
|
|
tristate "KUnit test for linear_ranges"
|
|
depends on KUNIT
|
|
select LINEAR_RANGES
|
|
help
|
|
This builds the linear_ranges unit test, which runs on boot.
|
|
Tests the linear_ranges logic correctness.
|
|
For more information on KUnit and unit tests in general please refer
|
|
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
|
|
|
If unsure, say N.
|
|
|
|
config BITS_TEST
|
|
tristate "KUnit test for bits.h"
|
|
depends on KUNIT
|
|
help
|
|
This builds the bits unit test.
|
|
Tests the logic of macros defined in bits.h.
|
|
For more information on KUnit and unit tests in general please refer
|
|
to the KUnit documentation in Documentation/dev-tools/kunit/.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_UDELAY
|
|
tristate "udelay test driver"
|
|
help
|
|
This builds the "udelay_test" module that helps to make sure
|
|
that udelay() is working properly.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_STATIC_KEYS
|
|
tristate "Test static keys"
|
|
depends on m
|
|
help
|
|
Test the static key interfaces.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_KMOD
|
|
tristate "kmod stress tester"
|
|
depends on m
|
|
depends on NETDEVICES && NET_CORE && INET # for TUN
|
|
depends on BLOCK
|
|
select TEST_LKM
|
|
select XFS_FS
|
|
select TUN
|
|
select BTRFS_FS
|
|
help
|
|
Test the kernel's module loading mechanism: kmod. kmod implements
|
|
support to load modules using the Linux kernel's usermode helper.
|
|
This test provides a series of tests against kmod.
|
|
|
|
Although technically you can either build test_kmod as a module or
|
|
into the kernel we disallow building it into the kernel since
|
|
it stress tests request_module() and this will very likely cause
|
|
some issues by taking over precious threads available from other
|
|
module load requests, ultimately this could be fatal.
|
|
|
|
To run tests run:
|
|
|
|
tools/testing/selftests/kmod/kmod.sh --help
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_DEBUG_VIRTUAL
|
|
tristate "Test CONFIG_DEBUG_VIRTUAL feature"
|
|
depends on DEBUG_VIRTUAL
|
|
help
|
|
Test the kernel's ability to detect incorrect calls to
|
|
virt_to_phys() done against the non-linear part of the
|
|
kernel's virtual address map.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_MEMCAT_P
|
|
tristate "Test memcat_p() helper function"
|
|
help
|
|
Test the memcat_p() helper for correctly merging two
|
|
pointer arrays together.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_LIVEPATCH
|
|
tristate "Test livepatching"
|
|
default n
|
|
depends on DYNAMIC_DEBUG
|
|
depends on LIVEPATCH
|
|
depends on m
|
|
help
|
|
Test kernel livepatching features for correctness. The tests will
|
|
load test modules that will be livepatched in various scenarios.
|
|
|
|
To run all the livepatching tests:
|
|
|
|
make -C tools/testing/selftests TARGETS=livepatch run_tests
|
|
|
|
Alternatively, individual tests may be invoked:
|
|
|
|
tools/testing/selftests/livepatch/test-callbacks.sh
|
|
tools/testing/selftests/livepatch/test-livepatch.sh
|
|
tools/testing/selftests/livepatch/test-shadow-vars.sh
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_OBJAGG
|
|
tristate "Perform selftest on object aggreration manager"
|
|
default n
|
|
depends on OBJAGG
|
|
help
|
|
Enable this option to test object aggregation manager on boot
|
|
(or module load).
|
|
|
|
|
|
config TEST_STACKINIT
|
|
tristate "Test level of stack variable initialization"
|
|
help
|
|
Test if the kernel is zero-initializing stack variables and
|
|
padding. Coverage is controlled by compiler flags,
|
|
CONFIG_GCC_PLUGIN_STRUCTLEAK, CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF,
|
|
or CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_MEMINIT
|
|
tristate "Test heap/page initialization"
|
|
help
|
|
Test if the kernel is zero-initializing heap and page allocations.
|
|
This can be useful to test init_on_alloc and init_on_free features.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_HMM
|
|
tristate "Test HMM (Heterogeneous Memory Management)"
|
|
depends on TRANSPARENT_HUGEPAGE
|
|
depends on DEVICE_PRIVATE
|
|
select HMM_MIRROR
|
|
select MMU_NOTIFIER
|
|
help
|
|
This is a pseudo device driver solely for testing HMM.
|
|
Say M here if you want to build the HMM test module.
|
|
Doing so will allow you to run tools/testing/selftest/vm/hmm-tests.
|
|
|
|
If unsure, say N.
|
|
|
|
config TEST_FREE_PAGES
|
|
tristate "Test freeing pages"
|
|
help
|
|
Test that a memory leak does not occur due to a race between
|
|
freeing a block of pages and a speculative page reference.
|
|
Loading this module is safe if your kernel has the bug fixed.
|
|
If the bug is not fixed, it will leak gigabytes of memory and
|
|
probably OOM your system.
|
|
|
|
config TEST_FPU
|
|
tristate "Test floating point operations in kernel space"
|
|
depends on X86 && !KCOV_INSTRUMENT_ALL
|
|
help
|
|
Enable this option to add /sys/kernel/debug/selftest_helpers/test_fpu
|
|
which will trigger a sequence of floating point operations. This is used
|
|
for self-testing floating point control register setting in
|
|
kernel_fpu_begin().
|
|
|
|
If unsure, say N.
|
|
|
|
endif # RUNTIME_TESTING_MENU
|
|
|
|
config MEMTEST
|
|
bool "Memtest"
|
|
help
|
|
This option adds a kernel parameter 'memtest', which allows memtest
|
|
to be set.
|
|
memtest=0, mean disabled; -- default
|
|
memtest=1, mean do 1 test pattern;
|
|
...
|
|
memtest=17, mean do 17 test patterns.
|
|
If you are unsure how to answer this question, answer N.
|
|
|
|
|
|
|
|
config HYPERV_TESTING
|
|
bool "Microsoft Hyper-V driver testing"
|
|
default n
|
|
depends on HYPERV && DEBUG_FS
|
|
help
|
|
Select this option to enable Hyper-V vmbus testing.
|
|
|
|
endmenu # "Kernel Testing and Coverage"
|
|
|
|
source "Documentation/Kconfig"
|
|
|
|
endmenu # Kernel hacking
|