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

Commit 04e2ea67 authored by Suresh Siddha's avatar Suresh Siddha Committed by Ingo Molnar
Browse files

dmar: use list_for_each_entry_safe() in dmar_dev_scope_init()



In dmar_dev_scope_init(), functions called under for_each_drhd_unit()/
for_each_rmrr_units() can delete the list entry under some error conditions.

So we should use list_for_each_entry_safe() for safe traversal.

Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
Acked-by: default avatarYinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 74d04bd7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -397,10 +397,10 @@ dmar_find_matched_drhd_unit(struct pci_dev *dev)

int __init dmar_dev_scope_init(void)
{
	struct dmar_drhd_unit *drhd;
	struct dmar_drhd_unit *drhd, *drhd_n;
	int ret = -ENODEV;

	for_each_drhd_unit(drhd) {
	list_for_each_entry_safe(drhd, drhd_n, &dmar_drhd_units, list) {
		ret = dmar_parse_dev(drhd);
		if (ret)
			return ret;
@@ -408,8 +408,8 @@ int __init dmar_dev_scope_init(void)

#ifdef CONFIG_DMAR
	{
		struct dmar_rmrr_unit *rmrr;
		for_each_rmrr_units(rmrr) {
		struct dmar_rmrr_unit *rmrr, *rmrr_n;
		list_for_each_entry_safe(rmrr, rmrr_n, &dmar_rmrr_units, list) {
			ret = rmrr_parse_dev(rmrr);
			if (ret)
				return ret;