All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1672 _dpu_encoder_trigger_start() warn: variable dereferenced before check 'phys' (see line 1670)
@ 2025-04-02 10:34 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-04-02 10:34 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Jessica Zhang <quic_jesszhan@quicinc.com>
CC: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
CC: Abhinav Kumar <quic_abhinavk@quicinc.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   acc4d5ff0b61eb1715c498b6536c38c1feb7f3c1
commit: 8144d17a81d9ea742be5a02da62f5a7b2a8f95c1 drm/msm/dpu: Skip trigger flush and start for CWB
date:   4 weeks ago
:::::: branch date: 7 hours ago
:::::: commit date: 4 weeks ago
config: arm64-randconfig-r073-20250402 (https://download.01.org/0day-ci/archive/20250402/202504021825.IW2340OS-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)

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/202504021825.IW2340OS-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1672 _dpu_encoder_trigger_start() warn: variable dereferenced before check 'phys' (see line 1670)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1814 _dpu_encoder_kickoff_phys() error: we previously assumed 'dpu_enc->cur_master' could be null (see line 1807)

vim +/phys +1672 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c

25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1663  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1664  /**
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1665   * _dpu_encoder_trigger_start - trigger start for a physical encoder
cca5ff947c7c6e Lee Jones         2020-11-23  1666   * @phys: Pointer to physical encoder structure
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1667   */
58fba464eaeff6 Sean Paul         2018-09-20  1668  static void _dpu_encoder_trigger_start(struct dpu_encoder_phys *phys)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1669  {
8144d17a81d9ea Jessica Zhang     2025-02-14 @1670  	struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(phys->parent);
8144d17a81d9ea Jessica Zhang     2025-02-14  1671  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1672  	if (!phys) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1673  		DPU_ERROR("invalid argument(s)\n");
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1674  		return;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1675  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1676  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1677  	if (!phys->hw_pp) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1678  		DPU_ERROR("invalid pingpong hw\n");
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1679  		return;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1680  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1681  
8144d17a81d9ea Jessica Zhang     2025-02-14  1682  	if (phys->parent->encoder_type == DRM_MODE_ENCODER_VIRTUAL &&
8144d17a81d9ea Jessica Zhang     2025-02-14  1683  	    dpu_enc->cwb_mask) {
8144d17a81d9ea Jessica Zhang     2025-02-14  1684  		DPU_DEBUG("encoder %d CWB enabled, skipping\n", DRMID(phys->parent));
8144d17a81d9ea Jessica Zhang     2025-02-14  1685  		return;
8144d17a81d9ea Jessica Zhang     2025-02-14  1686  	}
8144d17a81d9ea Jessica Zhang     2025-02-14  1687  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1688  	if (phys->ops.trigger_start && phys->enable_state != DPU_ENC_DISABLED)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1689  		phys->ops.trigger_start(phys);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1690  }
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1691  
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1692  /**
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1693   * dpu_encoder_helper_trigger_start - control start helper function
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1694   *	This helper function may be optionally specified by physical
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1695   *	encoders if they require ctl_start triggering.
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1696   * @phys_enc: Pointer to physical encoder structure
86313a9cd15233 Dmitry Baryshkov  2024-11-02  1697   */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1698  void dpu_encoder_helper_trigger_start(struct dpu_encoder_phys *phys_enc)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1699  {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1700  	struct dpu_hw_ctl *ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1701  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1702  	ctl = phys_enc->hw_ctl;
99beed68c3c72e Drew Davenport    2019-12-06  1703  	if (ctl->ops.trigger_start) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1704  		ctl->ops.trigger_start(ctl);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1705  		trace_dpu_enc_trigger_start(DRMID(phys_enc->parent), ctl->idx);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1706  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1707  }
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1708  
fba33cae6aa3ea Jordan Crouse     2018-07-26  1709  static int dpu_encoder_helper_wait_event_timeout(
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1710  		int32_t drm_id,
5a9d50150c2cd2 Dmitry Baryshkov  2023-08-02  1711  		unsigned int irq_idx,
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1712  		struct dpu_encoder_wait_info *info)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1713  {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1714  	int rc = 0;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1715  	s64 expected_time = ktime_to_ms(ktime_get()) + info->timeout_ms;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1716  	s64 jiffies = msecs_to_jiffies(info->timeout_ms);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1717  	s64 time;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1718  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1719  	do {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1720  		rc = wait_event_timeout(*(info->wq),
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1721  				atomic_read(info->atomic_cnt) == 0, jiffies);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1722  		time = ktime_to_ms(ktime_get());
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1723  
6be6ece92050fe Dmitry Baryshkov  2023-08-02  1724  		trace_dpu_enc_wait_event_timeout(drm_id,
6be6ece92050fe Dmitry Baryshkov  2023-08-02  1725  						 DPU_IRQ_REG(irq_idx), DPU_IRQ_BIT(irq_idx),
6be6ece92050fe Dmitry Baryshkov  2023-08-02  1726  						 rc, time,
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1727  						 expected_time,
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1728  						 atomic_read(info->atomic_cnt));
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1729  	/* If we timed out, counter is valid and time is less, wait again */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1730  	} while (atomic_read(info->atomic_cnt) && (rc == 0) &&
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1731  			(time < expected_time));
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1732  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1733  	return rc;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1734  }
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1735  
01b09d53ad5b7e Sean Paul         2018-09-20  1736  static void dpu_encoder_helper_hw_reset(struct dpu_encoder_phys *phys_enc)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1737  {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1738  	struct dpu_encoder_virt *dpu_enc;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1739  	struct dpu_hw_ctl *ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1740  	int rc;
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1741  	struct drm_encoder *drm_enc;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1742  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1743  	dpu_enc = to_dpu_encoder_virt(phys_enc->parent);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1744  	ctl = phys_enc->hw_ctl;
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1745  	drm_enc = phys_enc->parent;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1746  
99beed68c3c72e Drew Davenport    2019-12-06  1747  	if (!ctl->ops.reset)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1748  		return;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1749  
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1750  	DRM_DEBUG_KMS("id:%u ctl %d reset\n", DRMID(drm_enc),
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1751  		      ctl->idx);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1752  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1753  	rc = ctl->ops.reset(ctl);
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1754  	if (rc) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1755  		DPU_ERROR_ENC(dpu_enc, "ctl %d reset failure\n",  ctl->idx);
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1756  		msm_disp_snapshot_state(drm_enc->dev);
2ec5b3dc18bab1 Abhinav Kumar     2021-04-16  1757  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1758  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1759  	phys_enc->enable_state = DPU_ENC_ENABLED;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1760  }
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1761  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1762  /**
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1763   * _dpu_encoder_kickoff_phys - handle physical encoder kickoff
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1764   *	Iterate through the physical encoders and perform consolidated flush
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1765   *	and/or control start triggering as needed. This is done in the virtual
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1766   *	encoder rather than the individual physical ones in order to handle
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1767   *	use cases that require visibility into multiple physical encoders at
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1768   *	a time.
cca5ff947c7c6e Lee Jones         2020-11-23  1769   * @dpu_enc: Pointer to virtual encoder structure
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1770   */
b4bb9f15b44392 Rob Clark         2019-08-29  1771  static void _dpu_encoder_kickoff_phys(struct dpu_encoder_virt *dpu_enc)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1772  {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1773  	struct dpu_hw_ctl *ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1774  	uint32_t i, pending_flush;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1775  	unsigned long lock_flags;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1776  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1777  	pending_flush = 0x0;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1778  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1779  	/* update pending counts and trigger kickoff ctl flush atomically */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1780  	spin_lock_irqsave(&dpu_enc->enc_spinlock, lock_flags);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1781  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1782  	/* don't perform flush/start operations for slave encoders */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1783  	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1784  		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1785  
b6fadcade62704 Drew Davenport    2019-12-06  1786  		if (phys->enable_state == DPU_ENC_DISABLED)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1787  			continue;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1788  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1789  		ctl = phys->hw_ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1790  
f98baa3109cea4 Sean Paul         2019-01-30  1791  		/*
f98baa3109cea4 Sean Paul         2019-01-30  1792  		 * This is cleared in frame_done worker, which isn't invoked
f98baa3109cea4 Sean Paul         2019-01-30  1793  		 * for async commits. So don't set this for async, since it'll
f98baa3109cea4 Sean Paul         2019-01-30  1794  		 * roll over to the next commit.
f98baa3109cea4 Sean Paul         2019-01-30  1795  		 */
b4bb9f15b44392 Rob Clark         2019-08-29  1796  		if (phys->split_role != ENC_ROLE_SLAVE)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1797  			set_bit(i, dpu_enc->frame_busy_mask);
f98baa3109cea4 Sean Paul         2019-01-30  1798  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1799  		if (!phys->ops.needs_single_flush ||
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1800  				!phys->ops.needs_single_flush(phys))
b4bb9f15b44392 Rob Clark         2019-08-29  1801  			_dpu_encoder_trigger_flush(&dpu_enc->base, phys, 0x0);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1802  		else if (ctl->ops.get_pending_flush)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1803  			pending_flush |= ctl->ops.get_pending_flush(ctl);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1804  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1805  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1806  	/* for split flush, combine pending flush masks and send to master */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1807  	if (pending_flush && dpu_enc->cur_master) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1808  		_dpu_encoder_trigger_flush(
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1809  				&dpu_enc->base,
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1810  				dpu_enc->cur_master,
b4bb9f15b44392 Rob Clark         2019-08-29  1811  				pending_flush);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1812  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1813  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1814  	_dpu_encoder_trigger_start(dpu_enc->cur_master);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1815  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1816  	spin_unlock_irqrestore(&dpu_enc->enc_spinlock, lock_flags);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1817  }
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1818  

:::::: The code at line 1672 was first introduced by commit
:::::: 25fdd5933e4c0f5fe2ea5cd59994f8ac5fbe90ef drm/msm: Add SDM845 DPU support

:::::: TO: Jeykumar Sankaran <jsanka@codeaurora.org>
:::::: CC: Sean Paul <seanpaul@chromium.org>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1672 _dpu_encoder_trigger_start() warn: variable dereferenced before check 'phys' (see line 1670)
@ 2025-04-02 11:18 Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2025-04-02 11:18 UTC (permalink / raw)
  To: oe-kbuild, Jessica Zhang
  Cc: lkp, oe-kbuild-all, linux-kernel, Dmitry Baryshkov, Abhinav Kumar

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   acc4d5ff0b61eb1715c498b6536c38c1feb7f3c1
commit: 8144d17a81d9ea742be5a02da62f5a7b2a8f95c1 drm/msm/dpu: Skip trigger flush and start for CWB
date:   4 weeks ago
config: arm64-randconfig-r073-20250402 (https://download.01.org/0day-ci/archive/20250402/202504021825.IW2340OS-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)

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 <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202504021825.IW2340OS-lkp@intel.com/

smatch warnings:
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1672 _dpu_encoder_trigger_start() warn: variable dereferenced before check 'phys' (see line 1670)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1814 _dpu_encoder_kickoff_phys() error: we previously assumed 'dpu_enc->cur_master' could be null (see line 1807)

vim +/phys +1672 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c

58fba464eaeff6 Sean Paul         2018-09-20  1668  static void _dpu_encoder_trigger_start(struct dpu_encoder_phys *phys)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1669  {
8144d17a81d9ea Jessica Zhang     2025-02-14 @1670  	struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(phys->parent);
                                                                                                               ^^^^^^^^^^^^
Dereference

8144d17a81d9ea Jessica Zhang     2025-02-14  1671  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1672  	if (!phys) {
                                                            ^^^^^
Checked too late.

25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1673  		DPU_ERROR("invalid argument(s)\n");
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1674  		return;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1675  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1676  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1677  	if (!phys->hw_pp) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1678  		DPU_ERROR("invalid pingpong hw\n");
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1679  		return;

[ snip ]

b4bb9f15b44392 Rob Clark         2019-08-29  1771  static void _dpu_encoder_kickoff_phys(struct dpu_encoder_virt *dpu_enc)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1772  {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1773  	struct dpu_hw_ctl *ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1774  	uint32_t i, pending_flush;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1775  	unsigned long lock_flags;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1776  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1777  	pending_flush = 0x0;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1778  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1779  	/* update pending counts and trigger kickoff ctl flush atomically */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1780  	spin_lock_irqsave(&dpu_enc->enc_spinlock, lock_flags);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1781  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1782  	/* don't perform flush/start operations for slave encoders */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1783  	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1784  		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1785  
b6fadcade62704 Drew Davenport    2019-12-06  1786  		if (phys->enable_state == DPU_ENC_DISABLED)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1787  			continue;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1788  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1789  		ctl = phys->hw_ctl;
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1790  
f98baa3109cea4 Sean Paul         2019-01-30  1791  		/*
f98baa3109cea4 Sean Paul         2019-01-30  1792  		 * This is cleared in frame_done worker, which isn't invoked
f98baa3109cea4 Sean Paul         2019-01-30  1793  		 * for async commits. So don't set this for async, since it'll
f98baa3109cea4 Sean Paul         2019-01-30  1794  		 * roll over to the next commit.
f98baa3109cea4 Sean Paul         2019-01-30  1795  		 */
b4bb9f15b44392 Rob Clark         2019-08-29  1796  		if (phys->split_role != ENC_ROLE_SLAVE)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1797  			set_bit(i, dpu_enc->frame_busy_mask);
f98baa3109cea4 Sean Paul         2019-01-30  1798  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1799  		if (!phys->ops.needs_single_flush ||
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1800  				!phys->ops.needs_single_flush(phys))
b4bb9f15b44392 Rob Clark         2019-08-29  1801  			_dpu_encoder_trigger_flush(&dpu_enc->base, phys, 0x0);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1802  		else if (ctl->ops.get_pending_flush)
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1803  			pending_flush |= ctl->ops.get_pending_flush(ctl);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1804  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1805  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1806  	/* for split flush, combine pending flush masks and send to master */
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1807  	if (pending_flush && dpu_enc->cur_master) {
                                                                             ^^^^^^^^^^^^^^^^^^^
Check for NULL

25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1808  		_dpu_encoder_trigger_flush(
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1809  				&dpu_enc->base,
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1810  				dpu_enc->cur_master,
b4bb9f15b44392 Rob Clark         2019-08-29  1811  				pending_flush);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1812  	}
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1813  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 @1814  	_dpu_encoder_trigger_start(dpu_enc->cur_master);
                                                                                   ^^^^^^^^^^^^^^^^^^^
Unchecked dereference

25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1815  
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1816  	spin_unlock_irqrestore(&dpu_enc->enc_spinlock, lock_flags);
25fdd5933e4c0f Jeykumar Sankaran 2018-06-27  1817  }

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-04-02 11:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-02 10:34 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:1672 _dpu_encoder_trigger_start() warn: variable dereferenced before check 'phys' (see line 1670) kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2025-04-02 11:18 Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.