Patchwork [1/2] mtd: sh_flctl: Use memcpy() instead of using a loop

login
register
mail settings
Submitter Bastian Hecht
Date July 5, 2012, 10:41 a.m.
Message ID <1341484862-24033-1-git-send-email-hechtb@gmail.com>
Download mbox | patch
Permalink /patch/169122/
State Accepted
Commit d76236f30f1280f9345bb266a161e3ba60518c83
Headers show

Comments

Bastian Hecht - July 5, 2012, 10:41 a.m.
Elemets have been copied "manually" in a loop. Better use memcpy().

Signed-off-by: Bastian Hecht <hechtb@gmail.com>
---
 drivers/mtd/nand/sh_flctl.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
Simon Horman - July 6, 2012, 12:10 a.m.
On Thu, Jul 05, 2012 at 12:41:01PM +0200, Bastian Hecht wrote:
> Elemets have been copied "manually" in a loop. Better use memcpy().
> 
> Signed-off-by: Bastian Hecht <hechtb@gmail.com>

Reviewed-by: Simon Horman <horms@verge.net.au>
Artem Bityutskiy - July 18, 2012, 12:03 p.m.
On Thu, 2012-07-05 at 12:41 +0200, Bastian Hecht wrote:
> Elemets have been copied "manually" in a loop. Better use memcpy().
> 
> Signed-off-by: Bastian Hecht <hechtb@gmail.com>

Pushed both to l2-mtd.git, thanks!

Patch

diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
index 0d9cce7..e4f31ef 100644
--- a/drivers/mtd/nand/sh_flctl.c
+++ b/drivers/mtd/nand/sh_flctl.c
@@ -29,6 +29,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
 #include <linux/slab.h>
+#include <linux/string.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/nand.h>
@@ -748,10 +749,9 @@  static void flctl_select_chip(struct mtd_info *mtd, int chipnr)
 static void flctl_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len)
 {
 	struct sh_flctl *flctl = mtd_to_flctl(mtd);
-	int i, index = flctl->index;
+	int index = flctl->index;
 
-	for (i = 0; i < len; i++)
-		flctl->done_buff[index + i] = buf[i];
+	memcpy(&flctl->done_buff[index], buf, len);
 	flctl->index += len;
 }
 
@@ -780,10 +780,11 @@  static uint16_t flctl_read_word(struct mtd_info *mtd)
 
 static void flctl_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
 {
-	int i;
+	struct sh_flctl *flctl = mtd_to_flctl(mtd);
+	int index = flctl->index;
 
-	for (i = 0; i < len; i++)
-		buf[i] = flctl_read_byte(mtd);
+	memcpy(buf, &flctl->done_buff[index], len);
+	flctl->index += len;
 }
 
 static int flctl_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)