asoc: codecs: Fix NULL pointer dereference in wcd9xxx slim probe
When slim device is NULL or pdata allocation fails in wcd9xxx
slim probe, devm_kfree uses slim device leading to a NULL pointer
dereference. Fix this by returning from probe in these scenarios.
Change-Id: I232661d8ba0320469bc4486e7dd82713e9b53d73
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
diff --git a/asoc/codecs/wcd9xxx-core.c b/asoc/codecs/wcd9xxx-core.c
index fd2e933..0665ba6 100644
--- a/asoc/codecs/wcd9xxx-core.c
+++ b/asoc/codecs/wcd9xxx-core.c
@@ -1284,19 +1284,15 @@
int ret = 0;
int intf_type;
+ if (!slim)
+ return -EINVAL;
+
intf_type = wcd9xxx_get_intf_type();
wcd9xxx = devm_kzalloc(&slim->dev, sizeof(struct wcd9xxx),
GFP_KERNEL);
- if (!wcd9xxx) {
- ret = -ENOMEM;
- goto err;
- }
-
- if (!slim) {
- ret = -EINVAL;
- goto err;
- }
+ if (!wcd9xxx)
+ return -ENOMEM;
if (intf_type == WCD9XXX_INTERFACE_TYPE_I2C) {
dev_dbg(&slim->dev, "%s:Codec is detected in I2C mode\n",