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

This commit is contained in:
qctecmdr 2021-05-01 15:09:13 -07:00 • committed by Gerrit - the friendly Code Review server
commit a09e83797e

View file

@ -252,6 +252,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;
unsigned long flags;
@ -272,6 +273,18 @@ 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_irqrestore(&mdt_lock, flags);
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;
@ -281,9 +294,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++;