diff options
| -rw-r--r-- | fs/ubifs/recovery.c | 29 | 
1 files changed, 9 insertions, 20 deletions
| diff --git a/fs/ubifs/recovery.c b/fs/ubifs/recovery.c index 7d922033d666..4d10b6e36ec4 100644 --- a/fs/ubifs/recovery.c +++ b/fs/ubifs/recovery.c @@ -609,7 +609,7 @@ static int drop_incomplete_group(struct ubifs_scan_leb *sleb, int *offs)  struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,  					 int offs, void *sbuf, int grouped)  { -	int ret = 0, err, len = c->leb_size - offs, need_clean = 0; +	int ret = 0, err, len = c->leb_size - offs;  	int start = offs;  	struct ubifs_scan_leb *sleb;  	void *buf = sbuf + offs; @@ -620,9 +620,6 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,  	if (IS_ERR(sleb))  		return sleb; -	if (sleb->ecc) -		need_clean = 1; -  	while (len >= 8) {  		dbg_scan("look at LEB %d:%d (%d bytes left)",  			 lnum, offs, len); @@ -665,21 +662,18 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,  	}  	if (ret == SCANNED_GARBAGE || ret == SCANNED_A_BAD_PAD_NODE) { -		if (is_last_write(c, buf, offs)) { +		if (is_last_write(c, buf, offs))  			clean_buf(c, &buf, lnum, &offs, &len); -			need_clean = 1; -		} else +		else  			goto corrupted_rescan;  	} else if (ret == SCANNED_A_CORRUPT_NODE) { -		if (no_more_nodes(c, buf, len, lnum, offs)) { +		if (no_more_nodes(c, buf, len, lnum, offs))  			clean_buf(c, &buf, lnum, &offs, &len); -			need_clean = 1; -		} else +		else  			goto corrupted_rescan;  	} else if (!is_empty(buf, len)) {  		if (is_last_write(c, buf, offs)) {  			clean_buf(c, &buf, lnum, &offs, &len); -			need_clean = 1;  		} else {  			int corruption = first_non_ff(buf, len); @@ -701,21 +695,16 @@ struct ubifs_scan_leb *ubifs_recover_leb(struct ubifs_info *c, int lnum,  		buf = sbuf + offs;  		len = c->leb_size - offs;  		clean_buf(c, &buf, lnum, &offs, &len); -		need_clean = 1;  	} -	if (offs % c->min_io_size) { +	if (offs % c->min_io_size)  		clean_buf(c, &buf, lnum, &offs, &len); -		need_clean = 1; -	}  	ubifs_end_scan(c, sleb, lnum, offs); -	if (need_clean) { -		err = fix_unclean_leb(c, sleb, start); -		if (err) -			goto error; -	} +	err = fix_unclean_leb(c, sleb, start); +	if (err) +		goto error;  	return sleb; |