[bug report] drm/amdgpu: fix memleak in pptable_init

Dan Carpenter dan.carpenter at oracle.com
Wed Nov 30 19:18:41 UTC 2016


Hello Monk Liu,

The patch 9d8f086cd059: "drm/amdgpu: fix memleak in pptable_init"
from May 30, 2016, leads to the following static checker warning:

	drivers/gpu/drm/amd/amdgpu/../powerplay/amd_powerplay.c:107 pp_sw_fini()
	error: dereferencing freed memory 'hwmgr'

drivers/gpu/drm/amd/amdgpu/../powerplay/amd_powerplay.c
    90  static int pp_sw_fini(void *handle)
    91  {
    92          struct pp_instance *pp_handle;
    93          struct pp_hwmgr  *hwmgr;
    94          int ret = 0;
    95  
    96          if (handle == NULL)
    97                  return -EINVAL;
    98  
    99          pp_handle = (struct pp_instance *)handle;
   100          hwmgr = pp_handle->hwmgr;
   101  
   102          PP_CHECK_HW(hwmgr);
   103  
   104          if (hwmgr->hwmgr_func->backend_fini != NULL)
   105                  ret = hwmgr->hwmgr_func->backend_fini(hwmgr);

The cz_hwmgr_backend_fini() function frees "hwmgr".

   106  
   107          if (hwmgr->pptable_func->pptable_fini)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

But we dereference it on the next line which won't work.

   108                  hwmgr->pptable_func->pptable_fini(hwmgr);
   109  
   110          return ret;
   111  }

regards,
dan carpenter


More information about the dri-devel mailing list