| .. | .. |
|---|
| 4034 | 4034 | free_extent_buffer(eb); |
|---|
| 4035 | 4035 | |
|---|
| 4036 | 4036 | /* |
|---|
| 4037 | | - * the filesystem may choose to bump up nr_to_write. |
|---|
| 4037 | + * The filesystem may choose to bump up nr_to_write. |
|---|
| 4038 | 4038 | * We have to make sure to honor the new nr_to_write |
|---|
| 4039 | | - * at any time |
|---|
| 4039 | + * at any time. |
|---|
| 4040 | 4040 | */ |
|---|
| 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); |
|---|
| 4042 | 4043 | } |
|---|
| 4043 | 4044 | pagevec_release(&pvec); |
|---|
| 4044 | 4045 | cond_resched(); |
|---|
| .. | .. |
|---|
| 5633 | 5634 | char *dst = (char *)dstv; |
|---|
| 5634 | 5635 | unsigned long i = start >> PAGE_SHIFT; |
|---|
| 5635 | 5636 | |
|---|
| 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); |
|---|
| 5637 | 5643 | return; |
|---|
| 5644 | + } |
|---|
| 5638 | 5645 | |
|---|
| 5639 | 5646 | offset = offset_in_page(start); |
|---|
| 5640 | 5647 | |
|---|