soc: rockchip: cpuinfo: fix bug: check efuse_buf before use it

Change-Id: I6318eba4e0281d54fe0d429425fce4ab6822eb46
Signed-off-by: Liang Chen <cl@rock-chips.com>
This commit is contained in:
Liang Chen
2021-02-08 16:19:28 +08:00
committed by Tao Huang
parent b05b22f9e8
commit c95de52509

View File

@@ -29,13 +29,15 @@ static int rockchip_cpuinfo_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct nvmem_cell *cell;
unsigned char *efuse_buf, buf[16];
size_t len;
size_t len = 0;
int i;
cell = nvmem_cell_get(dev, "cpu-code");
if (!IS_ERR(cell)) {
efuse_buf = nvmem_cell_read(cell, &len);
nvmem_cell_put(cell);
if (IS_ERR(efuse_buf))
return PTR_ERR(efuse_buf);
if (len == 2)
rockchip_set_cpu((efuse_buf[0] << 8 | efuse_buf[1]));
@@ -46,6 +48,8 @@ static int rockchip_cpuinfo_probe(struct platform_device *pdev)
if (!IS_ERR(cell)) {
efuse_buf = nvmem_cell_read(cell, &len);
nvmem_cell_put(cell);
if (IS_ERR(efuse_buf))
return PTR_ERR(efuse_buf);
if ((len == 1) && (efuse_buf[0] > rockchip_get_cpu_version()))
rockchip_set_cpu_version(efuse_buf[0]);
@@ -61,6 +65,8 @@ static int rockchip_cpuinfo_probe(struct platform_device *pdev)
}
efuse_buf = nvmem_cell_read(cell, &len);
nvmem_cell_put(cell);
if (IS_ERR(efuse_buf))
return PTR_ERR(efuse_buf);
if (len != 16) {
kfree(efuse_buf);