CC: [email protected]
TO: Daniel Vetter <[email protected]>
CC: Sam Ravnborg <[email protected]>

tree:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
head:   9e1ed9fb1eb0a4bc43a26365c592d3095286038b
commit: c3b790ea07a13da0c46816bda6b04abef346af15 [19/44] drm: Manage 
drm_mode_config_init with drmm_
:::::: branch date: 2 weeks ago
:::::: commit date: 2 weeks ago

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/gpu/drm/drm_mode_config.c:450 drmm_mode_config_init() error: double 
unlocked 'resv' (orig line 446)

git remote add drm-drm-misc git://anongit.freedesktop.org/drm/drm-misc
git remote update drm-drm-misc
git checkout c3b790ea07a13da0c46816bda6b04abef346af15
vim +/resv +450 drivers/gpu/drm/drm_mode_config.c

c3b790ea07a13d Daniel Vetter         2020-03-23  381  
28575f165d3605 Daniel Vetter         2016-11-14  382  /**
c3b790ea07a13d Daniel Vetter         2020-03-23  383   * drmm_mode_config_init 
- managed DRM mode_configuration structure
c3b790ea07a13d Daniel Vetter         2020-03-23  384   *        initialization
28575f165d3605 Daniel Vetter         2016-11-14  385   * @dev: DRM device
28575f165d3605 Daniel Vetter         2016-11-14  386   *
28575f165d3605 Daniel Vetter         2016-11-14  387   * Initialize @dev's 
mode_config structure, used for tracking the graphics
28575f165d3605 Daniel Vetter         2016-11-14  388   * configuration of @dev.
28575f165d3605 Daniel Vetter         2016-11-14  389   *
28575f165d3605 Daniel Vetter         2016-11-14  390   * Since this initializes 
the modeset locks, no locking is possible. Which is no
28575f165d3605 Daniel Vetter         2016-11-14  391   * problem, since this 
should happen single threaded at init time. It is the
28575f165d3605 Daniel Vetter         2016-11-14  392   * driver's problem to 
ensure this guarantee.
28575f165d3605 Daniel Vetter         2016-11-14  393   *
c3b790ea07a13d Daniel Vetter         2020-03-23  394   * Cleanup is 
automatically handled through registering drm_mode_config_cleanup
c3b790ea07a13d Daniel Vetter         2020-03-23  395   * with drmm_add_action().
c3b790ea07a13d Daniel Vetter         2020-03-23  396   *
c3b790ea07a13d Daniel Vetter         2020-03-23  397   * Returns: 0 on success, 
negative error value on failure.
28575f165d3605 Daniel Vetter         2016-11-14  398   */
c3b790ea07a13d Daniel Vetter         2020-03-23  399  int 
drmm_mode_config_init(struct drm_device *dev)
28575f165d3605 Daniel Vetter         2016-11-14  400  {
28575f165d3605 Daniel Vetter         2016-11-14  401    
mutex_init(&dev->mode_config.mutex);
28575f165d3605 Daniel Vetter         2016-11-14  402    
drm_modeset_lock_init(&dev->mode_config.connection_mutex);
28575f165d3605 Daniel Vetter         2016-11-14  403    
mutex_init(&dev->mode_config.idr_mutex);
28575f165d3605 Daniel Vetter         2016-11-14  404    
mutex_init(&dev->mode_config.fb_lock);
28575f165d3605 Daniel Vetter         2016-11-14  405    
mutex_init(&dev->mode_config.blob_lock);
28575f165d3605 Daniel Vetter         2016-11-14  406    
INIT_LIST_HEAD(&dev->mode_config.fb_list);
28575f165d3605 Daniel Vetter         2016-11-14  407    
INIT_LIST_HEAD(&dev->mode_config.crtc_list);
28575f165d3605 Daniel Vetter         2016-11-14  408    
INIT_LIST_HEAD(&dev->mode_config.connector_list);
28575f165d3605 Daniel Vetter         2016-11-14  409    
INIT_LIST_HEAD(&dev->mode_config.encoder_list);
28575f165d3605 Daniel Vetter         2016-11-14  410    
INIT_LIST_HEAD(&dev->mode_config.property_list);
28575f165d3605 Daniel Vetter         2016-11-14  411    
INIT_LIST_HEAD(&dev->mode_config.property_blob_list);
28575f165d3605 Daniel Vetter         2016-11-14  412    
INIT_LIST_HEAD(&dev->mode_config.plane_list);
b962a12050a387 Rob Clark             2018-10-22  413    
INIT_LIST_HEAD(&dev->mode_config.privobj_list);
b5f06893c49925 Shayenne da Luz Moura 2018-12-13  414    
idr_init(&dev->mode_config.object_idr);
28575f165d3605 Daniel Vetter         2016-11-14  415    
idr_init(&dev->mode_config.tile_idr);
28575f165d3605 Daniel Vetter         2016-11-14  416    
ida_init(&dev->mode_config.connector_ida);
613051dac40da1 Daniel Vetter         2016-12-14  417    
spin_lock_init(&dev->mode_config.connector_list_lock);
28575f165d3605 Daniel Vetter         2016-11-14  418  
ea497bb9206487 Daniel Vetter         2017-12-13  419    
init_llist_head(&dev->mode_config.connector_free_list);
ea497bb9206487 Daniel Vetter         2017-12-13  420    
INIT_WORK(&dev->mode_config.connector_free_work, drm_connector_free_work_fn);
ea497bb9206487 Daniel Vetter         2017-12-13  421  
28575f165d3605 Daniel Vetter         2016-11-14  422    
drm_mode_create_standard_properties(dev);
28575f165d3605 Daniel Vetter         2016-11-14  423  
28575f165d3605 Daniel Vetter         2016-11-14  424    /* Just to be sure */
28575f165d3605 Daniel Vetter         2016-11-14  425    dev->mode_config.num_fb 
= 0;
28575f165d3605 Daniel Vetter         2016-11-14  426    
dev->mode_config.num_connector = 0;
28575f165d3605 Daniel Vetter         2016-11-14  427    
dev->mode_config.num_crtc = 0;
28575f165d3605 Daniel Vetter         2016-11-14  428    
dev->mode_config.num_encoder = 0;
28575f165d3605 Daniel Vetter         2016-11-14  429    
dev->mode_config.num_total_plane = 0;
2c51419e8c06f6 Daniel Vetter         2019-11-19  430  
2c51419e8c06f6 Daniel Vetter         2019-11-19  431    if 
(IS_ENABLED(CONFIG_LOCKDEP)) {
2c51419e8c06f6 Daniel Vetter         2019-11-19  432            struct 
drm_modeset_acquire_ctx modeset_ctx;
2c51419e8c06f6 Daniel Vetter         2019-11-19  433            struct 
ww_acquire_ctx resv_ctx;
2c51419e8c06f6 Daniel Vetter         2019-11-19  434            struct dma_resv 
resv;
2c51419e8c06f6 Daniel Vetter         2019-11-19  435            int ret;
2c51419e8c06f6 Daniel Vetter         2019-11-19  436  
2c51419e8c06f6 Daniel Vetter         2019-11-19  437            
dma_resv_init(&resv);
2c51419e8c06f6 Daniel Vetter         2019-11-19  438  
2c51419e8c06f6 Daniel Vetter         2019-11-19  439            
drm_modeset_acquire_init(&modeset_ctx, 0);
2c51419e8c06f6 Daniel Vetter         2019-11-19  440            ret = 
drm_modeset_lock(&dev->mode_config.connection_mutex,
2c51419e8c06f6 Daniel Vetter         2019-11-19  441                            
       &modeset_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  442            if (ret == 
-EDEADLK)
2c51419e8c06f6 Daniel Vetter         2019-11-19  443                    ret = 
drm_modeset_backoff(&modeset_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  444  
2c51419e8c06f6 Daniel Vetter         2019-11-19  445            
ww_acquire_init(&resv_ctx, &reservation_ww_class);
2c51419e8c06f6 Daniel Vetter         2019-11-19 @446            ret = 
dma_resv_lock(&resv, &resv_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  447            if (ret == 
-EDEADLK)
2c51419e8c06f6 Daniel Vetter         2019-11-19  448                    
dma_resv_lock_slow(&resv, &resv_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  449  
2c51419e8c06f6 Daniel Vetter         2019-11-19 @450            
dma_resv_unlock(&resv);
2c51419e8c06f6 Daniel Vetter         2019-11-19  451            
ww_acquire_fini(&resv_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  452  
2c51419e8c06f6 Daniel Vetter         2019-11-19  453            
drm_modeset_drop_locks(&modeset_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  454            
drm_modeset_acquire_fini(&modeset_ctx);
2c51419e8c06f6 Daniel Vetter         2019-11-19  455            
dma_resv_fini(&resv);
2c51419e8c06f6 Daniel Vetter         2019-11-19  456    }
c3b790ea07a13d Daniel Vetter         2020-03-23  457  
c3b790ea07a13d Daniel Vetter         2020-03-23  458    return 
drmm_add_action_or_reset(dev, drm_mode_config_init_release,
c3b790ea07a13d Daniel Vetter         2020-03-23  459                            
        NULL);
28575f165d3605 Daniel Vetter         2016-11-14  460  }
c3b790ea07a13d Daniel Vetter         2020-03-23  461  
EXPORT_SYMBOL(drmm_mode_config_init);
28575f165d3605 Daniel Vetter         2016-11-14  462  

:::::: The code at line 450 was first introduced by commit
:::::: 2c51419e8c06f6b8b1b91892688b17dd9a7f6e39 drm/modeset: Prime modeset lock 
vs dma_resv

:::::: TO: Daniel Vetter <[email protected]>
:::::: CC: Daniel Vetter <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to