mirror of
https://github.com/sheumann/hush.git
synced 2025-01-10 16:29:44 +00:00
nanddump: make oobbuf allocation dynamic
In accordance with upstream mtd-utils commit 96a5eeaf (mtd-utils: nanddump: Dynamic buffer, increase pagesize/oobsize). Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
c48a5c607d
commit
d982da79de
@ -60,7 +60,6 @@
|
|||||||
#define OPT_f (1 << 3)
|
#define OPT_f (1 << 3)
|
||||||
#define OPT_l (1 << 4)
|
#define OPT_l (1 << 4)
|
||||||
|
|
||||||
#define NAND_MAX_OOBSIZE 256
|
|
||||||
/* helper for writing out 0xff for bad blocks pad */
|
/* helper for writing out 0xff for bad blocks pad */
|
||||||
static void dump_bad(struct mtd_info_user *meminfo, unsigned len, int oob)
|
static void dump_bad(struct mtd_info_user *meminfo, unsigned len, int oob)
|
||||||
{
|
{
|
||||||
@ -103,7 +102,7 @@ int nandwrite_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|||||||
int nandwrite_main(int argc UNUSED_PARAM, char **argv)
|
int nandwrite_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
/* Buffer for OOB data */
|
/* Buffer for OOB data */
|
||||||
unsigned char oobbuf[NAND_MAX_OOBSIZE];
|
unsigned char *oobbuf;
|
||||||
unsigned opts;
|
unsigned opts;
|
||||||
int fd;
|
int fd;
|
||||||
ssize_t cnt;
|
ssize_t cnt;
|
||||||
@ -135,10 +134,6 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
fd = xopen(argv[0], O_RDWR);
|
fd = xopen(argv[0], O_RDWR);
|
||||||
xioctl(fd, MEMGETINFO, &meminfo);
|
xioctl(fd, MEMGETINFO, &meminfo);
|
||||||
|
|
||||||
oob.start = 0;
|
|
||||||
oob.length = meminfo.oobsize;
|
|
||||||
oob.ptr = oobbuf;
|
|
||||||
|
|
||||||
mtdoffset = xstrtou(opt_s, 0);
|
mtdoffset = xstrtou(opt_s, 0);
|
||||||
if (IS_NANDDUMP && (opts & OPT_l)) {
|
if (IS_NANDDUMP && (opts & OPT_l)) {
|
||||||
unsigned length = xstrtou(opt_l, 0);
|
unsigned length = xstrtou(opt_l, 0);
|
||||||
@ -153,6 +148,11 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
bb_error_msg_and_die("start address is not page aligned");
|
bb_error_msg_and_die("start address is not page aligned");
|
||||||
|
|
||||||
filebuf = xmalloc(meminfo_writesize);
|
filebuf = xmalloc(meminfo_writesize);
|
||||||
|
oobbuf = xmalloc(meminfo.oobsize);
|
||||||
|
|
||||||
|
oob.start = 0;
|
||||||
|
oob.length = meminfo.oobsize;
|
||||||
|
oob.ptr = oobbuf;
|
||||||
|
|
||||||
blockstart = mtdoffset & ~(meminfo.erasesize - 1);
|
blockstart = mtdoffset & ~(meminfo.erasesize - 1);
|
||||||
if (blockstart != mtdoffset) {
|
if (blockstart != mtdoffset) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user