Как говорит Базиле, kill() - это системный вызов пользовательского пространства, поэтому вы не можете использовать его из модуля ядра. Это грубый способ выполнить то, что вы пытаетесь сделать в любом случае. Если у вас нет причины использовать emergency_restart() над kernel_restart(), я бы воспользовался последним. Варианты у вас есть в reboot.h.
BTW, это открывает отверстие безопасности в вашей системе. Поскольку драйвер интерпретирует пакет данных, чтобы определить, пришло ли время перезагрузки, ОС не может определить, имеет ли этот источник полномочия для выполнения такого действия в вашей системе. Возможно, вам будет лучше с демоном пространства пользователя, который запускается с соответствующими разрешениями для перезагрузки компьютера и может действовать как агент аутентификации и агент перезагрузки, а не делать это в вашем драйвере.
Вы не можете использовать системные вызовы пользовательской земли (например, 'kill') изнутри драйвера ядра. –