[PATCH] [MTD-UTILS] Add support for 4KB page flash devices

apgmoorthy moorthy.apg at samsung.com
Tue Sep 23 07:25:50 EDT 2008


Hi,

     I find not much issue with that, but still as a fair practice , I'll
absorb your comment in the patch. Have done the memory allocation later in
the function to avoid unnecessary freeing code. 
     And malloced with mtdInfo.writesize instead of constants , let us know
your comments. 

We can now use these utilities on 4KB devices.

Signed-off-by: Rohit Hagargundgi <h.rohit at samsung.com>
---
--- a/flashcp.c	2008-09-23 15:36:26.000000000 +0530
+++ b/flashcp.c	2008-09-23 15:49:42.000000000 +0530
@@ -61,7 +61,7 @@ typedef int bool;
 #define PERCENTAGE(x,total) (((x) * 100) / (total))
 
 /* size of read/write buffer */
-#define BUFSIZE (10 * 1024)
+#define BUFSIZE (10 * 4096)
 
 /* cmd-line flags */
 #define FLAG_NONE		0x00
--- a/flash_otp_write.c	2008-09-23 15:36:26.000000000 +0530
+++ b/flash_otp_write.c	2008-09-23 16:45:01.000000000 +0530
@@ -18,7 +18,7 @@ int main(int argc,char *argv[])
 	int fd, val, ret, size, wrote, len;
 	mtd_info_t mtdInfo;
 	off_t offset;
-	char *p, buf[2048];
+	char *p, *buf;
 
 	if (argc != 4 || strcmp(argv[1], "-u")) {
 		fprintf(stderr, "Usage: %s -u <device> <offset>\n",
argv[0]);
@@ -64,9 +64,16 @@ int main(int argc,char *argv[])
 		len = 256;
 
 	wrote = 0;
+
+	buf = (char *)malloc(mtdInfo.writesize);
+	if (!buf) {
+		return -ENOMEM;
+	}
+
 	while ((size = read(0, buf, len))) {
 		if (size < 0) {
 			perror("read()");
+			free(buf);
 			return errno;
 		}
 		p = buf;
@@ -79,10 +86,12 @@ int main(int argc,char *argv[])
 			ret = write(fd, p, size);
 			if (ret < 0) {
 				perror("write()");
+				free(buf);
 				return errno;
 			}
 			if (ret == 0) {
 				printf("write() returned 0 after writing %d
bytes\n", wrote);
+				free(buf);
 				return 0;
 			}
 			p += ret;
@@ -92,5 +101,6 @@ int main(int argc,char *argv[])
 	}
 
 	printf("Wrote %d bytes of OTP user data\n", wrote);
+	free(buf);
 	return 0;
 }
--- a/include/mtd/mtd-abi.h	2008-09-23 15:36:26.000000000 +0530
+++ b/include/mtd/mtd-abi.h	2008-09-23 15:48:48.000000000 +0530
@@ -104,7 +104,7 @@ struct nand_oobinfo {
 	uint32_t useecc;
 	uint32_t eccbytes;
 	uint32_t oobfree[8][2];
-	uint32_t eccpos[32];
+	uint32_t eccpos[128];
 };
 
 struct nand_oobfree {
@@ -119,7 +119,7 @@ struct nand_oobfree {
  */
 struct nand_ecclayout {
 	uint32_t eccbytes;
-	uint32_t eccpos[64];
+	uint32_t eccpos[128];
 	uint32_t oobavail;
 	struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
 };





-----Original Message-----
From: kyungmin78 at gmail.com [mailto:kyungmin78 at gmail.com] On Behalf Of
Kyungmin Park
Sent: Monday, September 22, 2008 11:53 AM
To: moorthy.apg at samsung.com
Cc: linux-mtd at lists.infradead.org; David.Woodhouse at intel.com
Subject: Re: [PATCH] [MTD-UTILS] Add support for 4KB page flash devices

Hi,

On Fri, Sep 19, 2008 at 9:41 PM, AYYANARPONNUSAMY GANGHEYAMOORTHY
<moorthy.apg at samsung.com> wrote:
> We can now use these utilities on 4KB devices.
>
> Signed-off-by: Rohit Hagargundgi <h.rohit at samsung.com>
> ---
> --- a/flash_otp_write.c 2008-06-27 21:51:28.000000000 +0530
> +++ b/flash_otp_write.c 2008-07-01 16:04:12.000000000 +0530
> @@ -18,7 +18,7 @@ int main(int argc,char *argv[])
>        int fd, val, ret, size, wrote, len;
>        mtd_info_t mtdInfo;
>        off_t offset;
> -       char *p, buf[2048];
> +       char *p, buf[4096];
>

Is it no problem the stack overflow in application?
How about to use malloc & free?

Thank you,
Kyungmin Park




More information about the linux-mtd mailing list