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

Commit 7d0e0117 authored by Tony Truong's avatar Tony Truong Committed by Gerrit - the friendly Code Review server
Browse files

msm: msi: add proper check before accessing variables



Add proper check before accessing variables to avoid null
pointer dereference.

Change-Id: Iedfc88288003b6add4149825bed040d3db00be8c
Signed-off-by: default avatarTony Truong <truong@codeaurora.org>
parent 4ea4bac2
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -173,6 +173,9 @@ static int msm_msi_irq_set_affinity(struct irq_data *data,
{
	struct irq_data *parent_data = irq_get_irq_data(irqd_to_hwirq(data));

	if (!parent_data)
		return -ENODEV;

	/* set affinity for MSM MSI HW IRQ */
	if (parent_data->chip->irq_set_affinity)
		return parent_data->chip->irq_set_affinity(parent_data,
@@ -187,6 +190,9 @@ static void msm_msi_irq_compose_msi_msg(struct irq_data *data,
	struct msm_msi_client *client = irq_data_get_irq_chip_data(data);
	struct irq_data *parent_data = irq_get_irq_data(irqd_to_hwirq(data));

	if (!parent_data)
		return;

	msg->address_lo = lower_32_bits(client->msi_addr);
	msg->address_hi = upper_32_bits(client->msi_addr);

@@ -252,10 +258,16 @@ static void msm_msi_irq_domain_free(struct irq_domain *domain,
				      unsigned int virq, unsigned int nr_irqs)
{
	struct irq_data *data = irq_domain_get_irq_data(domain, virq);
	struct msm_msi_client *client = irq_data_get_irq_chip_data(data);
	struct msm_msi *msi = client->msi;
	struct msm_msi_client *client;
	struct msm_msi *msi;
	int i;

	if (!data)
		return;

	client = irq_data_get_irq_chip_data(data);
	msi = client->msi;

	mutex_lock(&msi->mutex);
	for (i = 0; i < nr_irqs; i++)
		if (msi->irqs[i].virq == virq)