Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

config CONFIG_HAVE_ARCH_KMEMCHECK
	bool

if CONFIG_HAVE_ARCH_KMEMCHECK

menuconfig CONFIG_KMEMCHECK
	bool "kmemcheck: trap use of uninitialized memory"
	depends on CONFIG_DEBUG_KERNEL
	depends on !CONFIG_X86_USE_3DNOW
	depends on CONFIG_SLUB || CONFIG_SLAB
	depends on !CONFIG_CC_OPTIMIZE_FOR_SIZE
	depends on !CONFIG_FUNCTION_TRACER
	select CONFIG_FRAME_POINTER
	select CONFIG_STACKTRACE
	default n
	help
	  This option enables tracing of dynamically allocated kernel memory
	  to see if memory is used before it has been given an initial value.
	  Be aware that this requires half of your memory for bookkeeping and
	  will insert extra code at *every* read and write to tracked memory
	  thus slow down the kernel code (but user code is unaffected).

	  The kernel may be started with kmemcheck=0 or kmemcheck=1 to disable
	  or enable kmemcheck at boot-time. If the kernel is started with
	  kmemcheck=0, the large memory and CPU overhead is not incurred.

choice
	prompt "kmemcheck: default mode at boot"
	depends on CONFIG_KMEMCHECK
	default CONFIG_KMEMCHECK_ONESHOT_BY_DEFAULT
	help
	  This option controls the default behaviour of kmemcheck when the
	  kernel boots and no kmemcheck= parameter is given.

config CONFIG_KMEMCHECK_DISABLED_BY_DEFAULT
	bool "disabled"
	depends on CONFIG_KMEMCHECK

config CONFIG_KMEMCHECK_ENABLED_BY_DEFAULT
	bool "enabled"
	depends on CONFIG_KMEMCHECK

config CONFIG_KMEMCHECK_ONESHOT_BY_DEFAULT
	bool "one-shot"
	depends on CONFIG_KMEMCHECK
	help
	  In one-shot mode, only the first error detected is reported before
	  kmemcheck is disabled.

endchoice

config CONFIG_KMEMCHECK_QUEUE_SIZE
	int "kmemcheck: error queue size"
	depends on CONFIG_KMEMCHECK
	default 64
	help
	  Select the maximum number of errors to store in the queue. Since
	  errors can occur virtually anywhere and in any context, we need a
	  temporary storage area which is guarantueed not to generate any
	  other faults. The queue will be emptied as soon as a tasklet may
	  be scheduled. If the queue is full, new error reports will be
	  lost.

config CONFIG_KMEMCHECK_SHADOW_COPY_SHIFT
	int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)"
	depends on CONFIG_KMEMCHECK
	range 2 8
	default 5
	help
	  Select the number of shadow bytes to save along with each entry of
	  the queue. These bytes indicate what parts of an allocation are
	  initialized, uninitialized, etc. and will be displayed when an
	  error is detected to help the debugging of a particular problem.

config CONFIG_KMEMCHECK_PARTIAL_OK
	bool "kmemcheck: allow partially uninitialized memory"
	depends on CONFIG_KMEMCHECK
	default y
	help
	  This option works around certain GCC optimizations that produce
	  32-bit reads from 16-bit variables where the upper 16 bits are
	  thrown away afterwards. This may of course also hide some real
	  bugs.

config CONFIG_KMEMCHECK_BITOPS_OK
	bool "kmemcheck: allow bit-field manipulation"
	depends on CONFIG_KMEMCHECK
	default n
	help
	  This option silences warnings that would be generated for bit-field
	  accesses where not all the bits are initialized at the same time.
	  This may also hide some real bugs.

endif