aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/md/md-bitmap.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c
index a60e46529d9f..bb45c0ccc1bf 100644
--- a/drivers/md/md-bitmap.c
+++ b/drivers/md/md-bitmap.c
@@ -2162,6 +2162,7 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
2162 for (k = 0; k < page; k++) { 2162 for (k = 0; k < page; k++) {
2163 kfree(new_bp[k].map); 2163 kfree(new_bp[k].map);
2164 } 2164 }
2165 kfree(new_bp);
2165 2166
2166 /* restore some fields from old_counts */ 2167 /* restore some fields from old_counts */
2167 bitmap->counts.bp = old_counts.bp; 2168 bitmap->counts.bp = old_counts.bp;
@@ -2212,6 +2213,14 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
2212 block += old_blocks; 2213 block += old_blocks;
2213 } 2214 }
2214 2215
2216 if (bitmap->counts.bp != old_counts.bp) {
2217 unsigned long k;
2218 for (k = 0; k < old_counts.pages; k++)
2219 if (!old_counts.bp[k].hijacked)
2220 kfree(old_counts.bp[k].map);
2221 kfree(old_counts.bp);
2222 }
2223
2215 if (!init) { 2224 if (!init) {
2216 int i; 2225 int i;
2217 while (block < (chunks << chunkshift)) { 2226 while (block < (chunks << chunkshift)) {