summaryrefslogtreecommitdiff
path: root/kernel/power
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2019-05-30 23:37:29 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-06-11 12:21:48 +0200
commit08ae2e88deae73ad94b6470eab9f630566be6ce6 (patch)
treecf850556f4b4f22821391455366a75f95874d6b8 /kernel/power
parentf72ecfe93a80a1e83bc9b13f2c66c8af3fb456d8 (diff)
pstore/ram: Run without kernel crash dump region
commit 8880fa32c557600f5f624084152668ed3c2ea51e upstream. The ram pstore backend has always had the crash dumper frontend enabled unconditionally. However, it was possible to effectively disable it by setting a record_size=0. All the machinery would run (storing dumps to the temporary crash buffer), but 0 bytes would ultimately get stored due to there being no przs allocated for dumps. Commit 89d328f637b9 ("pstore/ram: Correctly calculate usable PRZ bytes"), however, assumed that there would always be at least one allocated dprz for calculating the size of the temporary crash buffer. This was, of course, not the case when record_size=0, and would lead to a NULL deref trying to find the dprz buffer size: BUG: unable to handle kernel NULL pointer dereference at (null) ... IP: ramoops_probe+0x285/0x37e (fs/pstore/ram.c:808) cxt->pstore.bufsize = cxt->dprzs[0]->buffer_size; Instead, we need to only enable the frontends based on the success of the prz initialization and only take the needed actions when those zones are available. (This also fixes a possible error in detecting if the ftrace frontend should be enabled.) Reported-and-tested-by: Yaro Slav <yaro330@gmail.com> Fixes: 89d328f637b9 ("pstore/ram: Correctly calculate usable PRZ bytes") Cc: stable@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/power')
0 files changed, 0 insertions, 0 deletions