drm/msm/sde: add mode config mutex lock for connector search

Connection enumeration is used by writeback device to find the
writeback connector. Using connector for_each macros requires
lock of mode config mutex.  Add mutex protection for writeback
connector enumeration.

Change-Id: Ib299f1576cb17d30543daa00df95924b51bc862f
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c b/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
index 940a5f6..987f376 100644
--- a/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
+++ b/drivers/gpu/drm/msm/sde/sde_encoder_phys_wb.c
@@ -781,15 +781,25 @@
 {
 	struct sde_encoder_phys_wb *wb_enc = to_sde_encoder_phys_wb(phys_enc);
 	struct sde_hw_wb *hw_wb = wb_enc->hw_wb;
+	struct drm_device *dev;
 	struct drm_connector *connector;
 
 	SDE_DEBUG("[wb:%d]\n", hw_wb->idx - WB_0);
 
+	if (!wb_enc->base.parent || !wb_enc->base.parent->dev) {
+		SDE_ERROR("invalid drm device\n");
+		return;
+	}
+	dev = wb_enc->base.parent->dev;
+
 	/* find associated writeback connector */
+	mutex_lock(&dev->mode_config.mutex);
 	drm_for_each_connector(connector, phys_enc->parent->dev) {
 		if (connector->encoder == phys_enc->parent)
 			break;
 	}
+	mutex_unlock(&dev->mode_config.mutex);
+
 	if (!connector || connector->encoder != phys_enc->parent) {
 		SDE_ERROR("failed to find writeback connector\n");
 		return;