Re: BUG() at mm/filemap.c:550

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

 



On Tue, 2010-09-28 at 11:27 -0400, J. Bruce Fields wrote:
> I'm getting this on the latest trond/linux-next.
> 
> Looks like it's probably reproduceable just with basic connectathon
> tests over any nfs version.
> 
> --b.
> 
> ------------[ cut here ]------------
> kernel BUG at mm/filemap.c:550!
> invalid opcode: 0000 [#1] PREEMPT 
> last sysfs file: /sys/devices/virtio-pci/virtio2/net/eth0/broadcast
> CPU 0 
> Modules linked in: [last unloaded: scsi_wait_scan]
> 
> Pid: 4342, comm: rm Not tainted 2.6.36-rc5-00191-g250bc65 #454 /Bochs
> RIP: 0010:[<ffffffff810abd12>]  [<ffffffff810abd12>] unlock_page+0x32/0x40
> RSP: 0018:ffff88001e735d98  EFLAGS: 00010246
> RAX: ffff88001d52ea00 RBX: ffffea00005a1660 RCX: 0000000000000000
> RDX: 0000000000000002 RSI: ffff88001e01ef4a RDI: ffffea00005a1660
> RBP: ffff88001e735da8 R08: ffffffff82606d70 R09: 0000000000000000
> R10: 0000000000000246 R11: 000000000000015a R12: 0000000000000001
> R13: ffff88001d596d28 R14: ffff88001e735e58 R15: 0000000000000001
> FS:  00007f79de748700(0000) GS:ffffffff81e1c000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 00007f79de726008 CR3: 000000001fbb1000 CR4: 00000000000006f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process rm (pid: 4342, threadinfo ffff88001e734000, task ffff88001e8fa050)
> Stack:
>  ffff88001e735db8 ffff88001e735e58 ffff88001e735dc8 ffffffff8121b42a
> <0> ffff88001e735e58 ffff880019bd4000 ffff88001e735e28 ffffffff8121bd41
> <0> ffff88001e735df8 0000000000000000 ffffffff810f4200 ffff88001e735f38
> Call Trace:
>  [<ffffffff8121b42a>] cache_page_release+0x1a/0x40
>  [<ffffffff8121bd41>] nfs_do_filldir+0xf1/0x130
>  [<ffffffff810f4200>] ? filldir+0x0/0xe0
>  [<ffffffff810f4200>] ? filldir+0x0/0xe0
>  [<ffffffff8121bfa5>] nfs_readdir+0x225/0x460
>  [<ffffffff812405d0>] ? nfs4_decode_dirent+0x0/0x100
>  [<ffffffff810f4200>] ? filldir+0x0/0xe0
>  [<ffffffff810f4480>] vfs_readdir+0xc0/0xe0
>  [<ffffffff810f4608>] sys_getdents+0x88/0xf0
>  [<ffffffff810024d8>] system_call_fastpath+0x16/0x1b
> Code: ec 08 0f 1f 44 00 00 f6 07 01 48 89 fb 74 1c 80 27 fe e8 a2 e7 ff ff 48 89 de 31 d2 48 89 c7 e8 65 da fa ff 48 83 c4 08 5b c9 c3 <0f> 0b eb fe 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 48 83 ec 
> RIP  [<ffffffff810abd12>] unlock_page+0x32/0x40
>  RSP <ffff88001e735d98>
> ---[ end trace 9808e83fed8c72ce ]---

Yes. That unlock_page() in cache_page_release() appears to be incorrect,
since the page is always unlocked after the call to read_cache_page().
I can't see that we really need to lock the page there. Nothing can
change the contents while we hold the dir->i_mutex.

I've therefore pushed out a revised version of that branch with the
unlock_page() removed.

Cheers
  Trond
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux