]> www.infradead.org Git - mtd-utils.git/log
mtd-utils.git
8 years agoRemove RPM spec file
David Oberhollenzer [Tue, 23 Aug 2016 10:17:28 +0000 (12:17 +0200)]
Remove RPM spec file

Building packages for distributions is typically something highly
distribution specific. While there are widely used package formats
like RPM, implementing a de-facto standard, the build process,
list of files actually packaged, list of required dependencies,
package grouping, package versioning, etc... is still _very_
distribution specific. In fact, this spec file completely fails to
address some of these points.

Actual RPM based distributions out there currently use their own,
distribution specific, RPM spec files that were possibly _based_ on
this one at some point (judging from similar descriptions).

The spec file _may_ have worked at some point, but it definitely doesn't
work with the new build system and there is no real reason to fix it
(which, by definition, isn't possible for the reasons above) and drag it
along for another decade or two.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agoRemove unused and broken mtd_write_img function from libmtd
David Oberhollenzer [Thu, 25 Aug 2016 11:41:50 +0000 (13:41 +0200)]
Remove unused and broken mtd_write_img function from libmtd

The function _tries_ to support short reads but doesn't adjust the
pointer into the buffer. If a short read happens, we scrambles the
flash contents. Interrupted reads aren't handled. Short or
interrupted writes aren't handled at all. Either a write succeeds
writing the entire buffer or the function gives up.

During an attempt at fixing it, it was discovered, that no mtd-utils
program uses this function. Furthermore, its highly specific nature
makes it more of a "feature looking for use case".

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agoRemove unused legacy_libmtd_open internal libmtd function
David Oberhollenzer [Thu, 25 Aug 2016 11:38:20 +0000 (13:38 +0200)]
Remove unused legacy_libmtd_open internal libmtd function

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agoRemove jffs-dump.c
David Oberhollenzer [Tue, 23 Aug 2016 11:12:06 +0000 (13:12 +0200)]
Remove jffs-dump.c

This _entire_ file is dead code. The download packages on the FTP
server contain it all the way back to mtd-utils 1.0, but it isn't
built in any of them. The git history (which dates back to 2006)
contains no instance where that file was ever used in a build process.
A quick look at various distribution packages didn't reveal any that
contained a jffs-dump utilty. There have been no major changes to this
file since the initial commit. It won't even compile as it doesn't have
a PROGRAM_NAME defined required by common.h at least since 2010.

At this point, it can be safeley assumed that nobody will miss this.
They had at least 10 years to do something about it.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agoEliminate warnings about implicit non-const casting in libmtd
David Oberhollenzer [Tue, 23 Aug 2016 08:51:21 +0000 (10:51 +0200)]
Eliminate warnings about implicit non-const casting in libmtd

The mtd_get_dev_info1 function reads (among other things) name and type
string into coresponding struct mtd_dev_info fields.

The struct mtd_dev_info has the string fields marked const, requiring
them to be cast to non-const version during initialization.

This cast was previously omitted from the dev_read_data calls,
triggering warnings during compilation.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agonanddump: check write function result for errors
Rafał Miłecki [Mon, 18 Jul 2016 15:09:45 +0000 (17:09 +0200)]
nanddump: check write function result for errors

Errors may happen, it's e.g. easy on embedded devices to run out of space
when dumping big partitions. This patch adds a helper function for
writing. It deals with partial writes and just returns 0 on success or
error number.

The old code didn't check for errors at all which could result in
incomplete dumps without exiting with an error.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agomtd-utils: mkfs.jffs2: initialize lzo decompression buffer size
David Oberhollenzer [Mon, 11 Jul 2016 13:42:20 +0000 (15:42 +0200)]
mtd-utils: mkfs.jffs2: initialize lzo decompression buffer size

This fix was initialially part of a patch submitted by Carsten Schlote
in January 2009. It didn't get merged back then because of coding style
issues and a proposed buffer size change guessed by shotgun debugging.

I was unable to reproduce the claimed segfaults in the compression
function that lead to the proposed buffer size change. Valgrind did
not issue any errors or warnings about the code in question either,
so I didn't include the proposed buffer size change.

The original patch also added a call to lzo_init(), which (according
to LZO documentation & source code) does not actually perform any
initialization, but only checks at runtime that the data type sizes and
endianness of the library code match those in the caller code and
should be unnecessary.

Other fixes from the original patch have already been added over
the years.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agofs-tests: integrity: don't include header <bits/stdio_lim.h>
Rahul Bedarkar [Thu, 18 Aug 2016 17:41:30 +0000 (23:11 +0530)]
fs-tests: integrity: don't include header <bits/stdio_lim.h>

In commit ca7a5eda221d("integck.c: Fix buffer overflow in save_file")
we started including header <bits/stdio_lim.h>.

But with musl C library, we get following build error

  integck.c:37:28: fatal error: bits/stdio_lim.h: No such file or directory
   #include <bits/stdio_lim.h>
                              ^
  compilation terminated.
  make[2]: *** [integck] Error 1

Header <bits/stdio_lim.h> is not available in musl C library. However
<stdio.h> has all definition that <bits/stdio_lim.h> supposed to be
providing. Moreover <bits/stdio_lim.h> shouldn't be included directly
instead we should be using <stdio.h>.

Since we already include <stdio.h> and in case of uClibc or glibc
<bits/stdio_lim.h> gets included internally, we can safely remove it.

This build issue is found by Buildroot autobuilder
http://autobuild.buildroot.net/results/175/1754861457af520480cc34d7d2d0edff2868ff66/

Fixes: ca7a5eda221d("integck.c: Fix buffer overflow in save_file")
Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agomtd-utils: fix wrong format specifiers on mips32
Mathias Kresin [Sun, 12 Jun 2016 10:05:45 +0000 (12:05 +0200)]
mtd-utils: fix wrong format specifiers on mips32

This patch fixes the follwing compiler warnings:

flash_erase.c: In function 'show_progress':
flash_erase.c:56:22: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'off_t {aka long long int}' [-Wformat=]
  bareverbose(!quiet, "\rErasing %d Kibyte @ %"PRIxoff_t" -- %2i %% complete ",
                      ^
./include/common.h:81:10: note: in definition of macro 'bareverbose'
   printf(fmt, ##__VA_ARGS__);

which are linked to the following buggy numerical output:

Erasing 128 Kibyte @ 0 -- 917504 % complete flash_erase:  Cleanmarker written at 0
Erasing 128 Kibyte @ 0 -- 1048576 % complete flash_erase:  Cleanmarker written at 0

Signed-off-by: Mathias Kresin <dev@kresin.me>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agomtd-utils: mtd_debug: check amount of data read.
Michal Suchanek [Mon, 27 Jul 2015 13:47:10 +0000 (15:47 +0200)]
mtd-utils: mtd_debug: check amount of data read.

The kernel refuses to read more data from a MTD device than the device
size. However, mtd_debug does not check the amount of data read as
returned by read(2) and assumes the requested amount is always read when
there is no error. Reading 8M data from a 4M flash chip results in 8M
file containing the flash data at the start.

Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
8 years agomtd-utils: nanddump: write requested length only
Gary Bisson [Wed, 18 Dec 2013 01:03:06 +0000 (17:03 -0800)]
mtd-utils: nanddump: write requested length only

nanddump was always writing a whole page of data into the output
discarding the length actually requested. This patch allows to
write only the remaining length if oob is omitted. In case oob
is needed, it makes sense to copy the entire page.

Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agolibmtd: Fix return status in mtd_torture test function
David Oberhollenzer [Mon, 25 Apr 2016 22:13:22 +0000 (00:13 +0200)]
libmtd: Fix return status in mtd_torture test function

This patch fixes the return status of the mtd_torture function
in libmtd.

The torture test function is currently only used by the ubiformat
utility to check if a block is bad after a write fails (blocks are
marked bad if the function returns an error status). However, the
way the function was written, it ALWAYS returns an error value
regardless of whether it failed or not.

Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
Reviewed-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agofix build warnings w/newer glibc & _BSD_SOURCE
Mike Frysinger [Sun, 17 Apr 2016 02:11:51 +0000 (22:11 -0400)]
fix build warnings w/newer glibc & _BSD_SOURCE

The _BSD_SOURCE define has been deprecated for a while now.  Instead,
code should be defining _DEFAULT_SOURCE.  By defining both, it'll work
with both new & old versions warning-free.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoinclude sys/sysmacros.h for major/minor/makedev
Mike Frysinger [Sun, 17 Apr 2016 02:30:45 +0000 (22:30 -0400)]
include sys/sysmacros.h for major/minor/makedev

These functions have always been defined in sys/sysmacros.h under
Linux C libraries.  For some, including sys/types.h implicitly
includes that as well, but glibc wants to deprecate that, and some
others already have.  Include the header explicitly for the funcs.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoMakefile: install: don't look for scripts in BUILDDIR
Brian Norris [Tue, 26 Jan 2016 21:36:56 +0000 (13:36 -0800)]
Makefile: install: don't look for scripts in BUILDDIR

Our ${SCRIPTS} (e.g., flash_eraseall) are not found in the build
directory; they should be found in their original location.

This fixes a typo in the Makefile refactoring, which caused 'make
install' to fail with messages like:

  make: *** No rule to make target '[...my source-build directory...]/armv7a-cros-linux-gnueabi/misc-utils/flash_eraseall'. Stop.

because the install target is looking in the wrong place for
flash_eraseall.

Fixes: 7d81790ced34 ("mtd-utils: Restructure the mtd-utils source.")
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
9 years agomkfs.ubifs: <sys/xattr.h>, not <attr/xattr.h>
Brian Norris [Sat, 23 Jan 2016 21:31:50 +0000 (13:31 -0800)]
mkfs.ubifs: <sys/xattr.h>, not <attr/xattr.h>

To be consistent with mkfs.jffs2, and to get this to build on my
machine, it looks like we should use <sys/xattr.h>, not <attr/xattr.h>.

Fixes this error, seen on an Ubuntu 14.04 build system:

  ubifs-utils/mkfs.ubifs/mkfs.ubifs.c:30:24: fatal error: attr/xattr.h: No such file or directory
   #include <attr/xattr.h>
                          ^

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>
Reviewed-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: use gid from table instead 2x uid
Sebastian Andrzej Siewior [Fri, 22 Aug 2014 16:49:01 +0000 (18:49 +0200)]
mkfs.ubifs: use gid from table instead 2x uid

If the devtable is used then the tool uses uid twice and doesn't
consider gid at all. This changes it to use gid & uid.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agolibmtd: mtd_read: Take the buffer offset into account when reading
Marcus Prebble [Tue, 6 Oct 2015 12:13:23 +0000 (14:13 +0200)]
libmtd: mtd_read: Take the buffer offset into account when reading

Assuming the read() call does not return zero and the result is less
than len, the current implementation will overwrite the data already
read in buf which doesn't seem correct.

With this patch, subsequent calls to read() within the loop will now no
longer overwrite the existing contents of buf.

Signed-off-by: Marcus Prebble <marcus.prebble@axis.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflashcp: Use %llu to print filestat.st_size
Fabien Proriol [Fri, 7 Nov 2014 13:46:28 +0000 (13:46 +0000)]
flashcp: Use %llu to print filestat.st_size

filestat.st_size type is off_t.
For some paltforms, off_t can be 32 or 64bit but there is no C99 format specifier for off_t.
The best way to print it with printf is to cast it to long long and print with %llu

Signed-off-by: Fabien Proriol <fabien.proriol@jdsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomkfs.ubifs: fix compiler warning for WITHOUT_LZO
Daniel Walter [Thu, 12 Nov 2015 11:52:09 +0000 (12:52 +0100)]
mkfs.ubifs: fix compiler warning for WITHOUT_LZO

Fix compiler warning about an unused variable.

ubifs-utils/mkfs.ubifs/compr.c:41:27: warning: ‘c’ defined but not used [-Wunused-variable]
 static struct ubifs_info *c = &info_;

Signed-off-by: Daniel Walter <dwalter@sigma-star.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoFix scanf() formatstring for modern C version
Daniel Walter [Tue, 3 Nov 2015 13:50:02 +0000 (14:50 +0100)]
Fix scanf() formatstring for modern C version

mkfs.jffs2 is using an old assignment-allocation
modifier for scanf(). Add a check so this modifier
does not get confused with a float formatstring
on newer C standard (C99 onwards).

Signed-off-by: Daniel Walter <dwalter@sigma-star.at>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agofix build when WITHOUT_LZO is set
Rolf Eike Beer [Tue, 10 Mar 2015 14:20:52 +0000 (15:20 +0100)]
fix build when WITHOUT_LZO is set

Make mkfs.ubifs honor the WITHOUT_LZO flag, too.

Fixes this build error:
  mkfs.ubifs/compr.c:27:23: lzo/lzo1x.h: No such file or directory
  mkfs.ubifs/compr.c: In function `lzo_compress':
  mkfs.ubifs/compr.c:92: error: `lzo_uint' undeclared (first use in this function)
  mkfs.ubifs/compr.c:92: error: (Each undeclared identifier is reported only once
  mkfs.ubifs/compr.c:92: error: for each function it appears in.)
  mkfs.ubifs/compr.c:92: error: syntax error before "len"
  mkfs.ubifs/compr.c:95: error: `len' undeclared (first use in this function)
  mkfs.ubifs/compr.c:96: warning: implicit declaration of function `lzo1x_999_compress'
  mkfs.ubifs/compr.c:99: error: `LZO_E_OK' undeclared (first use in this function)
  mkfs.ubifs/compr.c: In function `init_compression':
  mkfs.ubifs/compr.c:201: error: `LZO1X_999_MEM_COMPRESS' undeclared (first use in this function)

Signed-off-by: Rolf Eike Beer <eb@emlix.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: Optionally create extended attribute with inode number
Sascha Hauer [Thu, 12 Nov 2015 09:31:28 +0000 (10:31 +0100)]
mkfs.ubifs: Optionally create extended attribute with inode number

This is done to allow creating images suitable for IMA directory
appraisal. IMA creates a hash for directories and attaches this
hash to the directory itself as an extended attribute. Among other
things the inode numbers of the files are hashed. So, to create
a valid hash in the UBIFS image the evmctl tool needs to know
the inode numbers which the files in the UBIFS image will have.
evmctl will read the inode numbers from the user.image-inode-number
extended attribute. Since extended attributes are inodes themselves
the inode numbers for the generated image will change when the
extended attributes change, so to generate a correctly hashed
UBIFS image, both evmctl and mkfs.ubifs must be run twice:

1) execute evmctl to iterate over the directory tree. This will
   create the security.ima and security.evm extended attributes.
   The existence of the attributes makes sure that subsequent
   calls to mkfs.ubifs will use the same inode numbers. evmctl
   will use the inode numbers from the host filesystem in this
   step which makes the resulting image unusable
2) execute mkfs.ubifs -a. This will create the user.image-inode-number
   extended attributes on files/directories added to the image.
3) execture evmctl again. This time evmctl will pick the inode
   numbers from the user.image-inode-number extended attribute
   instead of the ones from the host filesystem
4) execute mkfs.ubifs again. This will create the correct image.
   The now existing user.image-inode-number extended attributes
   are ignored and not added to the image.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: Add extended attribute support
Sascha Hauer [Thu, 12 Nov 2015 09:31:27 +0000 (10:31 +0100)]
mkfs.ubifs: Add extended attribute support

This adds extended attribute support to mkfs.ubifs. When creating
an image from a directory tree the existing extended attributes are
added to the UBIFS image.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: simplify make_path with xasprintf
Sascha Hauer [Thu, 12 Nov 2015 09:31:26 +0000 (10:31 +0100)]
mkfs.ubifs: simplify make_path with xasprintf

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Daniel Walter <dwalter@sigma-star.at>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: use xmalloc/xzalloc for allocating memory
Sascha Hauer [Thu, 12 Nov 2015 09:31:25 +0000 (10:31 +0100)]
mkfs.ubifs: use xmalloc/xzalloc for allocating memory

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Daniel Walter <dwalter@sigma-star.at>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomkfs.ubifs: change add_directory argument to 'existing'
Sascha Hauer [Thu, 12 Nov 2015 09:31:24 +0000 (10:31 +0100)]
mkfs.ubifs: change add_directory argument to 'existing'

A 'non_existing' argument which is only used with !non_existing
is just too confusing. Change this to positive logic.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Reviewed-by: Daniel Walter <dwalter@sigma-star.at>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
9 years agomtd-utils: Restructure the mtd-utils source.
Dongsheng Yang [Sat, 31 Oct 2015 03:12:01 +0000 (11:12 +0800)]
mtd-utils: Restructure the mtd-utils source.

* There is no code modification in this commit, only moving
* the files to proper place.

The user tools looks a little messy as we place almost
the all tools in the root directory of mtd-utils. To make
it more clear, I propose to introduce the following structure
for our source code.

mtd-utils/
|-- lib
|-- include
|-- misc-utils
|-- jffsX-utils
|-- nand-utils
|-- nor-utils
|-- ubi-utils
|-- ubifs-utils
`-- tests

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: document block count == -1
Brian Norris [Mon, 31 Aug 2015 21:39:47 +0000 (14:39 -0700)]
flash_{un,}lock: document block count == -1

These utilities have accepted -1 as a block count to mean "all blocks."
Let's document that.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: don't allow "last byte + 1"
Brian Norris [Mon, 31 Aug 2015 21:34:55 +0000 (14:34 -0700)]
flash_{un,}lock: don't allow "last byte + 1"

A lock/unlock/islocked ioctl() should be prevented from anything past
the last byte, inclusive. But we were doing an exclusive check.

This isn't a big deal, as the kernel MTD APIs would be guarding this
anyway, but let's do this for completeness.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: improve strtol() error handling
Brian Norris [Mon, 31 Aug 2015 21:34:02 +0000 (14:34 -0700)]
flash_{un,}lock: improve strtol() error handling

Use the simple_* helpers to improve error checking.

Also fixup brace style at the same time.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: add MEMISLOCKED support
Brian Norris [Thu, 27 Aug 2015 22:17:58 +0000 (15:17 -0700)]
flash_{un,}lock: add MEMISLOCKED support

With the -i / --islocked flags.

Sample output:

  # flash_lock --islocked /dev/mtd0
  Device: /dev/mtd0
  Start: 0
  Len: 0x400000
  Lock status: unlocked
  Return code: 0

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: support both lock/unlock in the same binary
Brian Norris [Thu, 27 Aug 2015 22:03:21 +0000 (15:03 -0700)]
flash_{un,}lock: support both lock/unlock in the same binary

Add new --lock/--unlock flags, so we can do either with the same binary.
This will prepare for the addition of other features, so we don't have
to keep duplicating the same binary via #include "flash_unlock.c".

The defaults still work as expected: flash_unlock will default to
REQUEST_UNLOCK, and flash_lock will default to REQUEST_LOCK.

Eventually, we might deprecate one of the two (flash_unlock, probably),
so we only have to ship one flash_{un,}lock binary.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: move args processing to its own function
Brian Norris [Thu, 27 Aug 2015 21:57:58 +0000 (14:57 -0700)]
flash_{un,}lock: move args processing to its own function

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: abstract the argument positions
Brian Norris [Thu, 27 Aug 2015 21:45:48 +0000 (14:45 -0700)]
flash_{un,}lock: abstract the argument positions

Previously, there were no options (besides stand-alone --help and
--version), so we just used fixed-position argv indexes. Let's change
that.

Also clean up the sanity checks a bit to make them more verbose and
specific.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: document option flags
Brian Norris [Thu, 27 Aug 2015 21:04:18 +0000 (14:04 -0700)]
flash_{un,}lock: document option flags

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: support --version flag
Brian Norris [Thu, 27 Aug 2015 20:32:25 +0000 (13:32 -0700)]
flash_{un,}lock: support --version flag

Just use the common helper macro.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: switch to getopt library
Brian Norris [Thu, 27 Aug 2015 18:00:31 +0000 (11:00 -0700)]
flash_{un,}lock: switch to getopt library

We will be adding some more flags, so the getopt library can help.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoflash_{un,}lock: nest optional parameters in help message
Brian Norris [Thu, 27 Aug 2015 17:58:53 +0000 (10:58 -0700)]
flash_{un,}lock: nest optional parameters in help message

block count should be nested within the optional offset listing. That
is, we require offset before we accept a block count.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agonandtest: support hex/dec/oct for --offset and --length
Brian Norris [Fri, 30 Oct 2015 00:12:01 +0000 (17:12 -0700)]
nandtest: support hex/dec/oct for --offset and --length

These two options are handled inconsistently, which caused an
unnecessary amount of head scratching. Let's just use the simple helpers
too, so we get the error handling right.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd-utils: serve_image: use proper POSIX_C_SOURCE value
Kirill Smirnov [Thu, 1 Oct 2015 01:19:35 +0000 (04:19 +0300)]
mtd-utils: serve_image: use proper POSIX_C_SOURCE value

struct addrinfo and friends conform to POSIX.1-2001, not earlier.
This patch fixes linking against latest glibc 2.22

Signed-off-by: Kirill Smirnov <kirill.k.smirnov@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd: tests: Fix endian issue with CRC generation algorithm
Paul McGougan [Thu, 17 Apr 2014 05:09:26 +0000 (05:09 +0000)]
mtd: tests: Fix endian issue with CRC generation algorithm

The calculation of the CRC in /tests/checkfs/makefiles.c was writing the CRC
Into the produced files in host byte-order which would cause CRC validation
to fail on big-endian systems as the validation is performed bytewise.

Signed-off-by: Paul McGougan <pmcgougan AT topcon.com>
[Brian: add endian.h]
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomtd-utils: ubinize: Always return error code (at least -1) in case of an error
Enrico Jorns [Fri, 11 Sep 2015 13:28:13 +0000 (15:28 +0200)]
mtd-utils: ubinize: Always return error code (at least -1) in case of an error

ubinize should not fail silenty, this can be very annoying when using
it from other tools that rely on the exit code for determining the
success of their operation.

Signed-off-by: Enrico Jorns <ejo@pengutronix.de>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agodon't include system headers in dependency files
Brian Norris [Fri, 28 Aug 2015 16:05:43 +0000 (09:05 -0700)]
don't include system headers in dependency files

System library headers are not strictly part of our build. If they are
changing beneath our feet, then we probably have bigger problems.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Suggested-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoautogenerated dependency files are not being utilized properly
Brian Norris [Thu, 27 Aug 2015 22:48:22 +0000 (15:48 -0700)]
autogenerated dependency files are not being utilized properly

TL;DR
Acked-by: Mike Frysinger <vapier@gentoo.org>
=====

Auto-generated dependency rules are not being written correctly, so
changes to dependent files (e.g., headers) do not actually trigger
rebuilds.

The problem
===========

It appears that when a dependency generation flag is passed directly to
the preprocessor (with '-Wp,...'), it loses information about the output
path. So, it just makes up the output name as $(basename).o, with no
path information. This yields .*.c.dep files that look like this:

  flash_lock.o: flash_lock.c /usr/include/stdc-predef.h flash_unlock.c \
   (...)

and

  nanddump.o: nanddump.c /usr/include/stdc-predef.h /usr/include/ctype.h \
   (...)
   include/libmtd.h

This is the case for both in-tree *and* out-of-tree builds. Naturally,
this is a problem for out-of-tree builds. But it is also a problem for
in-tree builds, because we use rules like this for builds:

  $(BUILDDIR)/%.o: %.c

and make doesn't recognize $(BUILDDIR)/%.o as the same as %.o even when
$(BUILDDIR) == $(PWD).

Example failures
================

  ## Rebuilding after touching common header doesn't recompile anything
  $ make
  (...)
  $ touch include/libmtd.h
  $ make
    CHK     include/version.h

  ## Same for out-of-tree builds
  $ BUILDDIR=test make
  (...)
  $ touch include/libmtd.h
  $ BUILDDIR=test make
    CHK     include/version.h

I noticed this when seeing that flash_lock would not get rebuilt when
modifying flash_unlock.c (where 99% of the source code lies):

  $ make
  (...)
  $ touch flash_unlock.c
  $ make
    CHK     include/version.h
    CC      flash_unlock.o
    LD      flash_unlock

The fix
=======

Just pass -MD straight to the compiler, and make sure to specify the
output file for the dependency info with -MF.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agoubifs: correct the size of nnode in memset
Dongsheng Yang [Wed, 19 Aug 2015 08:28:52 +0000 (16:28 +0800)]
ubifs: correct the size of nnode in memset

There is a typo in lpt to memset nnode by the
size in sizeof(stuct ubifs_pnode).

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
9 years agomake_a_release.sh: fix MTD spelling
Brian Norris [Mon, 3 Aug 2015 18:08:08 +0000 (11:08 -0700)]
make_a_release.sh: fix MTD spelling

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agoRelease mtd-utils-1.5.2 v1.5.2
Brian Norris [Sat, 25 Jul 2015 01:18:53 +0000 (18:18 -0700)]
Release mtd-utils-1.5.2

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years ago.gitignore: add new mtdpart utility
Brian Norris [Sat, 25 Jul 2015 01:18:14 +0000 (18:18 -0700)]
.gitignore: add new mtdpart utility

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: fix 'new blank line at EOF' problems
Dongsheng Yang [Wed, 1 Jul 2015 03:44:16 +0000 (11:44 +0800)]
mtd-utils: fix 'new blank line at EOF' problems

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: fix 'space before tab in indent' problem
Dongsheng Yang [Wed, 1 Jul 2015 03:44:15 +0000 (11:44 +0800)]
mtd-utils: fix 'space before tab in indent' problem

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: fix the trailing whitespace problems
Dongsheng Yang [Wed, 1 Jul 2015 03:44:14 +0000 (11:44 +0800)]
mtd-utils: fix the trailing whitespace problems

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: ubi-tests: fix a some overflows
Dongsheng Yang [Mon, 29 Jun 2015 08:49:19 +0000 (16:49 +0800)]
mtd-utils: ubi-tests: fix a some overflows

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: fs-tests: pass TEST_DIR to integck in run_all.sh
Dongsheng Yang [Mon, 29 Jun 2015 08:49:18 +0000 (16:49 +0800)]
mtd-utils: fs-tests: pass TEST_DIR to integck in run_all.sh

Test integck requires a parameter but run_all.sh did no pass any to it.
Then:
integck: error!: test file-system was not specified (use -h for help)

Signed-off-by: Dongsheng Yang <yangds.fnst@cn.fujitsu.com>
Reviewed-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: Add mtdpart to add/delete partition
Nam T. Nguyen [Tue, 28 Apr 2015 15:12:12 +0000 (08:12 -0700)]
mtd-utils: Add mtdpart to add/delete partition

Add a simple utility to exercise BLKPG ioctl.

Signed-off-by: Nam T. Nguyen <namnguyen@chromium.org>
Acked-by: Mike Frysinger <vapier@chromium.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agoinclude/common.h: fix build against musl
Jörg Krause [Thu, 23 Apr 2015 22:12:51 +0000 (00:12 +0200)]
include/common.h: fix build against musl

Like uClibc version older than (not yet released) 0.9.34 musl does not have
a rpmatch() implementation.

uClibc defines both __UCLIBC__ and __GLIBC__. So first check for uCibc and its
version and then for a non glibc implementation (like musl). Note, musl does
not define __MUSL__.

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agorecv_image: do not include error.h
Jörg Krause [Fri, 24 Apr 2015 20:51:47 +0000 (22:51 +0200)]
recv_image: do not include error.h

recv_image does not use anything from it and it is not available with all
C libraries, e.g. musl.

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agoserve_image: do not include error.h
Jörg Krause [Fri, 24 Apr 2015 20:51:46 +0000 (22:51 +0200)]
serve_image: do not include error.h

serve_image does not use anything from it and it is not available with all
C libraries, e.g. musl.

Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agolibmtd: fix comment typo
Baruch Siach [Wed, 29 Apr 2015 08:28:43 +0000 (11:28 +0300)]
libmtd: fix comment typo

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: libfec: use standard C type instead of u_long
Imre Kaloz [Mon, 4 May 2015 13:36:34 +0000 (15:36 +0200)]
mtd-utils: libfec: use standard C type instead of u_long

Fixes compilation on hosts with the musl C library.
Also drops the unused u_short typedef.

Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomkfs.ubifs: Fix build with gcc 5.1
Bernhard Walle [Sat, 2 May 2015 12:38:06 +0000 (14:38 +0200)]
mkfs.ubifs: Fix build with gcc 5.1

In gcc 5.1, the default C standard which is used to compile a C file,
has changed from gnu89 to gnu11. This changed the meaning of 'extern
inline'. See https://gcc.gnu.org/gcc-5/porting_to.html.

In mkfs.ubifs, this leads to multiple definitions of
hashtable_iterator_key and -hashtable_iterator_value. I think the most
pragmatic way to fix the issue is to replace 'extern inline' with
'static inline' here.

Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agomtd-utils: jffs2dump: XATTR and XREF support for endianess conversion
Timo Warns [Wed, 15 Oct 2014 19:16:22 +0000 (21:16 +0200)]
mtd-utils: jffs2dump: XATTR and XREF support for endianess conversion

Add support for XATTR and XREF nodes to "convert image endianness" action of
jffs2dump.

Signed-off-by: Timo Warns <timo.warns@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agomtd-utils: jffs2dump: XATTR and XREF support for content dump
Timo Warns [Wed, 15 Oct 2014 19:12:03 +0000 (21:12 +0200)]
mtd-utils: jffs2dump: XATTR and XREF support for content dump

Add support for XATTR and XREF nodes to "dump image content" action of
jffs2dump.

Signed-off-by: Timo Warns <timo.warns@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agolibmtd: don't ignore "region index" parameter in mtd_regioninfo()
Brian Norris [Mon, 15 Sep 2014 17:35:00 +0000 (10:35 -0700)]
libmtd: don't ignore "region index" parameter in mtd_regioninfo()

ioctl(MEMGETREGIONINFO) has one input parameter (regionindex) and three
output parameters (info about the erase region). There are two problems
in mtdinfo/libmtd here:

 1. mtdinfo.c doesn't initialize its region_info_user struct, instead
    passing uninitialized data to mtd_regioninfo()

 2. mtd_regioninfo() fails to utilize the 'regidx' parameter to fill out
    the regionindex parameter properly, so the garbage from mtdinfo.c is
    propagated to the ioctl()

This means that mtdinfo will continuously probe the same (possibly
out-of-range) erase region, instead of looping over the valid regions.

Let's fix this in the mtd_regioninfo() helper, and at the same time,
let's zero out the mtdinfo.c buffer, as an additional precaution to keep
from using uninitialized data.

Initial error report from Yang, when running "mtdinfo /dev/mtd0" on a
Cavium 6100 board:

root@CN61XX:~# mtdinfo /dev/mtd0
mtd0
Name:                           phys_mapped_flash
Type:                           nor
Eraseblock size:                65536 bytes, 64.0 KiB
Amount of eraseblocks:          128 (8388608 bytes, 8.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Additional erase regions:       0
Character device major/minor:   90:0
Bad blocks are allowed:         false
Device is writable:             true
libmtd: error!: MEMGETREGIONINFO ioctl failed for erase region 0
        error 22 (Invalid argument)
Eraseblock region 0:  info is unavailable
libmtd: error!: MEMGETREGIONINFO ioctl failed for erase region 1
        error 22 (Invalid argument)
Eraseblock region 1:  info is unavailable

Reported-by: Yang Wei <Wei.Yang@windriver.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agoubifs-media.h: include "byteorder.h"
Artem Bityutskiy [Thu, 30 Oct 2014 08:14:20 +0000 (10:14 +0200)]
ubifs-media.h: include "byteorder.h"

... in order to have definitions of things like __le16.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agoMove mkfs.ubifs/ubifs-media.h to include/mtd
Artem Bityutskiy [Thu, 30 Oct 2014 07:55:51 +0000 (09:55 +0200)]
Move mkfs.ubifs/ubifs-media.h to include/mtd

This file will be shared with the ubidump tool in the future.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agomkfs.ubifs: start using common code
Artem Bityutskiy [Mon, 20 Oct 2014 10:47:09 +0000 (13:47 +0300)]
mkfs.ubifs: start using common code

Several commonly used macros are now defined in 'common.h', let's start using
them in mkfs.ubifs, instead of duplicating them.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agomtd-utils: Add macros to include/common.h
hujianyang [Thu, 16 Oct 2014 12:02:09 +0000 (20:02 +0800)]
mtd-utils: Add macros to include/common.h

This patch adds four macros:

    ALIGN, __ALIGN_MASK, min_t and max_t

to include/common.h.

Signed-off-by: hujianyang <hujianyang@huawei.com>
10 years agoubiformat: fix the subpage size hint on the error path
Artem Bityutskiy [Mon, 8 Sep 2014 12:05:54 +0000 (15:05 +0300)]
ubiformat: fix the subpage size hint on the error path

David Binderman <dcb314@hotmail.com> reports that the following piece of looks
wrong:

if (!args.subpage_size != mtd->min_io_size)
    normsg("may be sub-page size is incorrect?");

I totally agree with him and I believe that we actually meant to have no
negation in fron to f 'args.subpage_size', so instead, the code should look
like this:

if (args.subpage_size != mtd->min_io_size)
    normsg("may be sub-page size is incorrect?");

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
10 years agolibmtd: fix mtd_dev_present return value on legacy systems
Guido Martínez [Wed, 10 Sep 2014 14:56:40 +0000 (11:56 -0300)]
libmtd: fix mtd_dev_present return value on legacy systems

On legacy systems, if "/proc/mtd" doesn't exist or gives a read error,
mtd_dev_present returns -1 (since it calls legacy_dev_present), contrary
to what's specified in the header file.

This causes checks like

  if (mtd_dev_present(n)) {
    ...
  }

to give false positives. Fix this by comparing the return value to 1.

Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
10 years agonandtest: fix --reads argument
Guido Martínez [Thu, 14 Aug 2014 16:29:45 +0000 (13:29 -0300)]
nandtest: fix --reads argument

The --reads option specifies the argument as optional, but doesn't check
for a null optarg, which means that nandtest segfaults when run as
"nandtest --reads".

Fix this by making the argument required, and changing the help text to
not specify it as optional. Argument -r already specifies the argument
as required, so we fix this inconsistency too.

Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agonandtest: Introduce multiple reads & check iterations
Ezequiel García [Tue, 6 May 2014 15:07:49 +0000 (12:07 -0300)]
nandtest: Introduce multiple reads & check iterations

The current nandtest performs a simple test which consists of:

  1. erase block
  2. write data
  3. read and verify

In order to improve the nandtest strength, this commit adds a new parameter
to increase the number of "read and verify" iterations. In other words,
the test now consists of:

  1. erase block
  2. write data
  3. read and verify (N times)

This seem to apply more pressure on a NAND driver's ECC engine and has been
used to discover stability problems with an old OMAP2.

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agonandtest: Move the "read and compare" code to a function
Ezequiel Garcia [Mon, 28 Apr 2014 13:14:18 +0000 (10:14 -0300)]
nandtest: Move the "read and compare" code to a function

This commit makes no functionality change, and simply moves the
read and compare code into a separate read_and_compare() function.

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agonandtest: Remove redundant check
Ezequiel Garcia [Mon, 28 Apr 2014 13:14:17 +0000 (10:14 -0300)]
nandtest: Remove redundant check

This commit removes a redundant 'len' check, which is already performed
just after the pread call.

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoinclude/common.h: fix build against recent 0.9.33 uClibc
Baruch Siach [Wed, 16 Apr 2014 04:52:48 +0000 (07:52 +0300)]
include/common.h: fix build against recent 0.9.33 uClibc

An implementation of rpmatch() was backported to the 0.9.33 branch of uClibc.
So the uClibc version check introduced in commit 50c9e11f7e (include/common.h:
fix build against current uClibc) is not enough. Rename the local rpmatch()
implementation to avoid collision.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agomtd-utils: integck: Use $(CC) and $(AR) instead of 'gcc' and 'ar' consistently
Mats Kärrman [Fri, 11 Apr 2014 07:38:21 +0000 (09:38 +0200)]
mtd-utils: integck: Use $(CC) and $(AR) instead of 'gcc' and 'ar' consistently

Not using the macros may be a problem when cross-compiling.

Signed-off-by: Mats Karrman <mats.karrman@tritech.se>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoinclude/common.h: fix build against current uClibc
Baruch Siach [Sun, 13 Apr 2014 12:26:46 +0000 (15:26 +0300)]
include/common.h: fix build against current uClibc

Commit dbe0fd17f2 (mtd-utils: new prompt() helper for talking to the user)
introduced a rpmatch() call. However, uClibc versions older than (not yet
released) 0.9.34 don't have rpmatch() implementation. Add one.

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Acked-by: Mike Frysinger <vapier@gentoo.org>
11 years agomake_a_release.sh: suggest announcement e-mail
Artem Bityutskiy [Mon, 7 May 2012 08:44:38 +0000 (11:44 +0300)]
make_a_release.sh: suggest announcement e-mail

The 'make_a_release.sh' script appears to be extremely useful - I do not
forget things as I used to anymore (amending Makefile, signing, uploading
to the FTP server, etc). It is very useful that it suggest me exact commands
which I may just copy-past to my command line.

This patch improves the script and makes it suggest the e-mail announcement
which I may just copy-paste to my command line and the announcement will
be sent using 'git send-email' command. It will include all the interested
parties in CC.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoRelease mtd-utils-1.5.1 v1.5.1
Artem Bityutskiy [Mon, 7 Apr 2014 11:01:36 +0000 (14:01 +0300)]
Release mtd-utils-1.5.1

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoubiformat: correct "non-ubifs" warning message
Brian Norris [Mon, 31 Mar 2014 17:03:04 +0000 (10:03 -0700)]
ubiformat: correct "non-ubifs" warning message

UBI's raw flash scan actually scans for UBI data, not UBIFS data (there
*are* UBI users that are not UBIFS!), so correct the warning message.
This also matches the comment in libscan.h.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoubi-utils: Fix file descriptor leaks in libubi
Daniel van Gerpen [Sat, 29 Mar 2014 23:52:10 +0000 (00:52 +0100)]
ubi-utils: Fix file descriptor leaks in libubi

Amended by Artem.

Signed-off-by: Daniel van Gerpen <daniel@vangerpen.de>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agomkfs.ubifs: correct and improve LEB size error prints
Brian Norris [Sat, 22 Mar 2014 06:45:44 +0000 (23:45 -0700)]
mkfs.ubifs: correct and improve LEB size error prints

The error message is incorrect for "too small LEB size" -- we were
printing the minimum I/O size instead of the LEB size.

At the same time, let's print the max LEB size along with the message
for "too large LEB size", to be consistent and more helpful.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agoubi-utils: Add ubiblock tool
Ezequiel Garcia [Fri, 14 Mar 2014 14:25:24 +0000 (11:25 -0300)]
ubi-utils: Add ubiblock tool

With the addition of block device access to UBI volumes, we now
add a simple userspace tool to access the new ioctls.

Usage of this tool is as simple as it gets:

  $ ubiblock --create /dev/ubi0_0

will create a new block device /dev/ubiblock0_0, and

  $ ubiblock --remove /dev/ubi0_0

will remove the device.

Artem: slightly changed the header comment.

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
11 years agomtd-utils: Makefile: add LDFLAGS_mkfs.ubifs
Aaron Sierra [Fri, 27 Sep 2013 16:34:04 +0000 (11:34 -0500)]
mtd-utils: Makefile: add LDFLAGS_mkfs.ubifs

The build rule for mkfs.ubifs was missing an LDFLAGS_* variable like
mkfs.jffs2 had. This prevented mkfs.ubifs from being built against
explicit external libraries which is needed when cross-compiling.

This also adds UUIDCPPFLAGS and UUIDLDFLAGS variables to support the
mkfs.ubifs build.

Signed-off-by: Aaron Sierra <asierra@xes-inc.com>
11 years agoflash_erase: check the nand type
Huang Shijie [Thu, 24 Oct 2013 10:59:51 +0000 (18:59 +0800)]
flash_erase: check the nand type

Now, the MTD_NANDFLASH stands for SLC nand, and the MTD_MLCNANDFLASH
stands for the MLC nand.

This patch includes the stdbool.h, and changes the "isNAND" to boolean type,
and checks the right nand type for the MLC and SLC nand.

If the user wants to format a MLC nand for JFFS2, we will print out a message
to warn him, and exit right now.

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agocheck the MLC nand type
Huang Shijie [Tue, 20 Aug 2013 05:58:37 +0000 (13:58 +0800)]
check the MLC nand type

In the current code, the MTD_NANDFLASH stands for both the SLC and MLC.

In the kernel, the MTD_NANDFLASH only stands for the SLC now,
so in order to keep the logic unchanged, we should also check the MLC
NAND by MTD_MLCNANDFLASH.

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agoflash_otp_write: use helper to check the nand
Huang Shijie [Tue, 20 Aug 2013 05:58:36 +0000 (13:58 +0800)]
flash_otp_write: use helper to check the nand

Use the mtd_type_is_nand_user() helper to check if it is a NAND
(including SLC/MLC).

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agomtd: mtd-abi: add a helper to detect the nand type
Huang Shijie [Tue, 20 Aug 2013 05:58:35 +0000 (13:58 +0800)]
mtd: mtd-abi: add a helper to detect the nand type

The helper is for user applications, and it is just a copy of
the kernel helper: mtd_type_is_nand();

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
11 years agoadd the MTD_MLCNANDFLASH case
Huang Shijie [Tue, 20 Aug 2013 05:58:34 +0000 (13:58 +0800)]
add the MTD_MLCNANDFLASH case

The MTD_MLCNANDFLASH case is missed in the current code.
This patch adds it.

Signed-off-by: Huang Shijie <b32955@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
12 years agoubiupdatevol: add a --skip option
Mike Frysinger [Thu, 9 May 2013 17:59:24 +0000 (13:59 -0400)]
ubiupdatevol: add a --skip option

This already has a --size option for controlling how many bytes to read
from the input.  Add a --skip option to control the offset into the input
too.  This way people don't have to do `dd | ubiupdatevol`.

While we're here, I've fixed the types used with args.size and the read
loop so that they can hold the right sizes (like setting a 32bit+ size).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agonandwrite: amendment to Mike's --input-* series
Artem Bityutskiy [Mon, 1 Jul 2013 06:12:43 +0000 (09:12 +0300)]
nandwrite: amendment to Mike's --input-* series

This is a delta between v1 and v2 of the patches. I pushed v1 instead of
picking v2, and this is a fixup.

Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agonandwrite: add --input-{skip,size} options
Mike Frysinger [Thu, 9 May 2013 00:03:14 +0000 (20:03 -0400)]
nandwrite: add --input-{skip,size} options

If you have a file image and want to copy sub-portions out and into
NAND, there's no easy way to do that.  You can use dd to extract it
to a temp file, or pipe it to nandwrite 1 page at a time.  Both suck.

Add two new flags to explicitly set the size and offset of the input
file.  Seeking stdin isn't currently supported as I'm not sure it's
necessary.  It wouldn't be hard to add though...

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agonandwrite: clean up length types
Mike Frysinger [Thu, 9 May 2013 00:03:13 +0000 (20:03 -0400)]
nandwrite: clean up length types

We use 'int' in many places to represent offsets/sizes.  That obviously
does not play well with larger NAND devices on 32bit systems.  Instead,
use the right type as needed:
 - long long to represent the length of the image
 - use fstat() rather than lseek();lseek(); to get the length of the image
 - use size_t/ssize_t when working with read()
 - tweak the printf formats as needed

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agonand{dump, test, write}: clean up --help handling
Mike Frysinger [Wed, 8 May 2013 23:02:03 +0000 (19:02 -0400)]
nand{dump, test, write}: clean up --help handling

We should send the output to stdout when the user passes -h/--help
and then exit(0), but otherwise the output should go to stderr and
then exit(1).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agouse xstrdup in a few more places
Mike Frysinger [Wed, 8 May 2013 23:01:55 +0000 (19:01 -0400)]
use xstrdup in a few more places

These call sites either assume there is no failure (they deref the
pointer right away), or the exit themselves.  Use xstrdup() instead.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agomkfs.ubifs: allow reformatting of devices
Mike Frysinger [Wed, 8 May 2013 16:27:26 +0000 (12:27 -0400)]
mkfs.ubifs: allow reformatting of devices

Sometimes I want to re-initialize an existing ubifs, but the tool
currently bails out if the volume is already formatted.  Prompt the
user instead so they can decide.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agomtd-utils: new prompt() helper for talking to the user
Mike Frysinger [Wed, 8 May 2013 16:27:25 +0000 (12:27 -0400)]
mtd-utils: new prompt() helper for talking to the user

We've got a few tools that prompt the user for "yes/no" questions.
Add a common helper to simplify the various implementations.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agomove _GNU_SOURCE to the main makefile
Mike Frysinger [Wed, 8 May 2013 16:27:24 +0000 (12:27 -0400)]
move _GNU_SOURCE to the main makefile

A bunch of utils are relying on _GNU_SOURCE already.  The new prompt code
uses getline() which is now part of POSIX, but in older versions of glibc,
it was behind _GNU_SOURCE as it was a GNU extension.

This change doesn't actually tie us to glibc.  Only code that uses GNU
extensions does that.  It just kills warning when using older versions of
glibc.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
12 years agofix build errors w/newer kernel headers & glibc
Mike Frysinger [Wed, 8 May 2013 16:26:13 +0000 (12:26 -0400)]
fix build errors w/newer kernel headers & glibc

Building with linux-headers-3.9 and glibc-2.17 fails like so:
In file included from summary.h:15:0,
                 from jffs2dump.c:37:
/usr/include/linux/uio.h:16:8: error: redefinition of 'struct iovec'
 struct iovec
        ^
In file included from /usr/include/bits/fcntl-linux.h:38:0,
                 from /usr/include/bits/fcntl.h:61,
                 from /usr/include/fcntl.h:35,
                 from jffs2dump.c:25:
/usr/include/bits/uio.h:43:8: note: originally defined here
 struct iovec
        ^

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
12 years agoftl_check/ftl_format/nftldump: use existing mtd_swab.h header
Mike Frysinger [Wed, 8 May 2013 16:21:23 +0000 (12:21 -0400)]
ftl_check/ftl_format/nftldump: use existing mtd_swab.h header

We already have a helper header for swapping bytes as needed, so cut
the ftl tools over to that rather than re-implement things.

I don't actually have any devices with this kind of flash, so I can't
runtime test it.  But things *look* ok to me :).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>