Re: kthread_stop insanity (Re: [[DEBUG] force] 2642458962: BUG: unable to handle kernel paging request at ffffc90000997f18)
From: Andy Lutomirski
Date: Tue Jun 28 2016 - 17:21:54 EST
On Tue, Jun 28, 2016 at 2:14 PM, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Jun 28, 2016 at 1:54 PM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>>
>> But I might need to that anyway for procfs to read the the stack,
>> right? Do you see another way to handle that case?
>
> I think the other way to handle the kernel stack reading would be to
> simply make the stack freeing be RCU-delayed, and use the RCU list
> itself as the stack cache.
>
> That way reading the stack is ok in a RCU context, although you might
> end up reading a stack that has been re-used.
>
> Would that work for people?
I don't think I understand your proposal. We already delay freeing
the stack for RCU. If we continue doing it, then, under workloads
like my benchmark, the RCU list gets quite large. Or are you
suggesting that we actually make a list somewhere of stacks that are
nominally unused but are still around for RCU's benefit and then
scavenge from that lest when we need a new stack? If so, that seems
considerably more complicated than just adding a reference count.
Also, my inner security nerd says that letting /proc potentially read
the wrong process's stack is bad news.