diff mbox

drm/i915: check pin validity of VBT configuration

Message ID BEC9F67575FA1E429CA7CF5AE9BE363432AD1018@SHSMSX104.ccr.corp.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

fli24 Oct. 13, 2017, 7:06 a.m. UTC
In this patch, add validity checking of pin configuration from VBT;
If invalid, print log, ignore the configuration.

Without this patch, in case of invalid pin configured by VBT, panic is hit:
[   45.778820] WARN_ON(!intel_gmbus_is_valid_pin(dev_priv, pin))
[   45.778820] ------------[ cut here ]------------
[   45.778820] WARNING: CPU: 0 PID: 14 at
drivers/gpu/drm/i915/intel_i2c.c:754 intel_gmbus_get_adapter+0x43/0x50
[   45.848470] BUG: unable to handle kernel NULL pointer dereference
at 0000000000000010
[   45.848470] IP: i2c_transfer+0x15/0xc0
[   45.848470]  drm_do_probe_ddc_edid+0xe4/0x160
[   45.848470]  drm_get_edid+0x351/0x3d0
[   45.848470]  ? drm_get_edid+0x5/0x3d0
[   45.848470]  ? intel_gmbus_get_adapter+0x45/0x50
[   45.848470]  intel_hdmi_set_edid+0x4a/0x1a0

Signed-off-by: Li, Fei <fei.li@intel.com>
---
 drivers/gpu/drm/i915/intel_bios.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 2afcc52..f9ce156 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1199,6 +1199,12 @@  static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
 			info->alternate_ddc_pin = 0;
 		}
 
+                if (!intel_gmbus_is_valid_pin(dev_priv, info->alternate_ddc_pin)) {
+                        DRM_ERROR("pin %d is invalid for port %c, ignore it\n",
+                            info->alternate_ddc_pin, port_name(port));
+                        info->alternate_ddc_pin = 0;
+                }
+
 		sanitize_ddc_pin(dev_priv, port);
 	}