Bug 6641
Summary: | BUG: unable to handle kernel paging request at virtual address feededed | ||
---|---|---|---|
Product: | File System | Reporter: | Tomasz Torcz (zdzichu) |
Component: | ReiserFS | Assignee: | ReiseFS developers team (reiserfs-devel) |
Status: | REJECTED UNREPRODUCIBLE | ||
Severity: | normal | ||
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | v2.6.17-rc5 | Subsystem: | |
Regression: | --- | Bisected commit-id: |
Description
Tomasz Torcz
2006-06-04 09:54:36 UTC
Analysis by Chuck Ebbert: #v+ Oops happened here: static struct dentry * __d_find_alias(struct inode *inode, int want_discon) { struct list_head *head, *next, *tmp; struct dentry *alias, *discon_alias=NULL; head = &inode->i_dentry; next = inode->i_dentry.next; while (next != head) { tmp = next; ====> next = tmp->next; prefetch(next); tmp contained 0xfeededed, which was an invalid kernel address. So while walking the dentry list for the inode, an invalid next pointer was found, and it wasn't the very first one, i.e. it wasn't from the head (if it were, then eax and ebp would be identical.) want_discon (arg 2) was 1 [...] f: 55 push %ebp 10: 89 c5 mov %eax,%ebp 12: 57 push %edi 13: 56 push %esi 14: 31 f6 xor %esi,%esi 16: 53 push %ebx 17: 51 push %ecx 18: 89 14 24 mov %edx,(%esp) 1b: 8b 48 18 mov 0x18(%eax),%ecx 1e: 8d 50 18 lea 0x18(%eax),%edx 21: 39 d1 cmp %edx,%ecx 23: 0f 84 80 00 00 00 je a9 <_EIP+0xa9> 29: 89 cb mov %ecx,%ebx 00000000 <_EIP>: 0: 8b 09 mov (%ecx),%ecx <===== 2: 0f 18 01 prefetchnta (%ecx) 5: 90 nop 6: 0f b7 45 28 movzwl 0x28(%ebp),%eax a: 8d 7b c4 lea 0xffffffc4(%ebx),%edi d: 25 00 f0 00 00 and $0xf000,%eax #v- |