All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 1/5] Critical-KclockWork-Fixes-intel_atomi.c-PossibleNull
@ 2020-08-19  4:34 Nischal Varide
  2020-08-19  4:34 ` [Intel-gfx] [PATCH 2/5] Critical-KlockWork-Fixes-intel_display.c-NullDeref Nischal Varide
                   ` (8 more replies)
  0 siblings, 9 replies; 23+ messages in thread
From: Nischal Varide @ 2020-08-19  4:34 UTC (permalink / raw)
  To: intel-gfx, nischal.varide

This Patch fixes the Klocwork errors and the Current fix is avoiding
Possible Null Pointer Dereference

Signed-off-by: Nischal Varide <nischal.varide@intel.com>
---
 drivers/gpu/drm/i915/display/intel_atomic.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
index 630f49b7aa01..cf51f1005ec1 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic.c
@@ -132,6 +132,9 @@ int intel_digital_connector_atomic_check(struct drm_connector *conn,
 		to_intel_digital_connector_state(old_state);
 	struct drm_crtc_state *crtc_state;
 
+	if (!(new_state && new_conn_state && old_state && old_conn_state))
+		return 0;
+
 	intel_hdcp_atomic_check(conn, old_state, new_state);
 	intel_psr_atomic_check(conn, old_state, new_state);
 
@@ -192,6 +195,8 @@ intel_connector_needs_modeset(struct intel_atomic_state *state,
 
 	old_conn_state = drm_atomic_get_old_connector_state(&state->base, connector);
 	new_conn_state = drm_atomic_get_new_connector_state(&state->base, connector);
+	if (!(old_conn_state && new_conn_state))
+		return 0;
 
 	return old_conn_state->crtc != new_conn_state->crtc ||
 	       (new_conn_state->crtc &&
@@ -418,7 +423,7 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
 	 */
 
 	/* fail if required scalers > available scalers */
-	if (num_scalers_need > intel_crtc->num_scalers){
+	if (num_scalers_need > intel_crtc->num_scalers) {
 		drm_dbg_kms(&dev_priv->drm,
 			    "Too many scaling requests %d > %d\n",
 			    num_scalers_need, intel_crtc->num_scalers);
-- 
2.26.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 23+ messages in thread
* Re: [Intel-gfx] [PATCH 2/5] Critical-KlockWork-Fixes-intel_display.c-NullDeref
@ 2020-08-24 21:51 kernel test robot
  0 siblings, 0 replies; 23+ messages in thread
From: kernel test robot @ 2020-08-24 21:51 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 15307 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20200819043409.26010-2-nischal.varide@intel.com>
References: <20200819043409.26010-2-nischal.varide@intel.com>
TO: Nischal Varide <nischal.varide@intel.com>
TO: intel-gfx(a)lists.freedesktop.org
TO: nischal.varide(a)intel.com

Hi Nischal,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on v5.9-rc2 next-20200824]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Nischal-Varide/Critical-KclockWork-Fixes-intel_atomi-c-PossibleNull/20200819-193249
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: i386-randconfig-m021-20200824 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/i915/display/intel_display.c:2271 intel_pin_and_fence_fb_obj() error: uninitialized symbol 'vma'.
drivers/gpu/drm/i915/display/intel_display.c:11280 intel_cursor_base() error: uninitialized symbol 'base'.

Old smatch warnings:
drivers/gpu/drm/i915/display/intel_display.c:6183 skl_update_scaler_plane() error: we previously assumed 'fb' could be null (see line 6167)
drivers/gpu/drm/i915/display/intel_display.c:16655 intel_crtc_init() warn: passing a valid pointer to 'PTR_ERR'

# https://github.com/0day-ci/linux/commit/5d862961b8571914f726e947570316016ec67c5d
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nischal-Varide/Critical-KclockWork-Fixes-intel_atomi-c-PossibleNull/20200819-193249
git checkout 5d862961b8571914f726e947570316016ec67c5d
vim +/vma +2271 drivers/gpu/drm/i915/display/intel_display.c

f7a02ad7d16b24 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2216  
058d88c4330f96 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-15  2217  struct i915_vma *
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2218  intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
f5929c5309a6a4 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-09-07  2219  			   const struct i915_ggtt_view *view,
f7a02ad7d16b24 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2220  			   bool uses_fence,
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2221  			   unsigned long *out_flags)
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2222  {
850c4cdc6c223d drivers/gpu/drm/i915/intel_display.c         Tvrtko Ursulin         2014-10-30  2223  	struct drm_device *dev = fb->dev;
fac5e23e3c385f drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-07-04  2224  	struct drm_i915_private *dev_priv = to_i915(dev);
850c4cdc6c223d drivers/gpu/drm/i915/intel_display.c         Tvrtko Ursulin         2014-10-30  2225  	struct drm_i915_gem_object *obj = intel_fb_obj(fb);
1d264d91befc31 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2019-01-14  2226  	intel_wakeref_t wakeref;
058d88c4330f96 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-15  2227  	struct i915_vma *vma;
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2228  	unsigned int pinctl;
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2229  	u32 alignment;
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2230  
e57291c2d39522 drivers/gpu/drm/i915/display/intel_display.c Pankaj Bharadiya       2020-02-20  2231  	if (drm_WARN_ON(dev, !i915_gem_object_is_framebuffer(obj)))
5a90606df7cb73 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-09-02  2232  		return ERR_PTR(-EINVAL);
ebcdd39eafb1d8 drivers/gpu/drm/i915/intel_display.c         Matt Roper             2014-07-09  2233  
d88c4afddc5519 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2017-03-07  2234  	alignment = intel_surf_alignment(fb, 0);
e57291c2d39522 drivers/gpu/drm/i915/display/intel_display.c Pankaj Bharadiya       2020-02-20  2235  	if (drm_WARN_ON(dev, alignment && !is_power_of_2(alignment)))
7361bdb26c2ca6 drivers/gpu/drm/i915/display/intel_display.c Imre Deak              2019-12-25  2236  		return ERR_PTR(-EINVAL);
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2237  
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2238  	/* Note that the w/a also requires 64 PTE of padding following the
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2239  	 * bo. We currently fill all unused PTE with the shadow page and so
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2240  	 * we should always have valid PTE following the scanout preventing
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2241  	 * the VT-d warning.
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2242  	 */
48f112fed3b078 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-06-24  2243  	if (intel_scanout_needs_vtd_wa(dev_priv) && alignment < 256 * 1024)
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2244  		alignment = 256 * 1024;
693db1842d864c drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2013-03-05  2245  
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2246  	/*
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2247  	 * Global gtt pte registers are special registers which actually forward
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2248  	 * writes to a chunk of system memory. Which means that there is no risk
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2249  	 * that the register values disappear as soon as we call
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2250  	 * intel_runtime_pm_put(), so it is correct to wrap only the
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2251  	 * pin/unpin/fence and not more.
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2252  	 */
d858d5695f3897 drivers/gpu/drm/i915/intel_display.c         Daniele Ceraolo Spurio 2019-06-13  2253  	wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
d6dd6843ff4a57 drivers/gpu/drm/i915/intel_display.c         Paulo Zanoni           2014-08-15  2254  
9db529aac9381e drivers/gpu/drm/i915/intel_display.c         Daniel Vetter          2017-08-08  2255  	atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
9db529aac9381e drivers/gpu/drm/i915/intel_display.c         Daniel Vetter          2017-08-08  2256  
8b1c78e06e6167 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-12-06  2257  	/*
8b1c78e06e6167 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-12-06  2258  	 * Valleyview is definitely limited to scanning out the first
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2259  	 * 512MiB. Lets presume this behaviour was inherited from the
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2260  	 * g4x display engine and that all earlier gen are similarly
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2261  	 * limited. Testing suggests that it is a little more
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2262  	 * complicated than this. For example, Cherryview appears quite
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2263  	 * happy to scanout from anywhere within its global aperture.
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2264  	 */
8b1c78e06e6167 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-12-06  2265  	pinctl = 0;
b2ae318acdcaf1 drivers/gpu/drm/i915/intel_display.c         Rodrigo Vivi           2019-02-04  2266  	if (HAS_GMCH(dev_priv))
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2267  		pinctl |= PIN_MAPPABLE;
5d862961b85719 drivers/gpu/drm/i915/display/intel_display.c Nischal Varide         2020-08-19  2268  	if (obj)
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2269  		vma = i915_gem_object_pin_to_display_plane(obj,
f5929c5309a6a4 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-09-07  2270  			alignment, view, pinctl);
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18 @2271  	if (IS_ERR(vma))
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2272  		goto err;
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2273  
f7a02ad7d16b24 drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2274  	if (uses_fence && i915_vma_is_map_and_fenceable(vma)) {
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2275  		int ret;
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2276  
8b1c78e06e6167 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-12-06  2277  		/*
8b1c78e06e6167 drivers/gpu/drm/i915/display/intel_display.c Chris Wilson           2019-12-06  2278  		 * Install a fence for tiled scan-out. Pre-i965 always needs a
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2279  		 * fence, whereas 965+ only requires a fence if using
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2280  		 * framebuffer compression.  For simplicity, we always, when
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2281  		 * possible, install a fence as the cost is not that onerous.
842315ee7e416f drivers/gpu/drm/i915/intel_display.c         Maarten Lankhorst      2015-08-05  2282  		 *
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2283  		 * If we fail to fence the tiled scanout, then either the
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2284  		 * modeset will reject the change (which is highly unlikely as
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2285  		 * the affected systems, all but one, do not have unmappable
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2286  		 * space) or we will not be able to enable full powersaving
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2287  		 * techniques (also likely not to apply due to various limits
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2288  		 * FBC and the like impose on the size of the buffer, which
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2289  		 * presumably we violated anyway with this unmappable buffer).
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2290  		 * Anyway, it is presumably better to stumble onwards with
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2291  		 * something and try to run the system in a "less than optimal"
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2292  		 * mode that matches the user configuration.
842315ee7e416f drivers/gpu/drm/i915/intel_display.c         Maarten Lankhorst      2015-08-05  2293  		 */
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2294  		ret = i915_vma_pin_fence(vma);
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2295  		if (ret != 0 && INTEL_GEN(dev_priv) < 4) {
7509702bd8bd09 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-03-05  2296  			i915_gem_object_unpin_from_display_plane(vma);
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2297  			vma = ERR_PTR(ret);
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2298  			goto err;
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2299  		}
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2300  
85798ac9b35f8c drivers/gpu/drm/i915/intel_display.c         Ville Syrjälä          2018-02-21  2301  		if (ret == 0 && vma->fence)
5935485f8eee35 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2018-02-20  2302  			*out_flags |= PLANE_HAS_FENCE;
9807216f585fc6 drivers/gpu/drm/i915/intel_display.c         Vivek Kasireddy        2015-10-29  2303  	}
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2304  
be1e341513ca23 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2017-01-16  2305  	i915_vma_get(vma);
49ef5294cda256 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-18  2306  err:
9db529aac9381e drivers/gpu/drm/i915/intel_display.c         Daniel Vetter          2017-08-08  2307  	atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
d858d5695f3897 drivers/gpu/drm/i915/intel_display.c         Daniele Ceraolo Spurio 2019-06-13  2308  	intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
058d88c4330f96 drivers/gpu/drm/i915/intel_display.c         Chris Wilson           2016-08-15  2309  	return vma;
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2310  }
6b95a207c1fd55 drivers/gpu/drm/i915/intel_display.c         Kristian Høgsberg      2009-11-18  2311  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40662 bytes --]

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

end of thread, other threads:[~2020-08-25  9:34 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-19  4:34 [Intel-gfx] [PATCH 1/5] Critical-KclockWork-Fixes-intel_atomi.c-PossibleNull Nischal Varide
2020-08-19  4:34 ` [Intel-gfx] [PATCH 2/5] Critical-KlockWork-Fixes-intel_display.c-NullDeref Nischal Varide
2020-08-20  3:24   ` kernel test robot
2020-08-20  3:24     ` kernel test robot
2020-08-25  9:25   ` Dan Carpenter
2020-08-25  9:25     ` Dan Carpenter
2020-08-25  9:25     ` Dan Carpenter
2020-08-19  4:34 ` [Intel-gfx] [PATCH 3/5] Critical-KlockWorks-Fix-intel_sdvo.c-Possible-Null Nischal Varide
2020-08-19  4:34 ` [Intel-gfx] [PATCH 4/5] Critical-KlockWork-Fix-intel_tv.c-Possible-Null Nischal Varide
2020-08-24  6:32   ` Anshuman Gupta
2020-08-25  9:31   ` Dan Carpenter
2020-08-25  9:31     ` Dan Carpenter
2020-08-25  9:31     ` Dan Carpenter
2020-08-19  4:34 ` [Intel-gfx] [PATCH 5/5] Critical-KlockWorks-Fix-intel_crt.c-Possible-Null Nischal Varide
2020-08-24  6:27   ` Anshuman Gupta
2020-08-19 11:52 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] Critical-KclockWork-Fixes-intel_atomi.c-PossibleNull Patchwork
2020-08-19 12:09 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-08-19 18:47 ` [Intel-gfx] [PATCH 1/5] Critical-KclockWork-Fixes-intel_atomi.c-PossibleNull kernel test robot
2020-08-19 18:47   ` kernel test robot
2020-08-19 18:47 ` [Intel-gfx] [PATCH] fix boolreturn.cocci warnings kernel test robot
2020-08-19 18:47   ` kernel test robot
2020-08-19 22:37 ` [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/5] Critical-KclockWork-Fixes-intel_atomi.c-PossibleNull Patchwork
2020-08-24 21:51 [Intel-gfx] [PATCH 2/5] Critical-KlockWork-Fixes-intel_display.c-NullDeref kernel test robot

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.