<br><br>2012/10/19 Arun KS <<a href="mailto:getarunks@gmail.com">getarunks@gmail.com</a>><br>><br>> Hi Fan,<br>><br>> On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <<a href="mailto:lljyangfan@gmail.com">lljyangfan@gmail.com</a>> wrote:<br>
>><br>>> HI ALL:<br>>> I just run a module on my machine, but it can't work. When the module run the kernel will painc. I don't know where is wrong. This is my code:<br>>><br>>> 1 #include<linux/module.h><br>
>> 2 #include<linux/kernel.h><br>>> 3 #include<linux/init.h><br>>> 4 #include<linux/sched.h><br>>> 5<br>>> 6 int input = 1;<br>>> 7 module_param (input, int, S_IRUGO);<br>
>> 8<br>>> 9 static int __init printvma_init (void)<br>>> 10 {<br>>> 11 struct vm_area_struct *p, *start;<br>>> 12 int i;<br>>> 13 struct task_struct *thread; <br>
>> 14<br>>> 15 thread = current;<br>>> 16<br>>> 17 while (1)<br>>> 18 {<br>>> 19 if (thread->pid == input)<br>>> 20 break;<br>>> 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks);<br>
>> 22 }<br>>> 23 p = thread->mm->mmap;<br>>> 24<br>>> 25 do{<br>>> 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\<br>>> 27 p->vm_end, p->vm_file->f_path.dentry->d_iname);<br>
>> 28 p = p->vm_next;<br>>> 29 }while (p != NULL);<br>>> 30<br>>> 31 printk ("vm_file address is:%d\tf_path address is:%d\<br>>> 32 \tname is:%s",& p->vm_file->f_path,\<br>
>> 33 p->vm_file->f_path.dentry->d_iname);<br>>> 34<br>>> 35 printk ("info from the kernel space:%s\n", thread->comm);<br>>> 36 return 0;<br>>> 37 }<br>
>> 38<br>>> 39 static void __exit printvma_exit (void)<br>>> 40 {<br>>> 41 printk ("the module will leave the kernel space..\n");<br>>> 42 }<br>>> 43<br>>> 44 module_init (printvma_init);<br>
>> 45 module_exit (printvma_exit);<br>>> 46 MODULE_LICENSE ("GPL"); <br>>><br>>><br>>> what's wrong?<br>><br>><br>> It would be good if you paste your crash log here.<br>
><br>> Thanks,<br>> Arun<br>>><br>>><br>>> thanks<br>>><br>>> _______________________________________________<br>>> Kernelnewbies mailing list<br>>> <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
>> <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>>><br>><br><div style="text-align:left">The module run in a virtual machine, I can't control the machine when it crashed, so I just got a picture when the kernel panic.<br>
<br><br><img src="data:image/png;base64,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" alt=""><br>
<br><br>Thanks<br>Fan<br></div>