On 06/19/2013 11:36:17 PM, Heiko Schocher wrote:
Hello Scott,
Am 18.06.2013 02:51, schrieb Scott Wood:
> Maybe we need an opts.limit?
Yes, I think so ... whats with the following proposal:
diff --git a/drivers/mtd/nand/nand_util.c
b/drivers/mtd/nand/nand_util.c
index d81972c..b877c7d 100644
--- a/drivers/mtd/nand/nand_util.c
+++ b/drivers/mtd/nand/nand_util.c
@@ -120,6 +120,10 @@ int nand_erase_opts(nand_info_t *meminfo, const
nand_erase_options_t *opts)
WATCHDOG_RESET();
+ if ((opts->limit) && (erase.addr > opts->limit)) {
+ puts("Size of write exceeds partition or
device limit\n");
+ return -EFBIG;
+ }
This is treating limit as an address rather than a size.
Also, unnecessary parens.
diff --git a/include/nand.h b/include/nand.h
index 26190e4..d799df3 100644
--- a/include/nand.h
+++ b/include/nand.h
@@ -125,6 +125,8 @@ struct nand_erase_options {
/* Don't include skipped bad blocks in size to be erased */
int spread;
+ /* maximum size that actual may be in order to not exceed the
buf */
+ loff_t limit;
};
typedef struct nand_erase_options nand_erase_options_t;
I checked for all calls from nand_erase_opts, that the
nand_erase_options_t
parameters are initialized with 0 ... so this patch should not change
current behaviour.
Should I do this in a seperate patch, or add it to the "dfu, nand:
before write a buffer to nand, erase the nand sectors" patch, so it
adds
no dead code ...
A separate patch within a patchset should be fine, but I'm also OK with
combining them since the whole thing would still be small and
straightforward enough to be easily reviewed.
-Scott
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot