On Wed, Jan 05, 2005 at 05:18:53PM +0100, Jürgen Leibner wrote: > Unable to handle kernel NULL pointer dereference at virtual address 00000012 > c0124ec3 > *pde = 00000000 > Oops: 0000 > CPU: 0 > EIP: 0010:[<c0124ec3>] Not tainted > Using defaults from ksymoops -t elf32-i386 -a i386 > EFLAGS: 00010206 > eax: d1e9fa74 ebx: 0000000a ecx: c106149c edx: 0000011d > esi: 0000011d edi: d1e9fa74 ebp: c106149c esp: ce781ef0 > ds: 0018 es: 0018 ss: 0018 > Process smbd (pid: 885, stackpage=ce781000) > Stack: 00000000 0000011d fffffff4 4041d04c c012722e d1e9fa74 0000011d d3ba9d4c > 00000002 d3ba9d4c 00000000 00000000 00001000 00000000 d1e9f9c0 d1e9fa74 > 00000000 0011d000 00000000 cc000000 d1e9f9c0 d1e9fa2c cbdf3c10 d1e9f9c0 > Call Trace: [<c012722e>] [<c01276e9>] [<d488e861>] [<c0131b1c>] [<c01081fb>] > Code: 39 7b 08 75 f4 39 73 0c 75 ef ff 43 14 0f ba 6b 18 00 19 c0 > > > >>EIP; c0124ec3 <__find_lock_page_helper+15/57> <===== > > >>eax; d1e9fa74 <_end+11bc9b94/1453d120> > >>ecx; c106149c <_end+d8b5bc/1453d120> > >>edi; d1e9fa74 <_end+11bc9b94/1453d120> > >>ebp; c106149c <_end+d8b5bc/1453d120> > >>esp; ce781ef0 <_end+e4ac010/1453d120> > > Trace; c012722e <do_generic_file_write+182/3a4> > Trace; c01276e9 <generic_file_write+db/f4> > Trace; d488e861 <[ext3]ext3_file_write+1f/8a> > Trace; c0131b1c <sys_pwrite+ab/ff> > Trace; c01081fb <system_call+33/38> > > Code; c0124ec3 <__find_lock_page_helper+15/57> > 00000000 <_EIP>: > Code; c0124ec3 <__find_lock_page_helper+15/57> <===== > 0: 39 7b 08 cmp %edi,0x8(%ebx) <===== > Code; c0124ec6 <__find_lock_page_helper+18/57> > 3: 75 f4 jne fffffff9 <_EIP+0xfffffff9> c0124ebc <__find_lock_page_helper+e/57> > Code; c0124ec8 <__find_lock_page_helper+1a/57> > 5: 39 73 0c cmp %esi,0xc(%ebx) > Code; c0124ecb <__find_lock_page_helper+1d/57> > 8: 75 ef jne fffffff9 <_EIP+0xfffffff9> c0124ebc <__find_lock_page_helper+e/57> > Code; c0124ecd <__find_lock_page_helper+1f/57> > a: ff 43 14 incl 0x14(%ebx) > Code; c0124ed0 <__find_lock_page_helper+22/57> > d: 0f ba 6b 18 00 btsl $0x0,0x18(%ebx) > Code; c0124ed5 <__find_lock_page_helper+27/57> > 12: 19 c0 sbb %eax,%eax Das ist in wirklichkeit: mm/filemap.c:__find_lock_page_helper 1036 */ 1037 repeat: 1038 page = __find_page_nolock(mapping, offset, hash); 1039 if (page) { 1040 page_cache_get(page); 1041 if (TryLockPage(page)) { mm/filemap.c:__find_page_nolock 447 static inline struct page * __find_page_nolock(struct address_space *mapping, unsigned long offset, struct page *page 448 { 449 goto inside; 450 451 for (;;) { 452 page = page->next_hash; 453 inside: 454 if (!page) 455 goto not_found; 456 if (page->mapping != mapping) * OOPS * page == 0xa d.h. !page ist false damit macht der weiter page->mapping ist 0x8 sizeof(struct list_head) 0xa (ebx) + sizeof(struct list_head) = 0x12 -> siehe oops 457 continue; 458 if (page->index == offset) 459 break; 460 } 461 462 not_found: 463 return page; 464 } 465 Flo -- Florian Lohoff flo@rfc822.org +49-171-2280134 Heisenberg may have been here.
Attachment:
pgpr8JPHd7Y1f.pgp
Description: PGP signature