mirror of
https://github.com/torvalds/linux.git
synced 2026-08-07 07:54:18 +02:00
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 | ||