* 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.