This repository has been archived by the owner on Dec 14, 2022. It is now read-only.
forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kmemcheck: make kconfig accessible for other architectures
The Kconfig options of kmemcheck are hidden under arch/x86 which makes porting to other architectures harder. To fix that, move the Kconfig bits to lib/Kconfig.kmemcheck and introduce a CONFIG_HAVE_ARCH_KMEMCHECK config option that architectures can define. Signed-off-by: Pekka Enberg <[email protected]> [rebased for mainline inclusion] Signed-off-by: Vegard Nossum <[email protected]>
- Loading branch information
Showing
4 changed files
with
94 additions
and
88 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -996,3 +996,5 @@ config DMA_API_DEBUG | |
source "samples/Kconfig" | ||
|
||
source "lib/Kconfig.kgdb" | ||
|
||
source "lib/Kconfig.kmemcheck" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
config HAVE_ARCH_KMEMCHECK | ||
bool | ||
|
||
menuconfig KMEMCHECK | ||
bool "kmemcheck: trap use of uninitialized memory" | ||
depends on DEBUG_KERNEL | ||
depends on !X86_USE_3DNOW | ||
depends on SLUB || SLAB | ||
depends on !CC_OPTIMIZE_FOR_SIZE | ||
depends on !FUNCTION_TRACER | ||
select FRAME_POINTER | ||
select 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 KMEMCHECK | ||
default KMEMCHECK_ONESHOT_BY_DEFAULT | ||
help | ||
This option controls the default behaviour of kmemcheck when the | ||
kernel boots and no kmemcheck= parameter is given. | ||
|
||
config KMEMCHECK_DISABLED_BY_DEFAULT | ||
bool "disabled" | ||
depends on KMEMCHECK | ||
|
||
config KMEMCHECK_ENABLED_BY_DEFAULT | ||
bool "enabled" | ||
depends on KMEMCHECK | ||
|
||
config KMEMCHECK_ONESHOT_BY_DEFAULT | ||
bool "one-shot" | ||
depends on KMEMCHECK | ||
help | ||
In one-shot mode, only the first error detected is reported before | ||
kmemcheck is disabled. | ||
|
||
endchoice | ||
|
||
config KMEMCHECK_QUEUE_SIZE | ||
int "kmemcheck: error queue size" | ||
depends on 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 KMEMCHECK_SHADOW_COPY_SHIFT | ||
int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)" | ||
depends on 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 KMEMCHECK_PARTIAL_OK | ||
bool "kmemcheck: allow partially uninitialized memory" | ||
depends on 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 KMEMCHECK_BITOPS_OK | ||
bool "kmemcheck: allow bit-field manipulation" | ||
depends on 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. | ||
|