summaryrefslogtreecommitdiff
path: root/tools/env
AgeCommit message (Collapse)AuthorFilesLines
2019-09-24fw_env: fix build errorPierre-Jean Texier1-1/+2
The following error appears: tools/env/fw_env.c:1149:25: error: lvalue required as unary ‘&’ operand rc = write(fd, &ENV_REDUND_OBSOLETE, sizeof(ENV_REDUND_OBSOLETE)); Fixes: d3716dd ("env: Rename the redundancy flags") Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io> Tested-by: Joris Offouga <offougajoris@gmail.com> Tested-by: Heiko Schocher <hs@denx.de> Suggested-by: Heiko Schocher <hs@denx.de> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
2019-09-24fw_env: remove duplicated definitionsPierre-Jean Texier1-7/+0
Since commit d3716dd ("env: Rename the redundancy flags"), the definitions of ENV_REDUND_OBSOLETE & ENV_REDUND_ACTIVE was moved to env.h. Fixes: tools/env/fw_env.c:122:22: error: ‘ENV_REDUND_ACTIVE’ redeclared as different kind of symbol static unsigned char ENV_REDUND_ACTIVE = 1; ^~~~~~~~~~~~~~~~~ In file included from tools/env/fw_env.c:13: include/env.h:63:2: note: previous definition of ‘ENV_REDUND_ACTIVE’ was here ENV_REDUND_ACTIVE = 1, ^~~~~~~~~~~~~~~~~ tools/env/fw_env.c:127:22: error: ‘ENV_REDUND_OBSOLETE’ redeclared as different kind of symbol static unsigned char ENV_REDUND_OBSOLETE; ^~~~~~~~~~~~~~~~~~~ In file included from tools/env/fw_env.c:13: include/env.h:62:2: note: previous definition of ‘ENV_REDUND_OBSOLETE’ was here ENV_REDUND_OBSOLETE = 0, Signed-off-by: Pierre-Jean Texier <pjtexier@koncepto.io> Tested-by: Joris Offouga <offougajoris@gmail.com> Tested-by: Heiko Schocher <hs@denx.de> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
2019-08-11env: Rename the redundancy flagsSimon Glass1-10/+13
Add an ENV prefix to these two flags so that it is clear what they relate to. Also move them to env.h since they are part of the public API. Use an enum rather than a #define to tie them together. Signed-off-by: Simon Glass <sjg@chromium.org>
2019-08-11env: Move env_set() to env.hSimon Glass3-0/+3
Move env_set() over to the new header file. Acked-by: Joe Hershberger <joe.hershberger@ni.com> Signed-off-by: Simon Glass <sjg@chromium.org>
2019-06-20fw_env: Add missing write failure checkAlex Kiernan1-1/+1
If flash_write fails, whilst we propagate this up to our caller, we need to avoid swapping in the new file (if we're on a filesystem) in this case. Fixes: dbc34323796b ("tools: env: Implement atomic replace for filesystem") Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2019-05-05env: add missing newlinePhilip Molloy1-1/+1
Signed-off-by: Philip Molloy <philip@philipmolloy.com>
2019-04-26fw_env: Fix double freeBjörn Stenberg1-1/+1
addr0 is being freed twice, leading to segmentation fault Signed-off-by: Björn Stenberg <bjorn@haxx.se>
2018-09-10include/version.h: workaround sysroot inc orderMatt Weber1-1/+2
On some systems the host system or even the cross sysroot can contain a version.h. This leads to the wrong file being picked up and a PLAIN_VERSION undefined error. This workaround symlinks the version.h into the tool folder to allow reordering of search folders. Fixes http://autobuild.buildroot.net/results/770/7702d5df36a6532aafdbe6e9e62709bbfa058b54/build-end.log http://autobuild.buildroot.net/results/e34/e3401027d2fb3ce565ca9e2456a427afd3610a87/build-end.log ... additional can be found with these queries ... http://autobuild.buildroot.net/?reason=uboot-tools-2018.03 http://autobuild.buildroot.net/?reason=uboot-tools-2018.05 Upstream: pending Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
2018-07-01Revert "fw_printenv: Don't bail out directly after one env read error"Tom Rini1-15/+9
As pointed out by Wolfgang Denk, the problem with this fix is that while interactive users will see that we have found one part of the environment failed and are using the other, progmatic use will not see this and can lead to problems. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-06-27fw_printenv: Don't bail out directly after one env read errorJoe Hershberger1-9/+15
When using a redundant environment a read error should simply mean to not use that copy instead of giving up completely. The other copy may be just fine. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
2018-06-13u-boot: Fix several typosShyam Saini1-2/+2
's/environemnt/environment/' and 's/Environemnt/Environment/' Signed-off-by: Shyam Saini <shyam@amarulasolutions.com>
2018-06-13tools: env: Use getline rather than fgets when reading config/scriptAlex Kiernan1-19/+21
When reading the config file, or a script file, use getline rather than fgets so line lengths aren't limited by the size of a compiled in buffer (128 characters for config, 1024 for scripts). Rename 'dump' to 'line' so it's clear we're working with a line of text. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini5-11/+5
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-04-10fw_printenv: Fix crash due to incorrect size for malloc'ed string.Kristian Amlie1-1/+1
Using sizeof gives the size of the pointer only, not the string. This could easily lead to crashes when using -l argument. Signed-off-by: Kristian Amlie <kristian.amlie@northern.tech>
2018-03-19tools: env: Implement atomic replace for filesystemAlex Kiernan1-3/+80
If the U-Boot environment is stored in a regular file and redundant operation isn't set, then write to a temporary file and perform an atomic rename. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-03-19tools: env: Refactor write path of flash_io()Alex Kiernan1-42/+50
Extract write path of flash_io() into a separate function. This patch should be a functional no-op. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com> Reviewed-by: Stefano Babic <sbabic@denx.de>
2018-03-19tools: env: Fix CamelCasing style violationAlex Kiernan1-9/+9
Replace HaveRedundEnv with have_redund_env to fix style violation. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-03-19tools: env: Pass through indentAlex Kiernan1-176/+170
Pass tools/env/fw_env.c through indent to correct style violations. This commit consists of only one non-whitespace change: tools/env/fw_env.c:549: error: do not use assignment in if condition Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-03-05tools/env: allow equal sign as key value separationStefan Agner1-1/+1
Treat the first equal sign as a key/value separation too. This makes the script files compatible with mkenvimage input file format. It won't support variables with equal signs anymore, but this seems not really like a loss. Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
2018-02-14Fix --noheader on fw_printenvAlex Kiernan2-2/+2
The single argument `--noheader' is expecting isn't taken from getopt parsing, but instead from the remaining argv arguments. Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-01-28tools: remove unused retJelle van der Waa1-2/+0
Remove unused ret from fw_env_flush. Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-11-29tools: env: Add support for direct read/write UBI volumesS. Lockwood-Childs2-2/+261
Up to now we were able to read/write environment data from/to UBI volumes only indirectly by gluebi driver. This driver creates NAND MTD on top of UBI volumes, which is quite a workaroung for this use case. Add support for direct read/write UBI volumes in order to not use obsolete gluebi driver. Forward-ported from this patch: http://patchwork.ozlabs.org/patch/619305/ Original patch: Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> Forward port: Signed-off-by: S. Lockwood-Childs <sjl@vctlabs.com>
2017-11-21env: Remove CONFIG_ENV_AES supportTom Rini5-100/+1
This support has been deprecated since v2017.09 due to security issues. We now remove this support. Signed-off-by: Tom Rini <trini@konsulko.com>
2017-11-06tools: env: allow to print U-Boot versionStefan Agner1-3/+11
The fw_env utility family has a default environment compiled in which ties it quite strongly to the U-Boot source/config it has been built with. Allow to display the U-Boot version it has been built with using the -v/--version argument. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> Reviewed-by: Lukasz Majewski <lukma@denx.de>
2017-10-16tools: env: Add embedded.c to .gitignoreBin Meng1-0/+1
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
2017-09-05env: Add 'envtools' target to 'make help'Simon Glass1-0/+3
The target is not currently mentioned anywhere. Add it to the help so people can find it. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-09-05env: Fix operation of 'make environ'Simon Glass1-2/+2
This was broken by the recent environment refactoring. Specifically: $ make environ scripts/Makefile.build:59: tools/environ/Makefile: No such file or directory make[1]: *** No rule to make target 'tools/environ/Makefile'. Stop. make: *** [Makefile:1469: environ] Error 2 Fix this by updating the Makefile and adjusting the #include filesnames in two C files. Fixes: ec74f5f (Makefile: Rename 'env' target to 'environ') Reported-by: Måns Rullgård <mans@mansr.com> Signed-off-by: Simon Glass <sjg@chromium.org>
2017-09-05env: Fix out of tree building of tools-allTom Rini3-3/+3
With the move of environment code from common/ to env/ a number of changes needed to be made to various make targets. We missed updating some of the files required for out of tree builds of the tools. Correct the 'environ' target to know that we need to work under tools/env/ still (not tools/environ/) and then update the wrappers in env_attr.c and env_flags.c to point to the new correct file. Reported-by: Peter Robinson <pbrobinson@gmail.com> Tested-by: Peter Robinson <pbrobinson@gmail.com> Signed-off-by: Tom Rini <trini@konsulko.com>
2017-09-03fix: fw_env: Prevent writing error message on special files, which don't ↵Lukasz Majewski1-2/+4
support fsync According to fsync specification [1] some special files (e.g., a pipe, FIFO, or socket) don't support synchronization and return either EROFS or EINVAL. On the linux side the sys_fsync -> do_fsync() checks if the requested file has f_op->fsync defined. If not it returns EINVAL [2]. This commit prevents writing error messages for files (devices), which do not support fsync(). [1] - http://man7.org/linux/man-pages/man2/fsync.2.html [2] - http://elixir.free-electrons.com/linux/v4.13-rc6/source/fs/sync.c#L183 Signed-off-by: Lukasz Majewski <lukma@denx.de> Acked-by: Michael Heimpold <mhei@heimpold.de>
2017-08-16env: Rename setenv() to env_set()Simon Glass3-7/+7
We are now using an env_ prefix for environment functions. Rename setenv() for consistency. Also add function comments in common.h. Suggested-by: Wolfgang Denk <wd@denx.de> Signed-off-by: Simon Glass <sjg@chromium.org>
2017-07-22tools/fw_env: use fsync to ensure that data is physically storedMichael Heimpold1-0/+12
Closing a file descriptor does not guarantee that the data has been successfully saved to disk, as the kernel might defer the write. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
2017-04-18tools/env: avoid memory leak in fw_setenvxypron.glpk@gmx.de1-0/+3
If realloc fails we should release the old buffer. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-04-12env: fix memory leak in fw_env routinesStefano Babic2-19/+70
fw_env_open allocates buffers to store the environment, but these buffers are never freed. This becomes quite nasty using the fw_ tools as library, because each access to the environment (even just reading a variable) generates a memory leak equal to the size of the environment. Fix this renaming fw_env_close() as fw_env_flush(), because the function really flushes the environment from RAM to storage, and add a fw_env_close function to free the allocated resources. Signed-off-by: Stefano Babic <sbabic@denx.de>
2017-04-12env: add a version number to check APIStefano Babic1-0/+15
Changes in the environment library are difficult to tracked by programs using the library. Add simply an API version number that must be increased each time when the API is changed. This can be detected and a program can work with different versions of the library. Signed-off-by: Stefano Babic <sbabic@denx.de>
2017-04-12env: split fw_env.h in public and private partsStefano Babic4-50/+58
Move U-Boot private data into a separate file. This lets export fw_env.h to be used by external programs that want to change the environment using the library built in tools/env. Signed-off-by: Stefano Babic <sbabic@denx.de>
2017-04-12Rename aes.h to uboot_aes.hStefano Babic1-1/+1
aes.h is a too generic name if this file can be exported and used by a program. Rename it to avoid any conflicts with other files (for example, from openSSL). Signed-off-by: Stefano Babic <sbabic@denx.de>
2017-03-14tools: fix cross-compiling tools when HOSTCC is overriddenMasahiro Yamada1-1/+1
Richard reported U-Boot tools issues in OpenEmbedded/Yocto project. OE needs to be able to change the default compiler. If we pass in HOSTCC through the make command, it overwrites all HOSTCC instances, including ones in tools/Makefile and tools/env/Makefile, which breaks "make cross_tools" and "make env", respectively. Add "override" directives to avoid overriding HOSTCC instances that really need to point to the cross-compiler. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reported-by: Richard Purdie <richard.purdie@linuxfoundation.org> Reviewed-by: Simon Glass <sjg@chromium.org>
2016-11-28tools/env: fix environment alignment tests for block devicesMax Krummenacher1-27/+33
commit 183923d3e412500bdc597d1745e2fb6f7f679ec7 enforces that the environment must start at an erase block boundary. For block devices the sample fw_env.config does not mandate a erase block size for block devices. A missing setting defaults to the full env size. Depending on the environment location the alignment check now errors out for perfectly legal settings. Fix this by defaulting to the standard blocksize of 0x200 for environments stored in a block device. That keeps the fw_env.config files for block devices working even with that new check. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2016-10-08env: tool: add command line option to input lockfile pathB, Ravi2-6/+30
The default lockname is set to /var/lock. This limits the usage of this application where OS uses different lockfile location parameter. For example, In case of android, the default lock path location is /data. Hence by providing the command line option to input lockfile path will be useful to reuse the tool across multiple operating system. usage: ./fw_printenv -l <lockfile path> Signed-off-by: Ravi Babu <ravibabu@ti.com>
2016-10-06Suspected Spam: Do not open attachements![PATCH 4/6] tools/env: ↵Andreas Fenkart1-7/+8
flash_write_buf: enforce offset to be start of environment This allows to take advantage of the environment being block aligned. This is not a new constraint. Writes always start at the begin of the environment, since the header with CRC/length as there. Every environment modification requires updating the header Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-10-06tools/env: lookup dev_type directly from flash_read_buf/flash_write_bufAndreas Fenkart1-15/+13
flash_write_buf already looks up size/offset/#sector from struct envdev_s. It can look up mtd_type as well. Same applies to flash_read_buf. Makes the interface simpler Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-10-06tools/env: pass bad block offset by valueAndreas Fenkart1-5/+5
the offset is not modified by linux ioctl call see mtd_ioctl{drivers/mtd/mtdchar.c} Makes the interface less ambiguous, since the caller can now exclude a modification of blockstart Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-10-06tools/env: factor out environment_end functionAndreas Fenkart1-17/+15
instead of adhoc computation of the environment end, use a function with a proper name Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-08-20tools/env: soften warning about erase block alignmentAndreas Fenkart1-1/+1
addon 183923d3e MMC/SATA have no erase blocks, only blocks. Hence the warning about erase block alignment might be confusing in such environment. Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2016-08-20tools/env: return with error if redundant environments have unequal sizeAndreas Fenkart1-3/+2
For double buffering to work, the target buffer must always be big enough to hold all data. This can only be ensured if buffers are of equal size, otherwise one must be smaller and we risk data loss when copying from the bigger to the smaller buffer. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2016-08-15tools/env: ensure environment starts at erase block boundaryAndreas Fenkart1-0/+12
56086921 added support for unaligned environments access. U-boot itself does not support this: - env_nand.c fails when using an unaligned offset. It produces an error in nand_erase_opts{drivers/mtd/nand/nand_util.c} - in env_sf/env_flash the unused space at the end is preserved, but not in the beginning. block alignment is assumed - env_sata/env_mmc aligns offset/length to the block size of the underlying device. data is silently redirected to the beginning of a block There is seems no use case for unaligned environment. If there is some useful data at the beginning of the the block (e.g. end of u-boot) that would be very unsafe. If the redundant environments are hosted by the same erase block then that invalidates the idea of double buffering. It might be that unaligned access was allowed in the past, and that people with legacy u-boot are trapped. But at the time of 56086921 it wasn't supported and due to reasons above I guess it was never introduced. I prefer to remove that (unused) feature in favor of simplicity Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com> Acked-by: Stefan Agner <stefan.agner@toradex.com>
2016-07-26tools: env: Fix format warnings in debugMarcin Niestroj1-7/+10
Format warnings (-Wformat) were shown in printf() calls after defining DEBUG macro. Update format string and explicitly cast variables to suppress all warnings. Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com>
2016-07-22tools/env: reuse fw_getenv in fw_printenv functionAndreas Fenkart1-27/+17
Try to avoid adhoc iteration of the environment. Reuse fw_getenv to find the variables that should be printed. Only use open-coded iteration when printing all variables. For backwards compatibility, keep emitting a newline when printing with value_only. Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-07-22tools/env: move envmatch further up in file to avoid forward declarationsAndreas Fenkart1-20/+18
forward declaration not needed when re-ordered Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>
2016-07-22tools/env: kernel-doc for fw_printenv, fw_getenv and fw_parse_scriptAndreas Fenkart2-2/+115
there are two groups of functions: - application ready tools: fw_setenv/fw_getenv/fw_parse_script these are used, when creating a single binary containing multiple tools (busybox like) - file access like: open/read/write/close above functions are implemented on top of these. applications can use those to modify several variables without creating a temporary batch script file tested with "./scripts/kernel-doc -html -v tools/env/fw_env.h" Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Andreas Fenkart <andreas.fenkart@digitalstrom.com>