> If this is a problem with my patch isn't it a problem for the current
> implementation as well? 2.0.0 still calls kerneld_route.
>
> Or is it a problem with *where* kerneld is being called?
It is problem of current implementation, your patch just
revealed that kerneld_route sleeps. ip_rt_route is called
from many places, and it was assumed that it does not sleep.
It is my fault, I did not notice it (fib_lookup did not wait for
result of kerneld_route, and I imagined that it calls kerneld_send
with KERNELD_NOWAIT not looking into kerneld.h)
The second problem is that kerneld_send is intrinsically not
reenterant, so that it is not allowed to be called from interrupt.
The probability of crash is pretty small, but not zero...
Alexey Kuznetsov.