[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Transfer von Daten nach Plattenwechsel



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


Reply to: