mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 06:04:23 +08:00
ee424f7d39
The Western Digital MyBook Live (PowerPC 464/APM82181)
has a set of redundant u-boot-env. Loading up the driver
the following error:
| u_boot_env: Invalid calculated CRC32: 0x4f8f2c86 (expected: 0x98b14514)
| u_boot_env: probe of partition@1e000 failed with error -22
Looking up the userspace libubootenv utilities source [0],
it looks like the "mark" or "flag" is not part of the
crc32 sum... which is unfortunate :(
|static int libuboot_load(struct uboot_ctx *ctx)
|{
|[...]
| if (ctx->redundant) {
| [...]
| offsetdata = offsetof(struct uboot_env_redund, data);
| [...] //-----^^
| }
| usable_envsize = ctx->size - offsetdata;
| buf[0] = malloc(bufsize);
|[...]
| for (i = 0; i < copies; i++) {
| data = (uint8_t *)(buf[i] + offsetdata);
| uint32_t crc;
|
| ret = devread(ctx, i, buf[i]);
| [...]
| crc = *(uint32_t *)(buf[i] + offsetcrc);
| dev->crc = crc32(0, (uint8_t *)data, usable_envsize);
|
[0] https://github.com/sbabic/libubootenv/blob/master/src/uboot_env.c#L951
Fixes:
|
||
---|---|---|
.. | ||
apple-efuses.c | ||
bcm-ocotp.c | ||
brcm_nvram.c | ||
core.c | ||
imx-iim.c | ||
imx-ocotp-scu.c | ||
imx-ocotp.c | ||
jz4780-efuse.c | ||
Kconfig | ||
lan9662-otpc.c | ||
layerscape-sfp.c | ||
lpc18xx_eeprom.c | ||
lpc18xx_otp.c | ||
Makefile | ||
meson-efuse.c | ||
meson-mx-efuse.c | ||
microchip-otpc.c | ||
mtk-efuse.c | ||
mxs-ocotp.c | ||
nintendo-otp.c | ||
qcom-spmi-sdam.c | ||
qfprom.c | ||
rave-sp-eeprom.c | ||
rmem.c | ||
rockchip-efuse.c | ||
rockchip-otp.c | ||
sc27xx-efuse.c | ||
snvs_lpgpr.c | ||
sprd-efuse.c | ||
stm32-romem.c | ||
sunplus-ocotp.c | ||
sunxi_sid.c | ||
u-boot-env.c | ||
uniphier-efuse.c | ||
vf610-ocotp.c | ||
zynqmp_nvmem.c |