diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-09-03 19:58:34 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-16 10:53:05 -0400 |
commit | 04e2ea67069e285404192a35c24dfe7c53b9c61f (patch) | |
tree | 38386a8889d61b64d595172b52de96d9f501cc89 /drivers/pci/dmar.c | |
parent | 74d04bd7dcb4c6130fd8a314d28bfecc9ae7c360 (diff) |
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: Suresh Siddha <suresh.b.siddha@intel.com>
Acked-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index d281a03695f7..ceb338dfa3f2 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -397,10 +397,10 @@ dmar_find_matched_drhd_unit(struct pci_dev *dev) | |||
397 | 397 | ||
398 | int __init dmar_dev_scope_init(void) | 398 | int __init dmar_dev_scope_init(void) |
399 | { | 399 | { |
400 | struct dmar_drhd_unit *drhd; | 400 | struct dmar_drhd_unit *drhd, *drhd_n; |
401 | int ret = -ENODEV; | 401 | int ret = -ENODEV; |
402 | 402 | ||
403 | for_each_drhd_unit(drhd) { | 403 | list_for_each_entry_safe(drhd, drhd_n, &dmar_drhd_units, list) { |
404 | ret = dmar_parse_dev(drhd); | 404 | ret = dmar_parse_dev(drhd); |
405 | if (ret) | 405 | if (ret) |
406 | return ret; | 406 | return ret; |
@@ -408,8 +408,8 @@ int __init dmar_dev_scope_init(void) | |||
408 | 408 | ||
409 | #ifdef CONFIG_DMAR | 409 | #ifdef CONFIG_DMAR |
410 | { | 410 | { |
411 | struct dmar_rmrr_unit *rmrr; | 411 | struct dmar_rmrr_unit *rmrr, *rmrr_n; |
412 | for_each_rmrr_units(rmrr) { | 412 | list_for_each_entry_safe(rmrr, rmrr_n, &dmar_rmrr_units, list) { |
413 | ret = rmrr_parse_dev(rmrr); | 413 | ret = rmrr_parse_dev(rmrr); |
414 | if (ret) | 414 | if (ret) |
415 | return ret; | 415 | return ret; |