mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 07:04:10 +08:00
net: ipa: flag duplicate memory regions
Add a test in ipa_mem_valid() to ensure no memory region is defined more than once, using a bitmap to record each defined memory region. Skip over undefined regions when checking (we can have any number of those). Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
75bcfde6c1
commit
eadf7f9376
@ -217,6 +217,7 @@ static bool ipa_mem_valid_one(struct ipa *ipa, const struct ipa_mem *mem)
|
|||||||
/* Verify each defined memory region is valid. */
|
/* Verify each defined memory region is valid. */
|
||||||
static bool ipa_mem_valid(struct ipa *ipa, const struct ipa_mem_data *mem_data)
|
static bool ipa_mem_valid(struct ipa *ipa, const struct ipa_mem_data *mem_data)
|
||||||
{
|
{
|
||||||
|
DECLARE_BITMAP(regions, IPA_MEM_COUNT) = { };
|
||||||
struct device *dev = &ipa->pdev->dev;
|
struct device *dev = &ipa->pdev->dev;
|
||||||
enum ipa_mem_id mem_id;
|
enum ipa_mem_id mem_id;
|
||||||
|
|
||||||
@ -229,6 +230,14 @@ static bool ipa_mem_valid(struct ipa *ipa, const struct ipa_mem_data *mem_data)
|
|||||||
for (mem_id = 0; mem_id < mem_data->local_count; mem_id++) {
|
for (mem_id = 0; mem_id < mem_data->local_count; mem_id++) {
|
||||||
const struct ipa_mem *mem = &mem_data->local[mem_id];
|
const struct ipa_mem *mem = &mem_data->local[mem_id];
|
||||||
|
|
||||||
|
if (mem_id == IPA_MEM_UNDEFINED)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (__test_and_set_bit(mem->id, regions)) {
|
||||||
|
dev_err(dev, "duplicate memory region %u\n", mem->id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Defined regions have non-zero size and/or canary count */
|
/* Defined regions have non-zero size and/or canary count */
|
||||||
if (mem->size || mem->canary_count) {
|
if (mem->size || mem->canary_count) {
|
||||||
if (ipa_mem_valid_one(ipa, mem))
|
if (ipa_mem_valid_one(ipa, mem))
|
||||||
|
Loading…
Reference in New Issue
Block a user