--- /dev/null
+From 0fbecd400dd0a82d465b3086f209681e8c54cb0f Mon Sep 17 00:00:00 2001
+From: Francisco Jerez <currojerez@riseup.net>
+Date: Tue, 21 Sep 2010 02:15:15 +0200
+Subject: drm/ttm: Clear the ghost cpu_writers flag on ttm_buffer_object_transfer.
+
+From: Francisco Jerez <currojerez@riseup.net>
+
+commit 0fbecd400dd0a82d465b3086f209681e8c54cb0f upstream.
+
+It makes sense for a BO to move after a process has requested
+exclusive RW access on it (e.g. because the BO used to be located in
+unmappable VRAM and we intercepted the CPU access from the fault
+handler).
+
+If we let the ghost object inherit cpu_writers from the original
+object, ttm_bo_release_list() will raise a kernel BUG when the ghost
+object is destroyed. This can be reproduced with the nouveau driver on
+nv5x.
+
+Reported-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Reviewed-by: Jerome Glisse <jglisse@redhat.com>
+Tested-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Signed-off-by: Francisco Jerez <currojerez@riseup.net>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/ttm/ttm_bo_util.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
++++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
+@@ -326,6 +326,7 @@ static int ttm_buffer_object_transfer(st
+ INIT_LIST_HEAD(&fbo->lru);
+ INIT_LIST_HEAD(&fbo->swap);
+ fbo->vm_node = NULL;
++ atomic_set(&fbo->cpu_writers, 0);
+
+ fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj);
+ if (fbo->mem.mm_node)