<br><br><div class="gmail_quote">2012/10/20 Rohan Puri <span dir="ltr">&lt;<a href="mailto:rohan.puri15@gmail.com" target="_blank">rohan.puri15@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Sat, Oct 20, 2012 at 7:35 AM, Fan Yang <span dir="ltr">&lt;<a href="mailto:lljyangfan@gmail.com" target="_blank">lljyangfan@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div><br><br><div class="gmail_quote">2012/10/19 Rohan Puri <span dir="ltr">&lt;<a href="mailto:rohan.puri15@gmail.com" target="_blank">rohan.puri15@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div><br><br><div class="gmail_quote">On Fri, Oct 19, 2012 at 7:38 PM, Anuz Pratap Singh Tomar <span dir="ltr">&lt;<a href="mailto:chambilkethakur@gmail.com" target="_blank">chambilkethakur@gmail.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><br><div class="gmail_quote"><div><div>On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <span dir="ltr">&lt;<a href="mailto:lljyangfan@gmail.com" target="_blank">lljyangfan@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div><div><br><br>2012/10/19 Arun KS &lt;<a href="mailto:getarunks@gmail.com" target="_blank">getarunks@gmail.com</a>&gt;<br>&gt;<br>&gt; Hi Fan,<br>&gt;<br>&gt; On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang &lt;<a href="mailto:lljyangfan@gmail.com" target="_blank">lljyangfan@gmail.com</a>&gt; wrote:<br>






&gt;&gt;<br>&gt;&gt; HI ALL:<br>&gt;&gt;     I just run a module on my machine, but it  can&#39;t work. When the module run the kernel will painc. I don&#39;t know where is wrong. This is my code:<br>&gt;&gt;<br>&gt;&gt;  1 #include&lt;linux/module.h&gt;<br>






&gt;&gt;   2 #include&lt;linux/kernel.h&gt;<br>&gt;&gt;   3 #include&lt;linux/init.h&gt;<br>&gt;&gt;   4 #include&lt;linux/sched.h&gt;<br>&gt;&gt;   5<br>&gt;&gt;   6 int input = 1;<br>&gt;&gt;   7 module_param (input, int, S_IRUGO);<br>






&gt;&gt;   8<br>&gt;&gt;   9 static int __init printvma_init (void)<br>&gt;&gt;  10 {<br>&gt;&gt;  11     struct vm_area_struct *p, *start;<br>&gt;&gt;  12     int i;<br>&gt;&gt;  13     struct task_struct *thread;                                                    <br>






&gt;&gt;  14<br>&gt;&gt;  15     thread = current;<br>&gt;&gt;  16<br>&gt;&gt;  17     while (1)<br>&gt;&gt;  18     {<br>&gt;&gt;  19         if (thread-&gt;pid == input)<br>&gt;&gt;  20             break;<br>&gt;&gt;  21         thread = list_entry (thread-&gt;tasks.next, struct task_struct, tasks);<br>






&gt;&gt;  22     }<br>&gt;&gt;  23     p = thread-&gt;mm-&gt;mmap;<br>&gt;&gt;  24<br>&gt;&gt;  25     do{<br>&gt;&gt;  26         printk (&quot;%lx\t%lx\t%s\n&quot;, p-&gt;vm_start,\<br>&gt;&gt;  27                 p-&gt;vm_end, p-&gt;vm_file-&gt;f_path.dentry-&gt;d_iname);<br>






&gt;&gt;  28         p = p-&gt;vm_next;<br>&gt;&gt;  29     }while (p != NULL);<br>&gt;&gt;  30<br>&gt;&gt;  31     printk (&quot;vm_file address is:%d\tf_path address is:%d\<br>&gt;&gt;  32             \tname is:%s&quot;,&amp; p-&gt;vm_file-&gt;f_path,\<br>






&gt;&gt;  33             p-&gt;vm_file-&gt;f_path.dentry-&gt;d_iname);<br>&gt;&gt;  34<br>&gt;&gt;  35     printk (&quot;info from the kernel space:%s\n&quot;, thread-&gt;comm);<br>&gt;&gt;  36     return 0;<br>&gt;&gt;  37 }<br>






&gt;&gt;  38<br>&gt;&gt;  39 static void __exit printvma_exit (void)<br>&gt;&gt;  40 {<br>&gt;&gt;  41     printk (&quot;the module will leave the kernel space..\n&quot;);<br>&gt;&gt;  42 }<br>&gt;&gt;  43<br>&gt;&gt;  44 module_init (printvma_init);<br>






&gt;&gt;  45 module_exit (printvma_exit);<br>&gt;&gt;  46 MODULE_LICENSE (&quot;GPL&quot;);      <br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; what&#39;s wrong?<br>&gt;<br>&gt;<br>&gt; It would be good if you paste your crash log here.<br>






&gt;<br>&gt; Thanks,<br>&gt; Arun<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; thanks<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Kernelnewbies mailing list<br>&gt;&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>






&gt;&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>&gt;&gt;<br>&gt;<br></div></div><div style="text-align:left">





The module run in a virtual machine, I can&#39;t control the machine when it crashed, so I just got a picture when the kernel panic.<br>
<br></div></blockquote></div></div><div>you can run the module under uml, it wont be hard to copy  the crash log from terminal in uml. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div style="text-align:left"><br><img alt=""><br>
<br><br>Thanks<span><font color="#888888"><br>Fan<br></font></span></div><div>
<br>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></div></blockquote></div><br>
<br>_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br></blockquote></div><br></div></div>Hi Fan,<br><br>See the issue is thread-&gt;mm is NULL in your case. The simplest way to test this in your case is by the following : -<br><br>Put these statements after the while loop <br>


<br>if(!thread-&gt;mm) { printk(&quot;thread-&gt;mm is NULL\n&quot;); return 0; }<br>
<br>After this compile and load the module, you will see this statement printed in dmesg command output.<br><br><br>General programming practice : -<br><br>Always make checks for NULL pointer in your code, before dereferencing your code.<span><font color="#888888"><br>



<br>- Rohan <br>
</font></span></blockquote></div></div></div>Hi Rohan,<div><br></div><div>I don&#39;t think the thread-&gt;mm is NULL, because when I print the several vm_area_struct of the thread-&gt;mm it work well, but if put the code in the loop to print all the vma, it crashed.</div>


<div><br></div><div>Thinks</div><span><font color="#888888"><div>Fan</div>
</font></span></blockquote></div><br></div></div>Hi Fan,<br><br>Yes Fan, you are right, its NOT thread-&gt;mm NULL, but p-&gt;vm_file is NULL, to verify put the following as the fist statement in do {}while; loop<br><br>
if(!p-&gt;vm_file) { printk(&quot;p-&gt;vm_file NULL\n&quot;); return 0;}<br>
<br><br>This message gets printed to kernel log buffer.<br><br>Also, you still need to NULL check pointer before dereferencing them. Let me know, whats the result on your system.<span class="HOEnZb"><font color="#888888"><br>
<br>- Rohan<br>
</font></span></blockquote></div>Hi Roban:<div>You are right, the p-&gt;vm_file is NULL cause the panic. But it&#39;s crazy to lead to the kernel panic for I just printk the NULL.</div><div><br></div><div>Ok, I know where I am wrong, thank you for your help, thank you everyone, thank you very much !</div>
<div><br></div><div>Fan</div>