The comment above ulist_next stated that it's allowed to call ulist_add while enumerating. This is actually not allowed as an add may realocate the nodes buffer und thus make the prev pointer invalid.
Signed-off-by: Alexander Block <[email protected]> --- fs/btrfs/ulist.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/ulist.c b/fs/btrfs/ulist.c index 12f5147..07ea3e5 100644 --- a/fs/btrfs/ulist.c +++ b/fs/btrfs/ulist.c @@ -198,8 +198,8 @@ EXPORT_SYMBOL(ulist_add); * end is reached. No guarantee is made with respect to the order in which * the elements are returned. They might neither be returned in order of * addition nor in ascending order. - * It is allowed to call ulist_add during an enumeration. Newly added items - * are guaranteed to show up in the running enumeration. + * It is not allowed to call ulist_add during an enumeration as this would + * cause undefined behavior. */ struct ulist_node *ulist_next(struct ulist *ulist, struct ulist_node *prev) { -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
