asoc: Fix a memory leak issue when nvmem read returns invalid length

When nvmem cell read returns invalid length the allocated buffer
is not freed. Free the buffer in this scenario to fix
memory leak issue.

Change-Id: I68585c1dd45b0a40c471bf42dea201cd0ebb497f
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
diff --git a/asoc/bengal.c b/asoc/bengal.c
index 4c6befd..1617d36 100644
--- a/asoc/bengal.c
+++ b/asoc/bengal.c
@@ -6814,10 +6814,16 @@
 	}
 	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);
 	pdata->va_disable = adsp_var_idx;