At the moment of forking a new process do_fork() creates a new stack for the task by using alloc_thread_info_node(): struct page *page = alloc_pages_node(node, THREADINFO_GFP, THREAD_SIZE_ORDER); On 9/13/12, Rajat Sharma <fs.rajat@xxxxxxxxx> wrote: > "The kernel stack is part of task_struct of the running process" > > Please double check that, its not part of task_struct, rather on some > architectures, kernel stack is extended by a thread_info structure at > the end which keeps a link to task_struct of the process. > > -Rajat > > On Thu, Sep 13, 2012 at 1:59 PM, Arun KS <getarunks@xxxxxxxxx> wrote: >> Hello Shubham, >> >> On Thu, Sep 13, 2012 at 12:15 PM, shubham sharma <shubham20006@xxxxxxxxx> >> wrote: >>> >>> Hi, >>> >>> As far as i know, the size of stack allocated in the kernel space is >>> 8Kb for each process. But in case i use more than 8Kb of memory from >>> the stack then what will happen? I think that in that case the system >>> would crash because i am accessing an illegal memory area. I wrote >>> kernel module in which i defined an integer array whose size was 8000. >>> But still it did not crash my system. Why? >>> >>> The module i wrote was as follows: >>> >>> #include <linux/kernel.h> >>> #include <linux/module.h> >>> >>> int __init init_my_module(void) >>> { >>> int arr[8000]; >>> printk("%s:%d\tmodule initilized\n", __func__, __LINE__); >>> arr[1] = 1; >>> arr[4000] = 1; >>> arr[7999] = 1; >> >> Instead do a memset. >> memset(arr, 0, 8192); >> >> If you do this the current calling process thread_info will be set to >> zero. >> This should cause a crash. >> >> Thanks, >> Arun >> >> >>> >>> printk("%s:%d\tarr[1]:%d, arr[4000]:%d, arr[7999]:%d\n", >>> __func__, >>> __LINE__, arr[1], arr[4000], arr[7999]); >>> return 0; >>> } >>> >>> void __exit cleanup_my_module(void) >>> { >>> printk("exiting\n"); >>> return; >>> } >>> >>> module_init(init_my_module); >>> module_exit(cleanup_my_module); >>> >>> MODULE_LICENSE("GPL"); >>> >>> _______________________________________________ >>> Kernelnewbies mailing list >>> Kernelnewbies@xxxxxxxxxxxxxxxxx >>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > -- Regards, Denis _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies