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? > > The second scenario is what I'm working on here: I'm not using a normal kdump > kernel, but instead a custom payload that wipes all RAM from start to end. > This payload will wipe all these keys too, but my critical concern is speed: > On the embedded SoCs I'm targeting, the full memory wipe takes too long > (hundreds of ms) for an HSM application, so I want to do a targeted wipe of > just the keys first. The old kernel I think is the natural place to do this. > Adding to that, in my scenario the most likely trigger of a panic is not > something like memory corruption, but a trigger of the system's tamper > alarms, which would leave the old kernel relatively stable during panic. > > I can imagine several possible mitigations for the stability concerns beyond > the default off config option: > > * Since the wipe handlers are all really simple, it would be possible to > manually guard every memory access there to ensure they can't fail and that > they don't write to sensitive areas like the dump kernel or the remaining > panic'ing stack. Doing that would only rely on information (more or less > intact stack pointer, kdump kernel area boundaries) that would be necessary > for kdump to succeed anyway. > > * And/Or I could extend the patchset to include a mechanism similar to that > in Bradley Morgan's patchset that catches segfaults during wipe, and then > skips the handler causing the fault. > > * A last option would be to have the alive kernel prepare some kind of "wipe > this first" structure in its memory during normal operation that the dump > kernel then can pick up to do the actual dirty work. I disfavor that since it > adds double bookkeeping to a lot of places, some of which could be > performance critical. > > I've also picked up that I should remove the timing logic since that could > cause instability. > > Thanks, > Jan Sebastian

