On Thu, Oct 21, 2021 at 05:39:38PM -0700, Andy Lutomirski wrote:
On Thu, Oct 21, 2021, at 1:12 PM, Kees Cook wrote:
On Thu, Oct 21, 2021 at 01:03:33PM -0700, Andy Lutomirski wrote:
On Fri, Oct 8, 2021, at 4:55 PM, Kees Cook wrote:
This makes sure that wchan contains a sensible symbol when a process is blocked. Specifically this calls the sleep() syscall, and expects the architecture to have called schedule() from a function that has "sleep" somewhere in its name. For example, on the architectures I tested (x86_64, arm64, arm, mips, and powerpc) this is "hrtimer_nanosleep":
Is this really better than admitting that the whole mechanism is nonsense and disabling it?
We could have a fixed string for each task state and call it a day.
I consider this to be "future work". In earlier discussions it came up, but there wasn't an obvious clean cost-free way to do this, so instead we're just fixing the broken corner and keeping the mostly working rest of it while cleaning up the weird edges. :)
True, but we have the caveat that wchan is currently broken, so in some sense we have an easier time killing it now as compared to later. But if we don't have a fully-fleshed-out idea for how to kill it, then I'm fine with waiting.
It's not actually that broken. Only ORC was fully broken, so all the other architectures (and non-ORC x86) have been fine. But given the method of fixing ORC vs wchan, it turns out we could further clean up the other architectures. But yes, no real plan to remove it, but the current series fixes things pretty well. :)
-Kees
-- Kees Cook