Skip to content

Commit 7296a6d

Browse files
author
Darrick J. Wong
committed
xfs: drop the _safe behavior from the xbitmap foreach macro
It's not safe to edit bitmap intervals while we're iterating them with for_each_xbitmap_extent. None of the existing callers actually need that ability anyway, so drop the safe variable. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Dave Chinner <dchinner@redhat.com>
1 parent 178b48d commit 7296a6d

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

fs/xfs/scrub/bitmap.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
#include "scrub/scrub.h"
1414
#include "scrub/bitmap.h"
1515

16-
#define for_each_xbitmap_extent(bex, n, bitmap) \
17-
list_for_each_entry_safe((bex), (n), &(bitmap)->list, list)
16+
/* Iterate each interval of a bitmap. Do not change the bitmap. */
17+
#define for_each_xbitmap_extent(bex, bitmap) \
18+
list_for_each_entry((bex), &(bitmap)->list, list)
1819

1920
/*
2021
* Set a range of this bitmap. Caller must ensure the range is not set.
@@ -46,10 +47,9 @@ void
4647
xbitmap_destroy(
4748
struct xbitmap *bitmap)
4849
{
49-
struct xbitmap_range *bmr;
50-
struct xbitmap_range *n;
50+
struct xbitmap_range *bmr, *n;
5151

52-
for_each_xbitmap_extent(bmr, n, bitmap) {
52+
list_for_each_entry_safe(bmr, n, &bitmap->list, list) {
5353
list_del(&bmr->list);
5454
kfree(bmr);
5555
}
@@ -308,10 +308,9 @@ xbitmap_hweight(
308308
struct xbitmap *bitmap)
309309
{
310310
struct xbitmap_range *bmr;
311-
struct xbitmap_range *n;
312311
uint64_t ret = 0;
313312

314-
for_each_xbitmap_extent(bmr, n, bitmap)
313+
for_each_xbitmap_extent(bmr, bitmap)
315314
ret += bmr->len;
316315

317316
return ret;
@@ -324,10 +323,10 @@ xbitmap_walk(
324323
xbitmap_walk_fn fn,
325324
void *priv)
326325
{
327-
struct xbitmap_range *bex, *n;
326+
struct xbitmap_range *bex;
328327
int error = 0;
329328

330-
for_each_xbitmap_extent(bex, n, bitmap) {
329+
for_each_xbitmap_extent(bex, bitmap) {
331330
error = fn(bex->start, bex->len, priv);
332331
if (error)
333332
break;

0 commit comments

Comments
 (0)