Commit Graph

4077 Commits

Author SHA1 Message Date
Leah Rowe d6658eb062 util/nvmutil: fix errno zero on exit return
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-22 03:15:41 +01:00
Leah Rowe 40cb95b15e nvmutil: fix bad return status on error
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-22 02:54:00 +01:00
Leah Rowe 4bf88a8081 nvmutil: use uintptr for gbe. check regular file.
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-22 02:53:15 +01:00
Leah Rowe 48e949263b switch spkmodem_decode back to spkmodem_recv
this version is more tested. i'll merge _decode back
once it's better tested. it contains a lot of invasive
changes, whereas recv is much closer to the original GNU
code that i inherited, that i also know works quite well.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 19:11:45 +01:00
Leah Rowe 7b5349e85d disable lbutils on non-linux systems
i should probably test musl as well, on linux

libreboot-utils is stable on the glibc systems i tested
with linux. it is quite buggy on bsd systems.

it's irresponsible to let users compile this until i've
properly tested the code. putting this error in for now.

i made lbmk use the old nvmutil version for now, and retro
fitted several improvements to i/o there from lbutils,
changes that i know are stable on bsd.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 19:05:26 +01:00
Leah Rowe b947150f8a nvmutil: don't rely on errno for errors
adapted from the changes made in lbutils

i'm just patching this crappy code. lbutils doesn't
work properly on openbsd yet, and i just want nvmutil
to work properly there, so i'm using the old code for
now, on openbsd.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 19:02:29 +01:00
Leah Rowe 4bf96fbc1e nvmutil-standalone: add eintr safety
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 17:38:31 +01:00
Leah Rowe dec63fc274 add gitignore
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 17:03:18 +01:00
Leah Rowe 2d33754a5c fix make file
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 13:54:01 +01:00
Leah Rowe 6d3341c637 nope. use nvmutil from libreboot 26.01
guaranteed not to break on openbsd (tm)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 13:50:54 +01:00
Leah Rowe b1b1d2cf0c remove pledge in nvmutil
don't fix it for now. this version was buggy.

i'm only using nvmutil for now, until i properly
fix all the memory issues in lbutils on openbsd.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 13:48:27 +01:00
Leah Rowe 6f9f0f7321 fix nvmutil Makefile for openbsd
same fix i did for lbutils

the nvmutil version is the same one used before
lbutils was introduced. just before.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 13:44:36 +01:00
Leah Rowe 7f4f07fc40 use old nvmutil for now, in lbmk
i'm trying to make nvmutil work on openbsd. the new code
in lbutils is a bit buggy, likely somewhere in mkhtemp.
i'm still debugging it.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 13:39:29 +01:00
Leah Rowe 4b5aca8ff8 now mkhtemp works on openbsd!
yay

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 06:42:08 +01:00
Leah Rowe e097eb5483 lbutils: don't use stack memory for path strings
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 06:39:50 +01:00
Leah Rowe 7faf014a84 further makefile cleanup in lbutils
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 06:09:08 +01:00
Leah Rowe 0205c0e6b0 lbutils: remove xpledge/xunveil, just call them direct
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 05:54:50 +01:00
Leah Rowe 7ff5d925bf fix bsd
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 05:49:32 +01:00
Leah Rowe 59fefd9c57 tidy up lbutils makefile
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-21 05:47:25 +01:00
Leah Rowe 7619bfed65 lbutils/mkhtemp: correct return value check
check if above or equal to zero, except where
counterindicated. this is the usual way on unix,
where a command returns -1 on error, or above/equal
to zero on success.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-10 22:59:08 +01:00
Leah Rowe 9dab2ffa29 lbutils/mkhtemp: use openat_on_eintr
missing EINTR handling fixed

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-10 22:59:08 +01:00
Leah Rowe f055809c17 lbutils/file: only override EEXIST if not set
in the linux fast path, we are universally overriding
errno with EEXIST, which pollutes errno in case of
debugging under fault condition. this is inconsistent
with posix and also leah.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-10 22:59:08 +01:00
Leah Rowe fc3c7b9c3e lbutils/file: tidy up mkhtemp_tmpfile_linux
make failure more obvious. no behavioural change.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-10 22:59:08 +01:00
Leah Rowe 7eecc42b92 Merge pull request 'supermicro x11ssh_f: Enable SATA hotplug' (#419) from noisytoot/supermicro-x11ssh-f-sata-hotplug into master
Reviewed-on: https://codeberg.org/libreboot/lbmk/pulls/419
2026-04-10 23:57:20 +02:00
Ron Nazarov 4a7feba7cd supermicro x11ssh_f: Enable SATA hotplug
See the commit message in the patch:

Before this patch, hotplugging only worked to replace drives (if you
tried to plug a drive into a SATA port that no drive was plugged in to
at boot, it wouldn't be detected) and you'd have to manually rescan
the bus (echo "- - -" > /sys/class/scsi_host/host*/scan) to make
plugs/unplugs get detected by the operating system.

Now, hotplugging works for all ports (tested and working on Supermicro
X11SSH-LN4F) and there's no need to manually rescan (it sometimes
takes a few seconds for unplugs to be detected, but plugs are detected
instantly).

Also submitted upstream as https://review.coreboot.org/c/coreboot/+/91824
2026-04-10 20:21:53 +01:00
Leah Rowe 63ec707698 lbutils/file: ignore close err if errno is EINTR
but DONT LOOP IT. see comment.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 21:05:08 +01:00
Leah Rowe 2d69d45e26 remove dead code
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 20:36:05 +01:00
Leah Rowe 6b67e12428 lbutils/file: don't eintr loop fcntl
not indicated. the way we use it is basically like
stat, to check that a file exists / is a file.

just err the fuck out

nuance: SETLK is non-blocking (no wait).
we should loop on SETLKW, but we don't use that.
in this codebase, we use SETLK for locking a
tmpfile, but because of race conditions and
wanting to make another file quickly, we just
try again with a newly generated name, with a
certain number of retries, so we justt use SETLK

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 20:17:26 +01:00
Leah Rowe a6d2de4e88 libreboot-utils: don't loop lseek on EINTR
not necessary.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 19:17:32 +01:00
Leah Rowe d12ca7fd8e lbutils/file: don't use undefined USE_OPENAT
clang -Weverything told me to

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 19:09:26 +01:00
Leah Rowe 736a2504bb lbutils/file: don't loop EINTR on close()
state is undefined after EINTR. just abort universally.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 17:43:43 +01:00
Leah Rowe 249ae57c29 lbutils/file: fix implicit conversion on openat2
as dictated by clang -Weverything

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 17:33:01 +01:00
Leah Rowe c48a962eaf lbutils/file: fix overflow check
clang -Weverything:

lib/file.c:165:49: warning: implicit conversion changes signedness: 'ssize_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion]
  165 |                 if (if_err(rval >= 0 && (size_t)rval > (nrw - rc), EOVERFLOW))

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 17:29:28 +01:00
Leah Rowe 3d24aa98f9 lbutils: remove more unused macros
detected via clang -Weverything

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 16:50:50 +01:00
Leah Rowe ae5e74554a lbutils/file: remove unused macro
not needed here (detected with clang -Weverything)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 16:49:19 +01:00
Leah Rowe fb81b7b736 lbutils/file: rename rw_file_exact
call it rw_exact, so that it's closer to
the name rw. it matches naming more closely;
the alternative was to call rw rw_file

but read/write can handle more than just files!

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 16:20:12 +01:00
Leah Rowe f68cedf202 libreboot-utils/file: never retry file rw on zero
even with a timer, it's possible that on a buggy system,
we may keep writing even though the outcome is zero. if
a system comes back with zero bytes written, that is a
fatal bug and we should stop.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 16:19:46 +01:00
Leah Rowe 5b465d3af6 lbutils: remove -Werror
the actual warn flags are still there.

leaving Werror in production is ill advised.

i can (and will) still fix build errors as
i see them.

as a result of this, i now also see more info
when i type:

make strict

(this uses clang with -Weverything)

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 15:02:52 +01:00
Leah Rowe 9dc141bafa lbutils/rand: close fd on urandom error
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 14:35:24 +01:00
Leah Rowe a879114734 lbutils: remove rw on_eintr functions. just use rw
rw is enough. i unified everything there.

next commit will remove rw_type and instead
run positional i/o depending on whether the
offset is zero. i'm simplifying the API a lot.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 14:29:39 +01:00
Leah Rowe 229a283604 lbutils: portable options in Makefile
add options for building with urandom+openat and
arc4+openat. useful for emulating a bsd / old linux
environment in modern linux distros, for portability
testing.

these options are not recommended for everyday use.
just use make without any special options, and the
code has build-time OS detection for features like
randomisation/openat2.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 13:03:30 +01:00
Leah Rowe 4e72555ac7 lbutils: support using arc4random on linux
-DUSE_ARC4=1

use that

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 12:44:38 +01:00
Leah Rowe 44004191cb lbutils: don't set USE_OPENAT and USE_URANDOM
these can be set explicitly in the compiler flags,
e.g.

make CC="cc -DUSE_OPENAT=1 -DUSE_URANDOM=1"

these options, if set to 1, will cause you to use
the code as if it were running on non-linux systems
such as openbsd. of course, some differences will
still exist, but this is useful for portability
testing when compiling on linux.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 12:30:55 +01:00
Leah Rowe 2c40ad7816 lbutils: only use GNU SOURCE for syscall
and remove manual prototypes; fchmod, realpath
and so on rely on the _XOPEN_SOURCE macro.

the POSIX macro wasn't needed: _XOPEN_SOURCE
is sufficient.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 11:52:53 +01:00
Leah Rowe 716140b80f libreboot-utils: don't use the GNU SOURCE macro
use the POSIX one

declare prototypes where necessary.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 11:00:58 +01:00
Leah Rowe b7b34413e7 libreboot-utils: fix clang hell mode
Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 10:23:48 +01:00
Leah Rowe d100ea1d2f libreboot-utils: always use strict cc flags
otherwise, i will end up with a mess like the
one i recently fixed.

we always want to use correct C. the current
spec is set to c99, with -pedantic turned on.

flags now:

-Os -Wall -Wextra -std=c99 -pedantic -Werror

if you do: make hell, you get (uses clang):
-Os -Wall -Wextra -std=c99 -pedantic -Werror -Weverything

i initially loosened up the Makefile rules, so
that the code would be more "portable", but
every compiler worth caring about has these
flags, and turning them on is advisable,
especially pedantic and -std, because you want
to have some guarantee that the compiler is
generating correct code; if the standard is
left ambiguous, you could be introducing subtle
bugs when people compile it, because who knows
what spec the compiler is using?

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 10:11:30 +01:00
Leah Rowe 861f56375a libreboot-utils: fix ALL compiler warnings
i wasn't using strict mode enough in make:

make strict

now it compiles cleanly. mostly removing
unused variables, fixing implicit conversions,
etc.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 10:03:41 +01:00
Leah Rowe d91dd0ad81 fix coreboot/fam15h build error on arch
In file included from /home/user/lbmk/src/coreboot/fam15h/util/cbfstool/partitioned_file.h:19,
                 from /home/user/lbmk/src/coreboot/fam15h/util/cbfstool/partitioned_file.c:16:
/home/user/lbmk/src/coreboot/fam15h/util/cbfstool/common.h:34:16: error: expected ‘)’ before ‘__attribute__’
   34 | #define unused __attribute__((unused))
      |                ^~~~~~~~~~~~~
In file included from /home/user/lbmk/src/coreboot/fam15h/util/cbfstool/common.h:25:
/home/user/lbmk/src/coreboot/fam15h/src/commonlib/include/commonlib/helpers.h:137:40: error: expected identifier or ‘(’ before ‘)’ token
  137 | #define __unused __attribute__((unused))

^ this removes that error

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 08:25:54 +01:00
Leah Rowe 9cd86eb584 coreboot/default: fix vboot build error on arch
or any newer linux really.

new gcc is much stricter about const chars.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-04-01 08:13:56 +01:00