Hi Dmitry,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Dmitry-Baryshkov/drm-display-add-transparent-bridge-helper/20230802-091932
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    
https://lore.kernel.org/r/20230802011845.4176631-2-dmitry.baryshkov%40linaro.org
patch subject: [PATCH v3 1/3] drm/display: add transparent bridge helper
config: x86_64-randconfig-m001-20230808 
(https://download.01.org/0day-ci/archive/20230809/202308090559.rmlh2dl6-...@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce: 
(https://download.01.org/0day-ci/archive/20230809/202308090559.rmlh2dl6-...@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Reported-by: Dan Carpenter <dan.carpen...@linaro.org>
| Closes: https://lore.kernel.org/r/202308090559.rmlh2dl6-...@intel.com/

smatch warnings:
drivers/gpu/drm/display/drm_simple_bridge.c:41 drm_simple_bridge_register() 
warn: possible memory leak of 'adev'

vim +/adev +41 drivers/gpu/drm/display/drm_simple_bridge.c

abf701043719cd Dmitry Baryshkov 2023-08-02  30  int 
drm_simple_bridge_register(struct device *parent)
abf701043719cd Dmitry Baryshkov 2023-08-02  31  {
abf701043719cd Dmitry Baryshkov 2023-08-02  32          struct auxiliary_device 
*adev;
abf701043719cd Dmitry Baryshkov 2023-08-02  33          int ret;
abf701043719cd Dmitry Baryshkov 2023-08-02  34  
abf701043719cd Dmitry Baryshkov 2023-08-02  35          adev = 
kzalloc(sizeof(*adev), GFP_KERNEL);
abf701043719cd Dmitry Baryshkov 2023-08-02  36          if (!adev)
abf701043719cd Dmitry Baryshkov 2023-08-02  37                  return -ENOMEM;
abf701043719cd Dmitry Baryshkov 2023-08-02  38  
abf701043719cd Dmitry Baryshkov 2023-08-02  39          ret = 
ida_alloc(&simple_bridge_ida, GFP_KERNEL);
abf701043719cd Dmitry Baryshkov 2023-08-02  40          if (ret < 0)
abf701043719cd Dmitry Baryshkov 2023-08-02 @41                  return ret;

kfree(adev);

abf701043719cd Dmitry Baryshkov 2023-08-02  42  
abf701043719cd Dmitry Baryshkov 2023-08-02  43          adev->id = ret;
abf701043719cd Dmitry Baryshkov 2023-08-02  44          adev->name = 
"simple_bridge";
abf701043719cd Dmitry Baryshkov 2023-08-02  45          adev->dev.parent = 
parent;
abf701043719cd Dmitry Baryshkov 2023-08-02  46          adev->dev.of_node = 
parent->of_node;
abf701043719cd Dmitry Baryshkov 2023-08-02  47          adev->dev.release = 
drm_simple_bridge_release;
abf701043719cd Dmitry Baryshkov 2023-08-02  48  
abf701043719cd Dmitry Baryshkov 2023-08-02  49          ret = 
auxiliary_device_init(adev);
abf701043719cd Dmitry Baryshkov 2023-08-02  50          if (ret) {
abf701043719cd Dmitry Baryshkov 2023-08-02  51                  kfree(adev);

This needs to ida_free(&simple_bridge_ida, adev->id) as well.  There is
a smatch check for this (check_unwind.c) but I guess I plan to re-write
it a bit before I turn that on.

abf701043719cd Dmitry Baryshkov 2023-08-02  52                  return ret;
abf701043719cd Dmitry Baryshkov 2023-08-02  53          }
abf701043719cd Dmitry Baryshkov 2023-08-02  54  
abf701043719cd Dmitry Baryshkov 2023-08-02  55          ret = 
auxiliary_device_add(adev);
abf701043719cd Dmitry Baryshkov 2023-08-02  56          if (ret) {
abf701043719cd Dmitry Baryshkov 2023-08-02  57                  
auxiliary_device_uninit(adev);
abf701043719cd Dmitry Baryshkov 2023-08-02  58                  return ret;
abf701043719cd Dmitry Baryshkov 2023-08-02  59          }
abf701043719cd Dmitry Baryshkov 2023-08-02  60  
abf701043719cd Dmitry Baryshkov 2023-08-02  61          return 
devm_add_action_or_reset(parent, drm_simple_bridge_unregister_adev, adev);
abf701043719cd Dmitry Baryshkov 2023-08-02  62  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to