hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/mtd/ubi/vmt.c
....@@ -464,7 +464,7 @@
464464 for (i = 0; i < -pebs; i++) {
465465 err = ubi_eba_unmap_leb(ubi, vol, reserved_pebs + i);
466466 if (err)
467
- goto out_acc;
467
+ goto out_free;
468468 }
469469 spin_lock(&ubi->volumes_lock);
470470 ubi->rsvd_pebs += pebs;
....@@ -512,8 +512,10 @@
512512 ubi->avail_pebs += pebs;
513513 spin_unlock(&ubi->volumes_lock);
514514 }
515
+ return err;
516
+
515517 out_free:
516
- kfree(new_eba_tbl);
518
+ ubi_eba_destroy_table(new_eba_tbl);
517519 return err;
518520 }
519521
....@@ -580,6 +582,7 @@
580582 if (err) {
581583 ubi_err(ubi, "cannot add character device for volume %d, error %d",
582584 vol_id, err);
585
+ vol_release(&vol->dev);
583586 return err;
584587 }
585588
....@@ -590,14 +593,13 @@
590593 vol->dev.groups = volume_dev_groups;
591594 dev_set_name(&vol->dev, "%s_%d", ubi->ubi_name, vol->vol_id);
592595 err = device_register(&vol->dev);
593
- if (err)
594
- goto out_cdev;
596
+ if (err) {
597
+ cdev_del(&vol->cdev);
598
+ put_device(&vol->dev);
599
+ return err;
600
+ }
595601
596602 self_check_volumes(ubi);
597
- return err;
598
-
599
-out_cdev:
600
- cdev_del(&vol->cdev);
601603 return err;
602604 }
603605