|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Fix list walking in hash_table.c
Neither HashTableLookup() nor HashTableRemove() update the iterator in their
attempted list walks, leading to an endless spin. This patch changes the
while loops to for loops and fixes the problem.
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
Reported-by: Rafal Wojdyla <omeg@xxxxxxxxxxxxxxxxxxxxxx>
---
src/xenbus/hash_table.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/xenbus/hash_table.c b/src/xenbus/hash_table.c
index c7c6101..b271abd 100644
--- a/src/xenbus/hash_table.c
+++ b/src/xenbus/hash_table.c
@@ -249,8 +249,9 @@ HashTableRemove(
HashTableBucketLock(Bucket, TRUE, &Irql);
- ListEntry = Bucket->List.Flink;
- while (ListEntry != &Bucket->List) {
+ for (ListEntry = Bucket->List.Flink;
+ ListEntry != &Bucket->List;
+ ListEntry = ListEntry->Flink) {
Node = CONTAINING_RECORD(ListEntry, XENBUS_HASH_TABLE_NODE, ListEntry);
if (Node->Key == Key)
@@ -294,8 +295,9 @@ HashTableLookup(
HashTableBucketLock(Bucket, FALSE, &Irql);
- ListEntry = Bucket->List.Flink;
- while (ListEntry != &Bucket->List) {
+ for (ListEntry = Bucket->List.Flink;
+ ListEntry != &Bucket->List;
+ ListEntry = ListEntry->Flink) {
Node = CONTAINING_RECORD(ListEntry, XENBUS_HASH_TABLE_NODE, ListEntry);
if (Node->Key == Key)
--
2.1.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |