> +void > +xfs_dquot_done( > + struct xfs_buf *bp) > +{ > + struct xfs_log_item *lip; > + > + while (!list_empty(&bp->b_li_list)) { > + lip = list_first_entry(&bp->b_li_list, struct xfs_log_item, > + li_bio_list); > + > + /* > + * Remove the item from the list, so we don't have any > + * confusion if the item is added to another buf. > + * Don't touch the log item after calling its > + * callback, because it could have freed itself. > + */ > + list_del_init(&lip->li_bio_list); > + xfs_qm_dqflush_done(lip); I know this was just moved, but I find the comment horrible confusing and not actually adding any value. Can we just remove it? For extra clarity this could also be switched to list_for_each_entry_safe: list_for_each_entry_safe(lip, n, &bp->b_li_list, li_bio_list) { list_del_init(&lip->li_bio_list); xfs_qm_dqflush_done(lip); }