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

Commit c7665432 authored by Komal Bajaj's avatar Komal Bajaj Committed by Gerrit - the friendly Code Review server
Browse files

soc: qcom: Add check to handle out of bound access



Adding check in msm_minidump_add_region() to handle scenarios for
out of bound access while adding region in minidump table in SMEM.

Change-Id: Ic20663dbd2fa8ae96899930a7f7ba79dc204ff5e
Signed-off-by: default avatarKomal Bajaj <kbajaj@codeaurora.org>
Signed-off-by: default avatarSrinivasarao P <spathi@codeaurora.org>
parent 1b85ca56
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2017-2018,2021, 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
@@ -221,6 +221,7 @@ EXPORT_SYMBOL(msm_minidump_update_region);
int msm_minidump_add_region(const struct md_region *entry)
{
	u32 entries;
	u32 toc_init;
	struct md_region *mdr;

	if (validate_region(entry))
@@ -239,6 +240,19 @@ int msm_minidump_add_region(const struct md_region *entry)
		return -ENOMEM;
	}

	toc_init = 0;
	if (minidump_table.md_ss_toc &&
		(minidump_table.md_ss_toc->md_ss_enable_status ==
		MD_SS_ENABLED)) {
		toc_init = 1;
		if (minidump_table.md_ss_toc->ss_region_count >=
			MAX_NUM_ENTRIES) {
			spin_unlock(&mdt_lock);
			pr_err("Maximum regions in minidump table reached.\n");
			return -ENOMEM;
		}
	}

	mdr = &minidump_table.entry[entries];
	strlcpy(mdr->name, entry->name, sizeof(mdr->name));
	mdr->virt_addr = entry->virt_addr;
@@ -248,9 +262,7 @@ int msm_minidump_add_region(const struct md_region *entry)

	minidump_table.num_regions = entries + 1;

	if (minidump_table.md_ss_toc &&
		(minidump_table.md_ss_toc->md_ss_enable_status ==
		MD_SS_ENABLED))
	if (toc_init)
		md_update_ss_toc(entry);
	else
		pendings++;