struct stm32_adc_priv *priv;
        struct device *dev = &pdev->dev;
        struct device_node *np = pdev->dev.of_node;
+       const struct of_device_id *of_id;
+
        struct resource *res;
        u32 max_rate;
        int ret;
                return -ENOMEM;
        platform_set_drvdata(pdev, &priv->common);
 
-       priv->cfg = (const struct stm32_adc_priv_cfg *)
-               of_match_device(dev->driver->of_match_table, dev)->data;
+       of_id = of_match_device(dev->driver->of_match_table, dev);
+       if (!of_id)
+               return -ENODEV;
+
+       priv->cfg = (const struct stm32_adc_priv_cfg *)of_id->data;
        priv->nb_adc_max = priv->cfg->num_adcs;
        spin_lock_init(&priv->common.lock);