public inbox for oe-kbuild@lists.linux.dev
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c:270 vmw_cursor_mob_get() error: we previously assumed 'vps->cursor.mob' could be null (see line 241)
Date: Tue, 23 Dec 2025 07:36:43 +0800	[thread overview]
Message-ID: <202512230757.DjcJntFX-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Zack Rusin <zack.rusin@broadcom.com>
CC: Maaz Mombasawala <maaz.mombasawala@broadcom.com>
CC: Martin Krastev <martin.krastev@broadcom.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b927546677c876e26eba308550207c2ddf812a43
commit: 965544150d1cadf0e8f5bb6c13c19697e46e1429 drm/vmwgfx: Refactor cursor handling
date:   10 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 10 months ago
config: arm64-randconfig-r071-20251214 (https://download.01.org/0day-ci/archive/20251223/202512230757.DjcJntFX-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)

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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202512230757.DjcJntFX-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c:270 vmw_cursor_mob_get() error: we previously assumed 'vps->cursor.mob' could be null (see line 241)

vim +270 drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c

965544150d1cad Zack Rusin 2025-03-07  218  
965544150d1cad Zack Rusin 2025-03-07  219  static int vmw_cursor_mob_get(struct vmw_cursor_plane *vcp,
965544150d1cad Zack Rusin 2025-03-07  220  			      struct vmw_plane_state *vps)
965544150d1cad Zack Rusin 2025-03-07  221  {
965544150d1cad Zack Rusin 2025-03-07  222  	struct vmw_private *dev_priv = vmw_priv(vcp->base.dev);
965544150d1cad Zack Rusin 2025-03-07  223  	u32 size = vmw_cursor_mob_size(vps->cursor.update_type,
965544150d1cad Zack Rusin 2025-03-07  224  				       vps->base.crtc_w, vps->base.crtc_h);
965544150d1cad Zack Rusin 2025-03-07  225  	u32 i;
965544150d1cad Zack Rusin 2025-03-07  226  	u32 cursor_max_dim, mob_max_size;
965544150d1cad Zack Rusin 2025-03-07  227  	struct vmw_fence_obj *fence = NULL;
965544150d1cad Zack Rusin 2025-03-07  228  	int ret;
965544150d1cad Zack Rusin 2025-03-07  229  
965544150d1cad Zack Rusin 2025-03-07  230  	if (!dev_priv->has_mob ||
965544150d1cad Zack Rusin 2025-03-07  231  	    (dev_priv->capabilities2 & SVGA_CAP2_CURSOR_MOB) == 0)
965544150d1cad Zack Rusin 2025-03-07  232  		return -EINVAL;
965544150d1cad Zack Rusin 2025-03-07  233  
965544150d1cad Zack Rusin 2025-03-07  234  	mob_max_size = vmw_read(dev_priv, SVGA_REG_MOB_MAX_SIZE);
965544150d1cad Zack Rusin 2025-03-07  235  	cursor_max_dim = vmw_read(dev_priv, SVGA_REG_CURSOR_MAX_DIMENSION);
965544150d1cad Zack Rusin 2025-03-07  236  
965544150d1cad Zack Rusin 2025-03-07  237  	if (size > mob_max_size || vps->base.crtc_w > cursor_max_dim ||
965544150d1cad Zack Rusin 2025-03-07  238  	    vps->base.crtc_h > cursor_max_dim)
965544150d1cad Zack Rusin 2025-03-07  239  		return -EINVAL;
965544150d1cad Zack Rusin 2025-03-07  240  
965544150d1cad Zack Rusin 2025-03-07 @241  	if (vps->cursor.mob) {
965544150d1cad Zack Rusin 2025-03-07  242  		if (vps->cursor.mob->tbo.base.size >= size)
965544150d1cad Zack Rusin 2025-03-07  243  			return 0;
965544150d1cad Zack Rusin 2025-03-07  244  		vmw_cursor_mob_put(vcp, vps);
965544150d1cad Zack Rusin 2025-03-07  245  	}
965544150d1cad Zack Rusin 2025-03-07  246  
965544150d1cad Zack Rusin 2025-03-07  247  	/* Look for an unused mob in the cache. */
965544150d1cad Zack Rusin 2025-03-07  248  	for (i = 0; i < ARRAY_SIZE(vcp->cursor_mobs); i++) {
965544150d1cad Zack Rusin 2025-03-07  249  		if (vcp->cursor_mobs[i] &&
965544150d1cad Zack Rusin 2025-03-07  250  		    vcp->cursor_mobs[i]->tbo.base.size >= size) {
965544150d1cad Zack Rusin 2025-03-07  251  			vps->cursor.mob = vcp->cursor_mobs[i];
965544150d1cad Zack Rusin 2025-03-07  252  			vcp->cursor_mobs[i] = NULL;
965544150d1cad Zack Rusin 2025-03-07  253  			return 0;
965544150d1cad Zack Rusin 2025-03-07  254  		}
965544150d1cad Zack Rusin 2025-03-07  255  	}
965544150d1cad Zack Rusin 2025-03-07  256  	/* Create a new mob if we can't find an existing one. */
965544150d1cad Zack Rusin 2025-03-07  257  	ret = vmw_bo_create_and_populate(dev_priv, size, VMW_BO_DOMAIN_MOB,
965544150d1cad Zack Rusin 2025-03-07  258  					 &vps->cursor.mob);
965544150d1cad Zack Rusin 2025-03-07  259  
965544150d1cad Zack Rusin 2025-03-07  260  	if (ret != 0)
965544150d1cad Zack Rusin 2025-03-07  261  		return ret;
965544150d1cad Zack Rusin 2025-03-07  262  
965544150d1cad Zack Rusin 2025-03-07  263  	/* Fence the mob creation so we are guarateed to have the mob */
965544150d1cad Zack Rusin 2025-03-07  264  	ret = ttm_bo_reserve(&vps->cursor.mob->tbo, false, false, NULL);
965544150d1cad Zack Rusin 2025-03-07  265  	if (ret != 0)
965544150d1cad Zack Rusin 2025-03-07  266  		goto teardown;
965544150d1cad Zack Rusin 2025-03-07  267  
965544150d1cad Zack Rusin 2025-03-07  268  	ret = vmw_execbuf_fence_commands(NULL, dev_priv, &fence, NULL);
965544150d1cad Zack Rusin 2025-03-07  269  	if (ret != 0) {
965544150d1cad Zack Rusin 2025-03-07 @270  		ttm_bo_unreserve(&vps->cursor.mob->tbo);
965544150d1cad Zack Rusin 2025-03-07  271  		goto teardown;
965544150d1cad Zack Rusin 2025-03-07  272  	}
965544150d1cad Zack Rusin 2025-03-07  273  
965544150d1cad Zack Rusin 2025-03-07  274  	dma_fence_wait(&fence->base, false);
965544150d1cad Zack Rusin 2025-03-07  275  	dma_fence_put(&fence->base);
965544150d1cad Zack Rusin 2025-03-07  276  
965544150d1cad Zack Rusin 2025-03-07  277  	ttm_bo_unreserve(&vps->cursor.mob->tbo);
965544150d1cad Zack Rusin 2025-03-07  278  
965544150d1cad Zack Rusin 2025-03-07  279  	return 0;
965544150d1cad Zack Rusin 2025-03-07  280  
965544150d1cad Zack Rusin 2025-03-07  281  teardown:
965544150d1cad Zack Rusin 2025-03-07  282  	vmw_cursor_mob_destroy(&vps->cursor.mob);
965544150d1cad Zack Rusin 2025-03-07  283  	return ret;
965544150d1cad Zack Rusin 2025-03-07  284  }
965544150d1cad Zack Rusin 2025-03-07  285  

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

             reply	other threads:[~2025-12-22 23:37 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-22 23:36 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-03-29  5:58 drivers/gpu/drm/vmwgfx/vmwgfx_cursor_plane.c:270 vmw_cursor_mob_get() error: we previously assumed 'vps->cursor.mob' could be null (see line 241) kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202512230757.DjcJntFX-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox