Você não pode forçar a eliminação do código do kernel se não quiser ser morto. O código do kernel não pode ser eliminado em tempos arbitrários, porque pode estar no meio de acessar um periférico, ele pode conter um bloqueio, ele pode ter alocado alguns recursos que precisam ser liberados ... O código do Userland pode ser eliminado porque o kernel armazena todos esses recursos em nome do processo e os limpa se o processo morrer. Mas dentro do kernel, cada pedaço de código deve manipular sua própria limpeza.
Normalmente, o código do kernel verificará os sinais e encerrará o que está fazendo se receber um sinal. Mas você encontrou um bug do kernel. Nesse caso, você está sem sorte. Se o código está preso, está preso. Como o código travado está sendo executado no contexto da chamada de sistema de um processo, essa chamada de sistema nunca retornará (a menos que a situação dentro do kernel de alguma forma se corrija). O processo está no meio de uma chamada de sistema, então não pode ser morto. O sinal KILL é enfileirado, e se a chamada do sistema for retornada, o processo morreria imediatamente, mas se a chamada do sistema não retornasse, o processo estaria travado.