.. | .. |
---|
464 | 464 | for (i = 0; i < -pebs; i++) { |
---|
465 | 465 | err = ubi_eba_unmap_leb(ubi, vol, reserved_pebs + i); |
---|
466 | 466 | if (err) |
---|
467 | | - goto out_acc; |
---|
| 467 | + goto out_free; |
---|
468 | 468 | } |
---|
469 | 469 | spin_lock(&ubi->volumes_lock); |
---|
470 | 470 | ubi->rsvd_pebs += pebs; |
---|
.. | .. |
---|
512 | 512 | ubi->avail_pebs += pebs; |
---|
513 | 513 | spin_unlock(&ubi->volumes_lock); |
---|
514 | 514 | } |
---|
| 515 | + return err; |
---|
| 516 | + |
---|
515 | 517 | out_free: |
---|
516 | | - kfree(new_eba_tbl); |
---|
| 518 | + ubi_eba_destroy_table(new_eba_tbl); |
---|
517 | 519 | return err; |
---|
518 | 520 | } |
---|
519 | 521 | |
---|
.. | .. |
---|
580 | 582 | if (err) { |
---|
581 | 583 | ubi_err(ubi, "cannot add character device for volume %d, error %d", |
---|
582 | 584 | vol_id, err); |
---|
| 585 | + vol_release(&vol->dev); |
---|
583 | 586 | return err; |
---|
584 | 587 | } |
---|
585 | 588 | |
---|
.. | .. |
---|
590 | 593 | vol->dev.groups = volume_dev_groups; |
---|
591 | 594 | dev_set_name(&vol->dev, "%s_%d", ubi->ubi_name, vol->vol_id); |
---|
592 | 595 | 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 | + } |
---|
595 | 601 | |
---|
596 | 602 | self_check_volumes(ubi); |
---|
597 | | - return err; |
---|
598 | | - |
---|
599 | | -out_cdev: |
---|
600 | | - cdev_del(&vol->cdev); |
---|
601 | 603 | return err; |
---|
602 | 604 | } |
---|
603 | 605 | |
---|