rockchip: misc: read the correct number of bytes from the efuse
authorHeiko Stuebner <heiko@sntech.de>
Wed, 25 Sep 2019 18:40:56 +0000 (20:40 +0200)
committerKever Yang <kever.yang@rock-chips.com>
Sat, 28 Sep 2019 14:26:32 +0000 (22:26 +0800)
Originally the cpuid var the value gets read into was defined as
    u8 cpuid[RK3399_CPUID_LEN];
hence the sizeof(cpuid) would return the correct the correct number
of array elements.

With the move to a separate function cpuid becomes a pointer and
sizeof(cpuid) hence returns the pointer size - 8 in the arm64 case.

We do have the actual id length available as function param so use
it for actual amount of bytes to read.

Fixes: 04825384999f ("rockchip: rk3399: derive ethaddr from cpuid")
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Kever Yang<kever.yang@rock-chips.com>
arch/arm/mach-rockchip/misc.c

index fdb763cc53ccd9a38f4ad8cefe6a030122726aac..c0e4fdbc00fec8b5779b792d1f36940bb6a1dc9b 100644 (file)
@@ -70,7 +70,7 @@ int rockchip_cpuid_from_efuse(const u32 cpuid_offset,
        }
 
        /* read the cpu_id range from the efuses */
-       ret = misc_read(dev, cpuid_offset, cpuid, sizeof(cpuid));
+       ret = misc_read(dev, cpuid_offset, cpuid, cpuid_length);
        if (ret) {
                debug("%s: reading cpuid from the efuses failed\n",
                      __func__);