Linux-Kernel: Warum ruft dieser Aufruf zum Absturz von kstrtol auf?

Ich lerne Kernelprogrammierung und rufe einfach kstrtol auf, mit dem ich einen String in eine Zahl umwandle. Jedes Mal, wenn ich dieses Modul kompiliere und es mit "insmod" in den Kernel einbaue, erhalte ich "BUG: Kernel-Paging-Anforderung unter f862b026 kann nicht verarbeitet werden" und dann einen Register- und Stapelspeicherauszug.

Ich folge der Definition von hier:https://www.kernel.org/doc/htmldocs/kernel-api/API-kstrtol.html. Es scheint ein ganz einfacher Anruf zu sein. Was mache ich hier falsch?

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage