From 49946e7329fa38d79aed1a9ef4a64c320ada305d Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier.adi@gmail.com>
Date: Wed, 7 Jan 2009 23:14:38 +0800
Subject: [PATCH] Blackfin arch: check pointers in safe_dma_memcpy

Check pointers in safe_dma_memcpy as this is the entry point for user-space code

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
---
 arch/blackfin/kernel/bfin_dma_5xx.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 36f78c1648b90..bafb6aea0bc56 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -596,11 +596,18 @@ void *dma_memcpy(void *dest, const void *src, size_t size)
 }
 EXPORT_SYMBOL(dma_memcpy);
 
+/**
+ *	safe_dma_memcpy - DMA memcpy w/argument checking
+ *
+ * Verify arguments are safe before heading to dma_memcpy().
+ */
 void *safe_dma_memcpy(void *dest, const void *src, size_t size)
 {
-	void *addr;
-	addr = dma_memcpy(dest, src, size);
-	return addr;
+	if (!access_ok(VERIFY_WRITE, dst, size))
+		return NULL;
+	if (!access_ok(VERIFY_READ, src, size))
+		return NULL;
+	return dma_memcpy(dst, src, size);
 }
 EXPORT_SYMBOL(safe_dma_memcpy);
 
-- 
2.30.2