Thread (9 messages) 9 messages, 5 authors, 2020-02-05

Re: [PATCH 1/1] mm: sysctl: add panic_on_inconsistent_mm sysctl

From: Kees Cook <hidden>
Date: 2020-02-05 22:23:13
Also in: linux-fsdevel, linux-mm, lkml

On Mon, Feb 03, 2020 at 10:06:11AM -0500, Qian Cai wrote:
On Mon, 2020-02-03 at 15:08 +0100, Christian Borntraeger wrote:
quoted
On 29.01.20 19:39, Qian Cai wrote:
quoted
quoted
On Jan 29, 2020, at 1:08 PM, Grzegorz Halat [off-list ref] wrote:

Memory management subsystem performs various checks at runtime,
if an inconsistency is detected then such event is being logged and kernel
continues to run. While debugging such problems it is helpful to collect
memory dump as early as possible. Currently, there is no easy way to panic
kernel when such error is detected.

It was proposed[1] to panic the kernel if panic_on_oops is set but this
approach was not accepted. One of alternative proposals was introduction of
a new sysctl.

Add a new sysctl - panic_on_inconsistent_mm. If the sysctl is set then the
kernel will be crashed when an inconsistency is detected by memory
management. This currently means panic when bad page or bad PTE
is detected(this may be extended to other places in MM).

Another use case of this sysctl may be in security-wise environments,
it may be more desired to crash machine than continue to run with
potentially damaged data structures.
It is annoying that I have to repeat my feedback, but I don’t know why
admins want to enable this by allowing normal users to crash the systems
more easily through recoverable MM bugs where I am sure we have plenty.
How does that improve the security?
There are cases where data corruption is a no-go, while "one node going down" 
is acceptable.
And then there is also the case for payed service providers that often need
a dump at the time of the problem to understand rare issues.

So I DO see value in such a thing. We should just piggy-back on panic_on_warn
I guess.
Indeed, so change pr_alert() to pr_warn() there then?
pr_* are just printk levels. If you want a full trace and to hook to
panic_on_warn, you want WARN_ON(condition) (or WARN_ON_ONCE(), etc).

-- 
Kees Cook
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help