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