tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4 head: e8eea4af56bba00e98c042c2863a3b34adb167f3 commit: f4affb3abb52e96172d08b80cfd67bb73817d0ac [88/120] CHROMIUM: drm/evdi: Create sysfs link from evdi to its parent device and unlink on detach config: parisc-randconfig-m031-20210219 (attached as .config) compiler: hppa-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/gpu/drm/evdi/evdi_drv.c:344 evdi_platform_probe() warn: possible memory leak of 'data' Old smatch warnings: drivers/gpu/drm/evdi/evdi_drv.c:328 evdi_driver_setup_early() error: dereferencing freed memory 'evdi' vim +/data +344 drivers/gpu/drm/evdi/evdi_drv.c 60d03e018f5eb7 Aleksander Miera 2018-03-15 333 static int evdi_platform_probe(struct platform_device *pdev) 60d03e018f5eb7 Aleksander Miera 2018-03-15 334 { f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 335 int ret = 0; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 336 struct drm_device *dev = NULL; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 337 struct evdi_platform_device_data *data = f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 338 kzalloc(sizeof(struct evdi_platform_device_data), GFP_KERNEL); The check for NULL is missing. Putting an allocation in the declaration block is a bad idea and these allocations are disproportionatly buggy. Generally functions which can fail should not be in the declaration block. 60d03e018f5eb7 Aleksander Miera 2018-03-15 339 60d03e018f5eb7 Aleksander Miera 2018-03-15 340 EVDI_CHECKPT(); 60d03e018f5eb7 Aleksander Miera 2018-03-15 341 60d03e018f5eb7 Aleksander Miera 2018-03-15 342 dev = drm_dev_alloc(&driver, &pdev->dev); 60d03e018f5eb7 Aleksander Miera 2018-03-15 343 if (IS_ERR(dev)) 60d03e018f5eb7 Aleksander Miera 2018-03-15 @344 return PTR_ERR(dev); Memory leak. 60d03e018f5eb7 Aleksander Miera 2018-03-15 345 60d03e018f5eb7 Aleksander Miera 2018-03-15 346 ret = evdi_driver_setup_early(dev); 60d03e018f5eb7 Aleksander Miera 2018-03-15 347 if (ret) 60d03e018f5eb7 Aleksander Miera 2018-03-15 348 goto err_free; 60d03e018f5eb7 Aleksander Miera 2018-03-15 349 60d03e018f5eb7 Aleksander Miera 2018-03-15 350 ret = drm_dev_register(dev, 0); 60d03e018f5eb7 Aleksander Miera 2018-03-15 351 if (ret) 60d03e018f5eb7 Aleksander Miera 2018-03-15 352 goto err_free; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 353 else { Pull this back on tab so that the success path is always indented one tab and the failure path is indented with two tabs characters. f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 354 data->drm_dev = dev; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 355 data->symlinked = false; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 356 platform_set_drvdata(pdev, data); f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 357 } 60d03e018f5eb7 Aleksander Miera 2018-03-15 358 60d03e018f5eb7 Aleksander Miera 2018-03-15 359 evdi_driver_setup_late(dev); 60d03e018f5eb7 Aleksander Miera 2018-03-15 360 60d03e018f5eb7 Aleksander Miera 2018-03-15 361 return 0; 60d03e018f5eb7 Aleksander Miera 2018-03-15 362 60d03e018f5eb7 Aleksander Miera 2018-03-15 363 err_free: 60d03e018f5eb7 Aleksander Miera 2018-03-15 364 drm_dev_put(dev); When you fix this, keep in mind that passing a error pointer to drm_dev_put() will cause a crash. It's better to use "Free the last successful allocation" style instead of a single error label for everything. err_put_dev: drm_dev_put(dev); err_free_data: kfree(data); return ret; f4affb3abb52e9 Łukasz Spintzyk 2020-12-11 365 kfree(data); 60d03e018f5eb7 Aleksander Miera 2018-03-15 366 return ret; 60d03e018f5eb7 Aleksander Miera 2018-03-15 367 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
