diff --git a/asoc/bengal.c b/asoc/bengal.c index 22677cb258f8..e82736e611da 100644 --- a/asoc/bengal.c +++ b/asoc/bengal.c @@ -6714,10 +6714,16 @@ static int msm_asoc_machine_probe(struct platform_device *pdev) } buf = nvmem_cell_read(cell, &len); nvmem_cell_put(cell); - if (IS_ERR_OR_NULL(buf) || len <= 0 || len > sizeof(32)) { + if (IS_ERR_OR_NULL(buf)) { dev_dbg(&pdev->dev, "%s: FAILED to read nvmem cell \n", __func__); goto ret; } + if (len <= 0 || len > sizeof(u32)) { + dev_dbg(&pdev->dev, "%s: nvmem cell length out of range: %d\n", + __func__, len); + kfree(buf); + goto ret; + } memcpy(&adsp_var_idx, buf, len); kfree(buf); va_disable = adsp_var_idx;