--- /dev/null
+From stable-bounces@linux.kernel.org Thu Jun 29 13:14:55 2006
+Date: Thu, 29 Jun 2006 20:54:26 +0200
+From: Andi Kleen <ak@suse.de>
+To: stable@kernel.org
+Cc: axboe@suse.de
+Subject: BLOCK: Fix bounce limit address check
+
+
+This fixes some OOMs on 64bit systems with <4GB of RAM when accessing
+the cdrom.
+
+Do a safer check for when to enable DMA. Currently we enable ISA DMA
+for cases that do not need it, resulting in OOM conditions when ZONE_DMA
+runs out of space.
+
+Signed-off-by: Andi Kleen <ak@suse.de>
+Signed-off-by: Jens Axboe <axboe@suse.de>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ block/ll_rw_blk.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.17.2.orig/block/ll_rw_blk.c
++++ linux-2.6.17.2/block/ll_rw_blk.c
+@@ -638,7 +638,7 @@ void blk_queue_bounce_limit(request_queu
+ /* Assume anything <= 4GB can be handled by IOMMU.
+ Actually some IOMMUs can handle everything, but I don't
+ know of a way to test this here. */
+- if (bounce_pfn < (0xffffffff>>PAGE_SHIFT))
++ if (bounce_pfn < (min_t(u64,0xffffffff,BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
+ dma = 1;
+ q->bounce_pfn = max_low_pfn;
+ #else