diff options
| -rw-r--r-- | drivers/mtd/ubi/build.c | 8 | ||||
| -rw-r--r-- | drivers/mtd/ubi/wl.c | 1 | 
2 files changed, 5 insertions, 4 deletions
| diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c index d144ac29b..a708162e4 100644 --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c @@ -478,19 +478,19 @@ static int attach_by_scanning(struct ubi_device *ubi)  	err = ubi_eba_init_scan(ubi, si);  	if (err) -		goto out_wl; +		goto out_vtbl;  	err = ubi_wl_init_scan(ubi, si);  	if (err) -		goto out_vtbl; +		goto out_eba;  	ubi_scan_destroy_si(si);  	return 0; +out_eba: +	ubi_eba_close(ubi);  out_vtbl:  	vfree(ubi->vtbl); -out_wl: -	ubi_wl_close(ubi);  out_si:  	ubi_scan_destroy_si(si);  	return err; diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c index 88b867a0c..d1ba722cb 100644 --- a/drivers/mtd/ubi/wl.c +++ b/drivers/mtd/ubi/wl.c @@ -1538,6 +1538,7 @@ int ubi_wl_init_scan(struct ubi_device *ubi, struct ubi_scan_info *si)  	if (ubi->avail_pebs < WL_RESERVED_PEBS) {  		ubi_err("no enough physical eraseblocks (%d, need %d)",  			ubi->avail_pebs, WL_RESERVED_PEBS); +		err = -ENOSPC;  		goto out_free;  	}  	ubi->avail_pebs -= WL_RESERVED_PEBS; |