Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit adebb0da authored by Rahul Sharma's avatar Rahul Sharma Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm/sde: fix null pointer dereference



This change is done to fix null pointer dereference
in sde_core_irq_preinstall().

Change-Id: I448e275e2ce5708738651d1cf7f66329bcf47451
Signed-off-by: default avatarRahul Sharma <rahsha@codeaurora.org>
parent 57cc803c
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2015-2017,2019 The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -388,10 +388,28 @@ void sde_core_irq_preinstall(struct sde_kms *sde_kms)
	sde_kms->irq_obj.total_irqs = sde_kms->hw_intr->irq_idx_tbl_size;
	sde_kms->irq_obj.irq_cb_tbl = kcalloc(sde_kms->irq_obj.total_irqs,
			sizeof(struct list_head), GFP_KERNEL);
	if (sde_kms->irq_obj.irq_cb_tbl == NULL) {
		SDE_ERROR("Failed to allocate\n");
		return;
	}
	sde_kms->irq_obj.enable_counts = kcalloc(sde_kms->irq_obj.total_irqs,
			sizeof(atomic_t), GFP_KERNEL);
	if (sde_kms->irq_obj.enable_counts == NULL) {
		kfree(sde_kms->irq_obj.irq_cb_tbl);
		sde_kms->irq_obj.irq_cb_tbl = NULL;
		SDE_ERROR("Failed to allocate\n");
		return;
	}
	sde_kms->irq_obj.irq_counts = kcalloc(sde_kms->irq_obj.total_irqs,
			sizeof(atomic_t), GFP_KERNEL);
	if (sde_kms->irq_obj.irq_counts == NULL) {
		kfree(sde_kms->irq_obj.irq_cb_tbl);
		kfree(sde_kms->irq_obj.enable_counts);
		sde_kms->irq_obj.irq_cb_tbl = NULL;
		sde_kms->irq_obj.enable_counts = NULL;
		SDE_ERROR("Failed to allocate\n");
		return;
	}
	for (i = 0; i < sde_kms->irq_obj.total_irqs; i++) {
		INIT_LIST_HEAD(&sde_kms->irq_obj.irq_cb_tbl[i]);
		atomic_set(&sde_kms->irq_obj.enable_counts[i], 0);