Move ent = ent->next; to while. It was outside the loop so if there
are more than 2 elements and we are looking for 3rd element it causes
infinite loop..
Fix el->next zeroing. It causes segfault in mdstat_free(). Theses
issues were not visible in my testing because I had only 2 MD devices.
Fixes: 4b3644ab4ce6 ("mdstat: Rework mdstat external arrays handling")
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
ent->next = el->next;
break;
}
+
+ ent = ent->next;
}
- ent = ent->next;
}
+ /* Guard if not found or list is empty - not allowed */
assert(ent);
- ent->next = NULL;
+ el->next = NULL;
}
void free_mdstat(struct mdstat_ent *ms)