of_device_get_match_data could return NULL, and so can cause
a NULL pointer dereference later.

Signed-off-by: Shailendra Verma <shailendr...@samsung.com>
---
 sound/soc/samsung/i2s.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index 7825bff..b5acce2 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -1224,8 +1224,13 @@ static int samsung_i2s_probe(struct platform_device 
*pdev)
        const struct samsung_i2s_dai_data *i2s_dai_data;
        int ret;
 
-       if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node)
+       if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) {
                i2s_dai_data = of_device_get_match_data(&pdev->dev);
+               if (!i2s_dai_data) {
+                       dev_err(&pdev->dev, "no device match found\n");
+                       return -ENODEV;
+               }
+       }
        else
                i2s_dai_data = (struct samsung_i2s_dai_data *)
                                platform_get_device_id(pdev)->driver_data;
-- 
1.7.9.5

Reply via email to