where are the bug ?
HI ALL: 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: 1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread; 14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL"); what's wrong? thanks
Hi Fan, On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread; 14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here. Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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. Thanks Fan
2012/10/19 Fan Yang <lljyangfan@gmail.com>
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
Thanks
Fan
this is the pictiure: [image: 照片]
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash log
from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Fri, Oct 19, 2012 at 7:38 PM, Anuz Pratap Singh Tomar < chambilkethakur@gmail.com> wrote:
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash log
from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Fan, See the issue is thread->mm is NULL in your case. The simplest way to test this in your case is by the following : - Put these statements after the while loop if(!thread->mm) { printk("thread->mm is NULL\n"); return 0; } After this compile and load the module, you will see this statement printed in dmesg command output. General programming practice : - Always make checks for NULL pointer in your code, before dereferencing your code. - Rohan
2012/10/19 Rohan Puri <rohan.puri15@gmail.com>
On Fri, Oct 19, 2012 at 7:38 PM, Anuz Pratap Singh Tomar < chambilkethakur@gmail.com> wrote:
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com>
wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash log
from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Fan,
See the issue is thread->mm is NULL in your case. The simplest way to test this in your case is by the following : -
Put these statements after the while loop
if(!thread->mm) { printk("thread->mm is NULL\n"); return 0; }
After this compile and load the module, you will see this statement printed in dmesg command output.
General programming practice : -
Always make checks for NULL pointer in your code, before dereferencing your code.
- Rohan
Hi Rohan, I don't think the thread->mm is NULL, because when I print the several vm_area_struct of the thread->mm it work well, but if put the code in the loop to print all the vma, it crashed. Thinks Fan
On Sat, Oct 20, 2012 at 7:35 AM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Rohan Puri <rohan.puri15@gmail.com>
On Fri, Oct 19, 2012 at 7:38 PM, Anuz Pratap Singh Tomar < chambilkethakur@gmail.com> wrote:
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com>
wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash
log from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Fan,
See the issue is thread->mm is NULL in your case. The simplest way to test this in your case is by the following : -
Put these statements after the while loop
if(!thread->mm) { printk("thread->mm is NULL\n"); return 0; }
After this compile and load the module, you will see this statement printed in dmesg command output.
General programming practice : -
Always make checks for NULL pointer in your code, before dereferencing your code.
- Rohan
Hi Rohan,
I don't think the thread->mm is NULL, because when I print the several vm_area_struct of the thread->mm it work well, but if put the code in the loop to print all the vma, it crashed.
Thinks Fan
Hi Fan, Yes Fan, you are right, its NOT thread->mm NULL, but p->vm_file is NULL, to verify put the following as the fist statement in do {}while; loop if(!p->vm_file) { printk("p->vm_file NULL\n"); return 0;} This message gets printed to kernel log buffer. Also, you still need to NULL check pointer before dereferencing them. Let me know, whats the result on your system. - Rohan
2012/10/20 Rohan Puri <rohan.puri15@gmail.com>
On Sat, Oct 20, 2012 at 7:35 AM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Rohan Puri <rohan.puri15@gmail.com>
On Fri, Oct 19, 2012 at 7:38 PM, Anuz Pratap Singh Tomar < chambilkethakur@gmail.com> wrote:
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com>
wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash
log from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Fan,
See the issue is thread->mm is NULL in your case. The simplest way to test this in your case is by the following : -
Put these statements after the while loop
if(!thread->mm) { printk("thread->mm is NULL\n"); return 0; }
After this compile and load the module, you will see this statement printed in dmesg command output.
General programming practice : -
Always make checks for NULL pointer in your code, before dereferencing your code.
- Rohan
Hi Rohan,
I don't think the thread->mm is NULL, because when I print the several vm_area_struct of the thread->mm it work well, but if put the code in the loop to print all the vma, it crashed.
Thinks Fan
Hi Fan,
Yes Fan, you are right, its NOT thread->mm NULL, but p->vm_file is NULL, to verify put the following as the fist statement in do {}while; loop
if(!p->vm_file) { printk("p->vm_file NULL\n"); return 0;}
This message gets printed to kernel log buffer.
Also, you still need to NULL check pointer before dereferencing them. Let me know, whats the result on your system.
- Rohan
Hi Roban: You are right, the p->vm_file is NULL cause the panic. But it's crazy to lead to the kernel panic for I just printk the NULL. Ok, I know where I am wrong, thank you for your help, thank you everyone, thank you very much ! Fan
2012/10/19 Anuz Pratap Singh Tomar <chambilkethakur@gmail.com>
On Fri, Oct 19, 2012 at 2:46 PM, Fan Yang <lljyangfan@gmail.com> wrote:
2012/10/19 Arun KS <getarunks@gmail.com>
Hi Fan,
On Fri, Oct 19, 2012 at 6:50 PM, Fan Yang <lljyangfan@gmail.com> wrote:
HI ALL: 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:
1 #include<linux/module.h> 2 #include<linux/kernel.h> 3 #include<linux/init.h> 4 #include<linux/sched.h> 5 6 int input = 1; 7 module_param (input, int, S_IRUGO); 8 9 static int __init printvma_init (void) 10 { 11 struct vm_area_struct *p, *start; 12 int i; 13 struct task_struct *thread;
14 15 thread = current; 16 17 while (1) 18 { 19 if (thread->pid == input) 20 break; 21 thread = list_entry (thread->tasks.next, struct task_struct, tasks); 22 } 23 p = thread->mm->mmap; 24 25 do{ 26 printk ("%lx\t%lx\t%s\n", p->vm_start,\ 27 p->vm_end, p->vm_file->f_path.dentry->d_iname); 28 p = p->vm_next; 29 }while (p != NULL); 30 31 printk ("vm_file address is:%d\tf_path address is:%d\ 32 \tname is:%s",& p->vm_file->f_path,\ 33 p->vm_file->f_path.dentry->d_iname); 34 35 printk ("info from the kernel space:%s\n", thread->comm); 36 return 0; 37 } 38 39 static void __exit printvma_exit (void) 40 { 41 printk ("the module will leave the kernel space..\n"); 42 } 43 44 module_init (printvma_init); 45 module_exit (printvma_exit); 46 MODULE_LICENSE ("GPL");
what's wrong?
It would be good if you paste your crash log here.
Thanks, Arun
thanks
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
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.
you can run the module under uml, it wont be hard to copy the crash log
from terminal in uml.
Thanks Fan
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
what's the uml? and how can I use it?
On Sat, Oct 20, 2012 at 3:50 AM, Fan Yang <lljyangfan@gmail.com> wrote:
what's the uml? and how can I use it?
UML (UserModeLinux) is the user mode port of Linux. IOW you can run a Linux kernel as normal user space process on Linux. It was one of the very first vm solutions for Linux. Pick a current kernel source and run: $ make defconfig ARCH=um $ make linux ARCH=um it will produce an ELF binary called "linux", run it. It's your kernel. E.g. ./linux rootfstype=hostfs init=/bin/sh See: http://uml.devloop.org.uk/howto.html HTH -- Thanks, //richard
participants (5)
-
Anuz Pratap Singh Tomar -
Arun KS -
Fan Yang -
richard -rw- weinberger -
Rohan Puri