diff --git a/[refs] b/[refs] index 332f3d512f4e..dc75d18a6bc3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6171586a7ae5198988774e8480631e8d15f65dfe +refs/heads/master: 3560160aa26ebced1944aaa2e7e436d2a1b1bf70 diff --git a/trunk/fs/jffs2/scan.c b/trunk/fs/jffs2/scan.c index 06637050749d..192b0bd21180 100644 --- a/trunk/fs/jffs2/scan.c +++ b/trunk/fs/jffs2/scan.c @@ -516,10 +516,15 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo if (sumptr) { err = jffs2_sum_scan_sumnode(c, jeb, sumptr, sumlen, &pseudo_random); - if (err) - return err; + if (buf_size && sumlen > buf_size) kfree(sumptr); + /* If it returns with a real error, bail. + If it returns positive, that's a block classification + (i.e. BLK_STATE_xxx) so return that too. + If it returns zero, fall through to full scan. */ + if (err) + return err; } }