]> git.baikalelectronics.ru Git - kernel.git/commit
slub: avoid redzone when choosing freepointer location
authorKees Cook <keescook@chromium.org>
Tue, 21 Apr 2020 01:13:42 +0000 (18:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 21 Apr 2020 18:11:55 +0000 (11:11 -0700)
commit19704f5a64a83c6b777d814b8d4f8f40e279d10f
tree1558992fadea29f2ff173d94543ef1d3af7fe21b
parent8eb3d65486fc0e8d947007c747b95365291f3e74
slub: avoid redzone when choosing freepointer location

Marco Elver reported system crashes when booting with "slub_debug=Z".

The freepointer location (s->offset) was not taking into account that
the "inuse" size that includes the redzone area should not be used by
the freelist pointer.  Change the calculation to save the area of the
object that an inline freepointer may be written into.

Fixes: 36cdf4a3eca7 ("slub: relocate freelist pointer to middle of object")
Reported-by: Marco Elver <elver@google.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Tested-by: Marco Elver <elver@google.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Link: http://lkml.kernel.org/r/202004151054.BD695840@keescook
Link: https://lore.kernel.org/linux-mm/20200415164726.GA234932@google.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/slub.c