diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/jffs2/scan.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 06637050749d..192b0bd21180 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c | |||
@@ -516,10 +516,15 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo | |||
516 | 516 | ||
517 | if (sumptr) { | 517 | if (sumptr) { |
518 | err = jffs2_sum_scan_sumnode(c, jeb, sumptr, sumlen, &pseudo_random); | 518 | err = jffs2_sum_scan_sumnode(c, jeb, sumptr, sumlen, &pseudo_random); |
519 | if (err) | 519 | |
520 | return err; | ||
521 | if (buf_size && sumlen > buf_size) | 520 | if (buf_size && sumlen > buf_size) |
522 | kfree(sumptr); | 521 | kfree(sumptr); |
522 | /* If it returns with a real error, bail. | ||
523 | If it returns positive, that's a block classification | ||
524 | (i.e. BLK_STATE_xxx) so return that too. | ||
525 | If it returns zero, fall through to full scan. */ | ||
526 | if (err) | ||
527 | return err; | ||
523 | } | 528 | } |
524 | } | 529 | } |
525 | 530 | ||