Skip to content

Commit afe6949

Browse files
Tom Rixdhowells
authored andcommitted
afs: check function return
Static analysis reports this problem write.c:773:29: warning: Assigned value is garbage or undefined mapping->writeback_index = next; ^ ~~~~ The call to afs_writepages_region() can return without setting next. So check the function return before using next. Changes: ver #2: - Need to fix the range_cyclic case also[1]. Fixes: e87b03f ("afs: Prepare for use of THPs") Signed-off-by: Tom Rix <trix@redhat.com> Signed-off-by: David Howells <dhowells@redhat.com> Reviewed-by: Marc Dionne <marc.dionne@auristor.com> cc: linux-afs@lists.infradead.org Link: https://lore.kernel.org/r/20210430155031.3287870-1-trix@redhat.com Link: https://lore.kernel.org/r/CAB9dFdvHsLsw7CMnB+4cgciWDSqVjuij4mH3TaXnHQB8sz5rHw@mail.gmail.com/ [1] Link: https://lore.kernel.org/r/162609464716.3133237.10354897554363093252.stgit@warthog.procyon.org.uk/ # v1 Link: https://lore.kernel.org/r/162610727640.3408253.8687445613469681311.stgit@warthog.procyon.org.uk/ # v2
1 parent 6c881ca commit afe6949

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

fs/afs/write.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -771,13 +771,19 @@ int afs_writepages(struct address_space *mapping,
771771
if (wbc->range_cyclic) {
772772
start = mapping->writeback_index * PAGE_SIZE;
773773
ret = afs_writepages_region(mapping, wbc, start, LLONG_MAX, &next);
774-
if (start > 0 && wbc->nr_to_write > 0 && ret == 0)
775-
ret = afs_writepages_region(mapping, wbc, 0, start,
776-
&next);
777-
mapping->writeback_index = next / PAGE_SIZE;
774+
if (ret == 0) {
775+
mapping->writeback_index = next / PAGE_SIZE;
776+
if (start > 0 && wbc->nr_to_write > 0) {
777+
ret = afs_writepages_region(mapping, wbc, 0,
778+
start, &next);
779+
if (ret == 0)
780+
mapping->writeback_index =
781+
next / PAGE_SIZE;
782+
}
783+
}
778784
} else if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) {
779785
ret = afs_writepages_region(mapping, wbc, 0, LLONG_MAX, &next);
780-
if (wbc->nr_to_write > 0)
786+
if (wbc->nr_to_write > 0 && ret == 0)
781787
mapping->writeback_index = next;
782788
} else {
783789
ret = afs_writepages_region(mapping, wbc,

0 commit comments

Comments
 (0)