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: Sun, 29 Mar 2026 13:58:59 +0800 [thread overview]
Message-ID: <202603291323.ZnGQVR4j-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: cbfffcca2bf0622b601b7eaf477aa29035169184
commit: 965544150d1cadf0e8f5bb6c13c19697e46e1429 drm/vmwgfx: Refactor cursor handling
date: 1 year, 1 month ago
:::::: branch date: 13 hours ago
:::::: commit date: 1 year, 1 month ago
config: x86_64-randconfig-161-20260329 (https://download.01.org/0day-ci/archive/20260329/202603291323.ZnGQVR4j-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
smatch: v0.5.0-9004-gb810ac53
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/202603291323.ZnGQVR4j-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
next reply other threads:[~2026-03-29 5:59 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-29 5:58 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-12-22 23:36 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=202603291323.ZnGQVR4j-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