Hi

I am calling kmalloc() at the starting of open function in my driver for a PCI 
device. Here it is used to allocate the private structure. When I run 
application over this driver, it goes successful for the first time. But when I 
run this for second time, the kmalloc() causes kernel panic with the following 
messages.
---------------------------------------------------------------------------------
NMI Watchdog detected LOCKUP, CPU=0, registers:
CPU 0
Modules linked in: ccp(U) md5 ipv6 parport_pc lp parport autofs4 i2c_dev 
i2c_core nfs lockd nfs_acld
Pid: 7035, comm: dat_data_check_ Tainted: PF     2.6.9-42.ELsmp
RIP: 0010:[<ffffffff8016187e>] <ffffffff8016187e>{cache_alloc_refill+206}
RSP: 0018:00000100261e9d88  EFLAGS: 00000012
RAX: 0000000000000004 RBX: 0000000000000003 RCX: 0000010137210400
RDX: 00000100bff6fcc8 RSI: 0000000000000220 RDI: 00000100bff6fd28
RBP: 00000100bff5a0c0 R08: ffffffff803e1ee8 R09: 00000101340c45c0
R10: 0000000100000000 R11: 0000ffff803fcc00 R12: 00000100bff6fcc8
R13: 00000100bff6fc80 R14: 0000000000000220 R15: 0000000000000002
FS:  0000002a956843e0(0000) GS:ffffffff804e5080(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000521000 CR3: 0000000000101000 C 00000000000006e0
Process dat_data_check_ (pid: 7035, threadinfo 00000100261e8000, task 
00000101358e8030)
Stack: 0000000000000220 0000000000000220 00000100bff6fc80 00000100aa7a0000
       0000000000000000 00000100261e9e20 0000000000000002 ffffffff8016174f
       0000000000000246 00000101340c45c0

Call Trace:<ffffffff8016174f>{kmem_cache_alloc+90} 
<ffffffffa0252057>{:device:device_open_nic+94}
       <ffffffffa025009a>{:device:device_open+46} 
<ffffffff80181599>{chrdev_open+412}
       <ffffffff801789c2>{__dentry_open+201} <ffffffff80178b88>{filp_open+106}
       <ffffffff801ece75>{strncpy_from_user+74} <ffffffff80178d77>{sys_open+57}
       <ffffffff8011026a>{system_call+126}

Code: 39 41 20 eb 3f ff cb 83 fb ff 74 3a 0f b7 41 24 8b 55 00 41
Kernel panic - not syncing: nmi watchdog
---------------------------------------------------------------------------------

I kept checking memory usage. There was lots of memory available for this 
kmalloc to be successful. And kmalloc() is also the first step in open 
function. However there is memory allocation afterwards at a few places using 
kmalloc and __get_free_pages.
I am calling kmalloc with the flag GFP_KERNEL. I have also tried with 
GFP_ATOMIC, the result is same.

Could you please tell me what malfunction the first run is doing? Is it doing 
some memory corruption?

Regards,
Jasjit Singh



      __________________________________________________________
Sent from Yahoo! Mail.
A Smarter Email http://uk.docs.yahoo.com/nowyoucan.html

Reply via email to