Hi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on daeinki-drm-exynos/exynos-drm-next drm/drm-next 
drm-i915/for-linux-next-fixes drm-tip/drm-tip linus/master v7.0-rc1 
next-20260224]
[cannot apply to drm-i915/for-linux-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/sunpeng-li-amd-com/drm-vblank-Add-drm_crtc_vblank_is_off-helper/20260225-052945
base:   https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next
patch link:    
https://lore.kernel.org/r/20260224212639.390768-3-sunpeng.li%40amd.com
patch subject: [PATCH 2/5] drm/vblank: Introduce deferred vblank enable/disable
config: microblaze-randconfig-r053-20260225 
(https://download.01.org/0day-ci/archive/20260225/[email protected]/config)
compiler: microblaze-linux-gcc (GCC) 8.5.0

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 <[email protected]>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/[email protected]/

cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/drm_vblank.c:1402:6-25: WARNING: atomic_dec_and_test 
>> variation before object free at line 1409.
   drivers/gpu/drm/drm_vblank.c:1402:6-25: WARNING: atomic_dec_and_test 
variation before object free at line 1416.

vim +1402 drivers/gpu/drm/drm_vblank.c

  1385  
  1386  void drm_vblank_put(struct drm_device *dev, unsigned int pipe)
  1387  {
  1388          struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe);
  1389          int vblank_offdelay = vblank->config.offdelay_ms;
  1390          bool needs_deferred_disable;
  1391  
  1392          if (drm_WARN_ON(dev, pipe >= dev->num_crtcs))
  1393                  return;
  1394  
  1395          if (drm_WARN_ON(dev, atomic_read(&vblank->refcount) == 0))
  1396                  return;
  1397  
  1398          needs_deferred_disable =
  1399                  drm_crtc_needs_deferred_vblank(drm_crtc_from_index(dev, 
pipe));
  1400  
  1401          /* Last user schedules interrupt disable */
> 1402          if (!atomic_dec_and_test(&vblank->refcount))
  1403                  return;
  1404  
  1405          if (!vblank_offdelay)
  1406                  return;
  1407          else if (vblank_offdelay < 0) {
  1408                  if (needs_deferred_disable)
> 1409                          mod_delayed_work(dev->deferred_vblank_wq,
  1410                                           &vblank->disable_work,
  1411                                           0);
  1412                  else
  1413                          vblank_disable_fn(&vblank->disable_timer);
  1414          } else if (!vblank->config.disable_immediate) {
  1415                  if (needs_deferred_disable)
  1416                          mod_delayed_work(dev->deferred_vblank_wq,
  1417                                           &vblank->disable_work,
  1418                                           
msecs_to_jiffies(vblank_offdelay));
  1419                  else
  1420                          mod_timer(&vblank->disable_timer,
  1421                                    jiffies + ((vblank_offdelay * HZ) / 
1000));
  1422          }
  1423  }
  1424  

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

Reply via email to