De um modo geral (eu não sei como o kernel linux implementa isso exatamente) Se qualquer iterrupt for acionada, qualquer código que é executado é interrompido, todos os registradores são salvos e a CPU executa a rotina de serviço de interrupção que manipula as interrupções. Depois, os registros são restaurados e a execução do código continua.
A única coisa que você poderia fazer para evitar isso é desabilitar as interrupções, o que geralmente é feito em microcontroladores para lidar com operações atômicas. Normalmente, a primeira coisa que a rotina de serviço de interrupção faz é desabilitar as interrupções (portanto, ela não pode ser interrompida) e, depois de executar suas tarefas, a última coisa que faz é reativar as interrupções.
Novamente, não estou familiarizado com a implementação exata das rotinas de serviço de interrupção no kernel do linux, mas esperaria que funcionassem da mesma maneira.
Na medida em que o modo muda de usuário para o modo kernel na arquitetura x86, acho que está acontecendo independentemente disso. Sua salvar para assumir que o ISR é executado no modo kernel para que a CPU tenha que mudar para ele. Se já estiver no modo kernel, basta salvar os registradores e pular para o ISR. Depois disso, ele retoma o código que foi executado antes da interrupção no modo em que o código foi executado.