Re: kernel BUG at lib/radix-tree.c:473!

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Ian Campbell
Date: Monday, August 18, 2008 - 12:54 am

On Mon, 2008-08-18 at 11:32 +1000, Nick Piggin wrote:

fbdefio: add set_page_dirty handler to deferred IO FB

Fixes kernel BUG at lib/radix-tree.c:473.

Previously the handler was incidentally provided by tmpfs but this was
removed with:

  commit 14fcc23fdc78e9d32372553ccf21758a9bd56fa1
  Author: Hugh Dickins <hugh@veritas.com>
  Date:   Mon Jul 28 15:46:19 2008 -0700

    tmpfs: fix kernel BUG in shmem_delete_inode

relying on this behaviour was incorrect in any case and the BUG
also appeared when the device node was on an ext3 filesystem.

Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Cc: Jaya Kumar <jayakumar.lkml@gmail.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Johannes Weiner <hannes@saeurebad.de>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Kel Modderman <kel@otaku42.de>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 drivers/video/fb_defio.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c
index 59df132..214bb7c 100644
--- a/drivers/video/fb_defio.c
+++ b/drivers/video/fb_defio.c
@@ -114,11 +114,23 @@ static struct vm_operations_struct
fb_deferred_io_vm_ops =3D {
 	.page_mkwrite	=3D fb_deferred_io_mkwrite,
 };
=20
+static int fb_deferred_io_set_page_dirty(struct page *page)
+{
+	if (!PageDirty(page))
+		SetPageDirty(page);
+	return 0;
+}
+
+static const struct address_space_operations fb_deferred_io_aops =3D {
+	.set_page_dirty =3D fb_deferred_io_set_page_dirty,
+};
+
 static int fb_deferred_io_mmap(struct fb_info *info, struct
vm_area_struct *vma)
 {
 	vma->vm_ops =3D &fb_deferred_io_vm_ops;
 	vma->vm_flags |=3D ( VM_IO | VM_RESERVED | VM_DONTEXPAND );
 	vma->vm_private_data =3D info;
+	vma->vm_file->f_mapping->a_ops =3D &fb_deferred_io_aops;
 	return 0;
 }
=20
--=20
1.5.6.3

--=20
Ian Campbell

How many Unix hacks does it take to change a light bulb?
   Let's see, can you use a shell script for that or does it need a C progr=
am?
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
kernel BUG at lib/radix-tree.c:473!, Ian Campbell, (Thu Aug 14, 12:02 am)
Re: kernel BUG at lib/radix-tree.c:473!, Peter Zijlstra, (Thu Aug 14, 3:41 am)
Re: kernel BUG at lib/radix-tree.c:473!, Hugh Dickins, (Thu Aug 14, 6:06 am)
Re: kernel BUG at lib/radix-tree.c:473!, Ian Campbell, (Thu Aug 14, 7:56 am)
Re: kernel BUG at lib/radix-tree.c:473!, Jeremy Fitzhardinge, (Thu Aug 14, 10:38 am)
Re: kernel BUG at lib/radix-tree.c:473!, Hugh Dickins, (Thu Aug 14, 10:42 am)
Re: kernel BUG at lib/radix-tree.c:473!, Jeremy Fitzhardinge, (Thu Aug 14, 12:33 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Hugh Dickins, (Thu Aug 14, 2:03 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Jeremy Fitzhardinge, (Thu Aug 14, 3:04 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Markus Armbruster, (Thu Aug 14, 3:48 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Johannes Weiner, (Thu Aug 14, 4:13 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Hugh Dickins, (Thu Aug 14, 5:00 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Jaya Kumar, (Sun Aug 17, 5:09 am)
Re: kernel BUG at lib/radix-tree.c:473!, zhang wenjie, (Sun Aug 17, 7:00 am)
Re: kernel BUG at lib/radix-tree.c:473!, Ian Campbell, (Sun Aug 17, 9:19 am)
Re: kernel BUG at lib/radix-tree.c:473!, Nick Piggin, (Sun Aug 17, 6:32 pm)
Re: kernel BUG at lib/radix-tree.c:473!, Ian Campbell, (Mon Aug 18, 12:54 am)
Re: kernel BUG at lib/radix-tree.c:473!, Peter Zijlstra, (Mon Aug 18, 1:04 am)
Re: kernel BUG at lib/radix-tree.c:473!, Nick Piggin, (Mon Aug 18, 1:05 am)
Re: kernel BUG at lib/radix-tree.c:473!, Jaya Kumar, (Mon Aug 18, 1:22 am)