summaryrefslogtreecommitdiff
path: root/util/nvmutil/nvmutil.c
AgeCommit message (Collapse)Author
16 hoursutil/nvmutil: don't check write checksums on partialLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
16 hoursutil/nvmutil: don't recurse err/close_filesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
16 hoursutil/nvmutil: restore pad before reading to itLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
16 hoursutil/nvmutil: don't show checksum on bad pwriteLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: always restore saved errnoLeah Rowe
the last lseek there is only there to reset state, so its errors are irrelevant. Signed-off-by: Leah Rowe <leah@libreboot.org>
17 hoursutil/nvmutil: post-write verification reportLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
18 hoursutil/nvmutil: optimise fsync / write checkLeah Rowe
write all at once, then sync all at once, then verify all at once. this increases the chancce that all data gets written first, in the case of power less, because fsync may take a while on some systems. Signed-off-by: Leah Rowe <leah@libreboot.org>
19 hoursutil/nvmutil: set EIO on bad memcmpLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
19 hoursutil/nvmutil: split up rw_gbe_file_partLeah Rowe
the post-verification stage deserves a function Signed-off-by: Leah Rowe <leah@libreboot.org>
19 hoursutil/nvmutil: detect partial gbe rwLeah Rowe
we already covered this in prw() which is what ultimately gets called, but still. it's logically correct not to check it here. Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: verify gbe contents after writingLeah Rowe
read it back and check. sync to disk first. Signed-off-by: Leah Rowe <leah@libreboot.org>
20 hoursutil/nvmutil: consistent typesLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: handle zero return in rw_file_exactLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: rename lseek_eintrLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: fix lseek eintr err checkLeah Rowe
it should be is equal, not not equal Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: rename err_eagain() to try_err()Leah Rowe
makes more sense in code Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: make EINTR configurable in prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
22 hoursutil/nvmutil: tidy up prw()Leah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: extra overflow check in prwLeah Rowe
compliant posix systems should never meet this check, but i put it here. spec != implementation Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: extra overflow check in prwLeah Rowe
do it at the very end Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: handle EAGAIN in prw()Leah Rowe
the cat function can be greatly simplified handle it conditionally, because not all functions should use it Signed-off-by: Leah Rowe <leah@libreboot.org>
23 hoursutil/nvmutil: split up rw_file_exactLeah Rowe
move the gbe-specific parts out of it what remains is a relatively generic function; a very conservative implementation, wrapping around libc functions but with a few additional safety checks. Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: add negative off check to prwLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: also do libc check on normal ioLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: properly reset lseek on errorLeah Rowe
don't return. set r instead. this will fall through and return the same way, but with proper reset. Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: move libc check to prw()Leah Rowe
this still gets done from rw_once, but it's generic enough that we want it in our prw() wrapper function. Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: remove io_args()Leah Rowe
most of it can be done in rw_file_once truly general checks have been moved to prw(), so that the function is more general purpose. Signed-off-by: Leah Rowe <leah@libreboot.org>
24 hoursutil/nvmutil: move EINTR handle to prw()Leah Rowe
this way, we now have a universal function that is reusable elsewhere, with the same redundancy. the rw_once and rw_exact functions still get this redundancy, through prw Signed-off-by: Leah Rowe <leah@libreboot.org>
25 hoursutil/nvmutil: simplify i/oLeah Rowe
we can just fall through to nrw and decide what function ta call there - either read/write immediately and return, or fall back to the portable positional implementation. this also means we don't have to call io_args in every function, since everything now runs through prw() Signed-off-by: Leah Rowe <leah@libreboot.org>
26 hoursutil/nvmutil: cast rnum pointer checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: allow ushort to be 32-bitLeah Rowe
no need to limit it here rename ux to uint. no number specified. Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: fix int assertLeah Rowe
it can be higher than 32-bit, it's fine the current check breaks some newer systems accordingly, u32 becomes ux, x meaning x bits Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: more assertsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: nicer typedefsLeah Rowe
now that i'm not using stdint, i can use sane typedef names Signed-off-by: Leah Rowe <leah@libreboot.org>
27 hoursutil/nvmutil: remove stdint feature macroLeah Rowe
and remove stdint i don't need it. i typedef these ints myself and i assert their size Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: safer offset check (use subtraction)Leah Rowe
don't allow overflows Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: check null pointer in io_argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: check overflow in io_argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: fix offset validationLeah Rowe
i didn't take into account partial writes, in io_args this fixes it unfortunately, this means i have to loosen the offset check a bit, but it's fine Signed-off-by: Leah Rowe <leah@libreboot.org>
29 hoursutil/nvmutil: restrict pointers in io_argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursutil/nvmutil: check gbe file type before writeLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursutil/nvmutil: check gbe file size before writeLeah Rowe
re-check. very unlikely since the program doesn't run for very long, but we have to check if the file has changed. this is a basic check of file size. we could probably check the contents too, but that would be overkill. Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursutil/nvmutil: lock gbe fileLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursutil/nvmutil: don't allow symlinksLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
31 hoursnvmutil: fix bound check in last commitLeah Rowe
i was fixing the size, but it should be calculated properly. Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutul: remove unused arg in io_argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: block bad offset in io_argsLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: stricter i/o arg checksLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: stricter i/o length checkLeah Rowe
Signed-off-by: Leah Rowe <leah@libreboot.org>
32 hoursutil/nvmutil: rename len to nrw in i/oLeah Rowe
consistent with prw() i prefer nrw (number of rw operations) Signed-off-by: Leah Rowe <leah@libreboot.org>