Hello Sylwester Nawrocki,
This is a semi-automatic email about new static checker warnings.
The patch a404b72d2bdd: "ASoC: samsung: i2s: Convert to single component with multiple DAIs" from Feb 7, 2019, leads to the following Smatch complaint:
sound/soc/samsung/i2s.c:1352 samsung_i2s_probe() warn: variable dereferenced before check 'i2s_pdata' (see line 1336)
sound/soc/samsung/i2s.c 1315 static int samsung_i2s_probe(struct platform_device *pdev) 1316 { 1317 struct i2s_dai *pri_dai, *sec_dai = NULL; 1318 struct s3c_audio_pdata *i2s_pdata = pdev->dev.platform_data; 1319 struct resource *res; 1320 u32 regs_base, quirks = 0, idma_addr = 0; 1321 struct device_node *np = pdev->dev.of_node; ^^^^^^^^^^^^^^^^^^^^^^
1322 const struct samsung_i2s_dai_data *i2s_dai_data; 1323 int num_dais, ret; 1324 struct samsung_i2s_priv *priv; 1325 1326 if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) 1327 i2s_dai_data = of_device_get_match_data(&pdev->dev); 1328 else 1329 i2s_dai_data = (struct samsung_i2s_dai_data *) 1330 platform_get_device_id(pdev)->driver_data; 1331 1332 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); 1333 if (!priv) 1334 return -ENOMEM; 1335 1336 quirks = np ? i2s_dai_data->quirks : i2s_pdata->type.quirks; ^^^^^^^^^^^^^^^^^^^^^^
If "np" is NULL then we dereference "i2s_pdata".
1337 quirks &= ~(QUIRK_SEC_DAI | QUIRK_SUPPORTS_IDMA); 1338 1339 num_dais = (quirks & QUIRK_SEC_DAI) ? 2 : 1; 1340 priv->pdev = pdev; 1341 1342 ret = i2s_alloc_dais(priv, i2s_dai_data, num_dais); 1343 if (ret < 0) 1344 return ret; 1345 1346 pri_dai = &priv->dai[SAMSUNG_I2S_ID_PRIMARY - 1]; 1347 1348 spin_lock_init(&priv->spinlock); 1349 pri_dai->lock = &priv->spinlock; 1350 1351 if (!np) { 1352 if (i2s_pdata == NULL) { ^^^^^^^^^^^^^^^^^ But here "np" is NULL and we're checking if i2s_pdata is also NULL.
1353 dev_err(&pdev->dev, "Can't work without s3c_audio_pdata\n"); 1354 return -EINVAL;
regards, dan carpenter