diff
+	int error = 0;
+	do {
 	...
50 		ret = qca_tlv_check_data(hdev, config, data, size, soc_type);
51 		if (ret) {
-52 			return ret;
+52 			error = ret;
+53 			break;
54 		}
 	...
+	} while (0);
85 	vfree(data);
-86 	return ret;
+86 	return error ? error : ret;
