Kernel de Linux: ¿por qué este llamado a kstrtol se bloquea?

Estoy aprendiendo la programación del kernel y tengo una llamada simple a kstrtol que estoy usando para convertir una cadena en un número. Sin embargo, cada vez que compilo este módulo y uso insmod para colocarlo en el kernel, aparece "BUG: no puedo manejar la solicitud de paginación del kernel en f862b026" y luego un registro y volcado de pila.

Estoy siguiendo la definición desde aquí:https://www.kernel.org/doc/htmldocs/kernel-api/API-kstrtol.html. Parece una llamada muy simple. ¿Qué estoy haciendo mal aquí?

#include <linux/kernel.h>

static int __init convert(void)
{
    long myLong;
    char *myNumber = "342";
    myNumber[2] = '\0'; //Overwriting the '2', just so I know for sure I have a terminating '\0'

    if (kstrtol(myNumber, 10, &myLong) == 0)
    {
        printk("We have a number!\n");
    }
return 0;
}

static void __exit convert_exit(void)
{
    printk("Module unloaded\n");
}

module_init(convert);
module_exit(convert_exit); 

Respuestas a la pregunta(1)

Su respuesta a la pregunta