summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-04-06 20:22:58 +0100
committerLeah Rowe <leah@libreboot.org>2023-04-06 20:22:58 +0100
commit8771551162844731cc843391ed645f387dfd0eb0 (patch)
treebc765adcb68764f229d7e55994f21cb096a05852
parent9372ae3ddcb63377b1ab0b77e4db4086deef3244 (diff)
util/nvmutil: remove duplicated logic
the byteswap() function is used for big endian host compatibility, but it can also be used to swap words in the stored mac address
-rw-r--r--util/nvmutil/nvmutil.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c
index a58f66a1..508f76ee 100644
--- a/util/nvmutil/nvmutil.c
+++ b/util/nvmutil/nvmutil.c
@@ -189,19 +189,12 @@ cmd_setmac(const char *strMac)
if (parseMacAddress(strMac, mac) == -1)
err(errno = ECANCELED, "Bad MAC address");
- /* nvm words are little endian, *except* the mac address. swap bytes */
- for (int w = 0; w < 3; w++) {
- uint8_t *b = (uint8_t *) &mac[w];
- b[0] ^= b[1];
- b[1] ^= b[0];
- b[0] ^= b[1];
- }
-
for (int partnum = 0; partnum < 2; partnum++) {
if (!validChecksum(partnum))
continue;
for (int w = 0; w < 3; w++)
setWord(w, partnum, mac[w]); /* do not use memcpy! */
+ byteswap(6, partnum); /* mac words are stored big-endian */
part = partnum;
cmd_setchecksum();
}