On 8/3/26 14:12, Dave Young wrote:
On 8/2/26 6:20 PM, Jan Sebastian Götte wrote:
On 8/2/26 07:08, Dave Young wrote:
On 8/2/26 12:31 AM, Jan Sebastian Götte wrote:
On 8/1/26 16:03, Baoquan He wrote:
Note that we usually dont' want to run a lot of work after panic and
before jumping into kdump kernel.
I understand. For this reason, I think it's best to keep this default-off. As-is, the
notifier list call is timed and on the (slow) ARM64 target I'm using, it takes about 3-5
ms to run. I took the "try lock, skip if locked" approach to keep the risk of
this code crashing during panic minimal. In my application, the kdump payload is code
that then does a full wipe, taking a couple hundred milliseconds.
Not only about the time used, the panicked kernel is not reliable, any more
extra logic can make it even not reliable, any pre-kdump extra logic is not a
good idea unless it is a must to ensure kdump working.
Cleaning up secret data can be done with makedumpfile + eppic scripts (see the
manual of makedumpfile), or it is even possible to do so in kdump kernel with
Tao Liu's improvments for makedumpfile previously (I don't know the status,
probably dropped for the time being, but it is possible, cced him).
Thank you for the pointer!
There's two scenarios worth considering. First, in the standard scenario where
you enable this option, then drop into a standard kdump kernel, I don't think
it makes a big difference *when* you do this cleanup since someone is going to
have to dereference these pointers. IMHO a good reason to do it in the old
kernel is that there, the code knows about the layout of all the data
structures. To retroactively do this in the kdump kernel is much more
complicated, since there you have to reconstruct the structure layouts from
symbols or hardcoded struct layouts, and you have to keep this symbol/layout
information perfectly in sync with the running kernel.
I know that this is the usual reason people want to do things in 1st
kernel :) Like the crash_kexec_post_notifiers which was introduced for
people to use at their own risk. Is it doable for your case to use
crash_kexec_post_notifiers?
I think there's a few reasons why crash_kexec_post_notifiers isn't what
we want here:
1. Enabling/disabling just the key wipe notifiers scattered around the
kernel becomes a bit ugly when they're mixed into the same notifier list.
2. The key wipe should run after other notifiers because by definition
it will corrupt data structures so future operations like any crypto
operations will fail in interesting ways. Having two separate notifier
chains is an easy way to separate them.
3. For my use case, the stability argument is exactly why I want to run
only the wipe, but not crash_kexec_post_notifiers. There are many things
in crash_kexec_post_notifiers. They take precious time, and they
themselves can cause instability. For example, the remoteproc panic
notifier can (intentionally) wait up to several hundred milliseconds,
which is too long in my use case.
Thanks,
Jan Sebastian