[OpenWrt-Devel] [PATCH RFT] kernel: mtdsplit_uimage: debug buf/header sizes

Rafał Miłecki zajec5 at gmail.com
Thu Feb 12 06:47:14 EST 2015


---
John can you give it a try, please?
---
 .../generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c  | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
index 2bb5e9a..4abc4be 100644
--- a/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
+++ b/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_uimage.c
@@ -20,6 +20,8 @@
 
 #include "mtdsplit.h"
 
+static int first_try = 1;
+
 /*
  * uimage_header itself is only 64B, but it may be prepended with another data.
  * Currently the biggest size is for Edimax devices: 20B + 64B
@@ -60,6 +62,8 @@ read_uimage_header(struct mtd_info *mtd, size_t offset, u_char *buf,
 	size_t retlen;
 	int ret;
 
+	if (first_try)
+		pr_info("[%s] buf:%p header_len:%zu\n", __FUNCTION__, buf, header_len);
 	ret = mtd_read(mtd, offset, header_len, &retlen, buf);
 	if (ret) {
 		pr_debug("read error in \"%s\"\n", mtd->name);
@@ -106,11 +110,15 @@ static int __mtdsplit_parse_uimage(struct mtd_info *master,
 		ret = -ENOMEM;
 		goto err_free_parts;
 	}
+	if (first_try)
+		pr_info("[%s] buf:%p sizeof(*buf):%u\n", __FUNCTION__, buf, sizeof(*buf));
 
 	/* find uImage on erase block boundaries */
 	for (offset = 0; offset < master->size; offset += master->erasesize) {
 		struct uimage_header *header;
 
+		if (first_try)
+			pr_info("[%s] sizeof(*header):%u\n", __FUNCTION__, sizeof(*header));
 		uimage_size = 0;
 
 		ret = read_uimage_header(master, offset, buf, sizeof(*buf));
@@ -308,8 +316,13 @@ static ssize_t uimage_find_edimax(u_char *buf, size_t len)
 {
 	struct uimage_header *header;
 
+	if (first_try)
+		pr_info("[%s] buf:%p len:%zu FW_EDIMAX_OFFSET + sizeof(*header):%u\n", __FUNCTION__, buf, len, FW_EDIMAX_OFFSET + sizeof(*header));
+
 	if (len < FW_EDIMAX_OFFSET + sizeof(*header)) {
-		pr_err("Buffer too small for checking Edimax header\n");
+		if (first_try)
+			pr_err("Buffer too small for checking Edimax header\n");
+		first_try = 0;
 		return -ENOSPC;
 	}
 
-- 
1.8.4.5
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list