linux/Documentation
Vlastimil Babka ad38b5b113 mm, slub: make some slub_debug related attributes read-only
SLUB_DEBUG creates several files under /sys/kernel/slab/<cache>/ that can
be read to check if the respective debugging options are enabled for given
cache.  The options can be also toggled at runtime by writing into the
files.  Some of those, namely red_zone, poison, and store_user can be
toggled only when no objects yet exist in the cache.

Vijayanand reports [1] that there is a problem with freelist randomization
if changing the debugging option's state results in different number of
objects per page, and the random sequence cache needs thus needs to be
recomputed.

However, another problem is that the check for "no objects yet exist in
the cache" is racy, as noted by Jann [2] and fixing that would add
overhead or otherwise complicate the allocation/freeing paths.  Thus it
would be much simpler just to remove the runtime toggling support.  The
documentation describes it's "In case you forgot to enable debugging on
the kernel command line", but the neccessity of having no objects limits
its usefulness anyway for many caches.

Vijayanand describes an use case [3] where debugging is enabled for all
but zram caches for memory overhead reasons, and using the runtime toggles
was the only way to achieve such configuration.  After the previous patch
it's now possible to do that directly from the kernel boot option, so we
can remove the dangerous runtime toggles by making the /sys attribute
files read-only.

While updating it, also improve the documentation of the debugging /sys files.

[1] https://lkml.kernel.org/r/1580379523-32272-1-git-send-email-vjitta@codeaurora.org
[2] https://lore.kernel.org/r/CAG48ez31PP--h6_FzVyfJ4H86QYczAFPdxtJHUEEan+7VJETAQ@mail.gmail.com
[3] https://lore.kernel.org/r/1383cd32-1ddc-4dac-b5f8-9c42282fa81c@codeaurora.org

Reported-by: Vijayanand Jitta <vjitta@codeaurora.org>
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Roman Gushchin <guro@fb.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Pekka Enberg <penberg@kernel.org>
Link: http://lkml.kernel.org/r/20200610163135.17364-3-vbabka@suse.cz
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-08-07 11:33:22 -07:00
..
ABI Staging/IIO driver patches for 5.9-rc1 2020-08-06 14:36:13 -07:00
accounting
admin-guide mm, slub: extend slub_debug syntax for multiple blocks 2020-08-07 11:33:22 -07:00
arm ARM development for 5.9-rc1: 2020-08-06 10:17:00 -07:00
arm64 It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
block for-5.9/drivers-20200803 2020-08-05 10:51:40 -07:00
bpf Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next 2020-08-05 20:13:21 -07:00
cdrom
core-api It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
cpu-freq
crypto It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
dev-tools linux-kselftest-kunit-5.9-rc1 2020-08-05 10:07:39 -07:00
devicetree TTY/Serial patches for 5.9-rc1 2020-08-06 14:56:11 -07:00
doc-guide
driver-api TTY/Serial patches for 5.9-rc1 2020-08-06 14:56:11 -07:00
fault-injection
fb drm next for 5.9-rc1 2020-08-05 19:50:06 -07:00
features Xtensa updates for v5.9: 2020-08-06 10:07:40 -07:00
filesystems ocfs2: replace HTTP links with HTTPS ones 2020-08-07 11:33:22 -07:00
firmware_class
firmware-guide ACPI: Replace HTTP links with HTTPS ones 2020-07-27 14:47:08 +02:00
fpga Char/Misc driver patches for 5.9-rc1 2020-08-05 11:43:47 -07:00
gpu drm next for 5.9-rc1 2020-08-05 19:50:06 -07:00
hid
hwmon hwmon updates for v5.9 2020-08-05 13:13:57 -07:00
i2c It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
ia64 docs: ia64: correct typo 2020-07-31 11:09:09 -06:00
ide
iio
infiniband
input
isdn
kbuild It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
kernel-hacking
leds LEDs changes for 5.9-rc1. 2020-08-05 19:24:27 -07:00
litmus-tests
livepatch
locking It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
m68k
maintainer
mhi
mips It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
misc-devices
netlabel
networking wireless-drivers-next patches for v5.9 2020-08-04 12:57:02 -07:00
nios2
nvdimm
openrisc
parisc
PCI
pcmcia
power Merge branches 'pm-sleep', 'pm-domains', 'powercap' and 'pm-tools' 2020-08-03 13:12:44 +02:00
powerpc It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
process It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
RCU These are the latest RCU bits for v5.9: 2020-08-03 14:31:33 -07:00
riscv
s390 It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
scheduler sched/doc: Factorize bits between sched-energy.rst & sched-capacity.rst 2020-08-01 09:19:43 +02:00
scsi
security
sh
sound ASoC: Updates for v5.9 2020-08-03 14:41:43 +02:00
sparc
sphinx
sphinx-static
spi
staging docs: staging/tee.rst: convert into definition list 2020-07-23 14:25:12 -06:00
target
timers docs: timers: drop documentation about LB_BIAS 2020-07-23 14:32:44 -06:00
trace It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
translations It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
usb USB: Replace HTTP links with HTTPS ones 2020-07-21 13:41:57 +02:00
userspace-api
virt s390: implement diag318 2020-08-06 12:59:31 -07:00
vm mm, slub: make some slub_debug related attributes read-only 2020-08-07 11:33:22 -07:00
w1
watchdog
x86 It's been a busy cycle for documentation - hopefully the busiest for a 2020-08-04 22:47:54 -07:00
xtensa
.gitignore
asm-annotations.rst
atomic_bitops.txt
atomic_t.txt
Changes
CodingStyle
conf.py
COPYING-logo
docutils.conf
dontdiff Documentation: dontdiff: Add zstd compressed files 2020-07-31 11:51:10 +02:00
index.rst docs: index.rst: Add watch_queue 2020-07-23 14:13:23 -06:00
Kconfig
logo.gif
Makefile
memory-barriers.txt Documentation/barriers: Remove references to [smp_]read_barrier_depends() 2020-07-21 10:50:36 +01:00
SubmittingPatches
watch_queue.rst