hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/fs/btrfs/extent_io.c
....@@ -4034,11 +4034,12 @@
40344034 free_extent_buffer(eb);
40354035
40364036 /*
4037
- * the filesystem may choose to bump up nr_to_write.
4037
+ * The filesystem may choose to bump up nr_to_write.
40384038 * We have to make sure to honor the new nr_to_write
4039
- * at any time
4039
+ * at any time.
40404040 */
4041
- nr_to_write_done = wbc->nr_to_write <= 0;
4041
+ nr_to_write_done = (wbc->sync_mode == WB_SYNC_NONE &&
4042
+ wbc->nr_to_write <= 0);
40424043 }
40434044 pagevec_release(&pvec);
40444045 cond_resched();
....@@ -5633,8 +5634,14 @@
56335634 char *dst = (char *)dstv;
56345635 unsigned long i = start >> PAGE_SHIFT;
56355636
5636
- if (check_eb_range(eb, start, len))
5637
+ if (check_eb_range(eb, start, len)) {
5638
+ /*
5639
+ * Invalid range hit, reset the memory, so callers won't get
5640
+ * some random garbage for their uninitialzed memory.
5641
+ */
5642
+ memset(dstv, 0, len);
56375643 return;
5644
+ }
56385645
56395646 offset = offset_in_page(start);
56405647