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);