Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

regulator: max8998: Convert ot use devm_kzalloc

Also simplify the error handling to start unwind from the place
regulator_register fails.

No need to check rdev[i] is NULL or not before calling regulator_unregister.
regulator_unregister is safe if rdev is NULL,

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

authored by

Axel Lin and committed by
Mark Brown
0f80ea14 8ae5767b

+17 -28
+17 -28
drivers/regulator/max8998.c
··· 718 718 return -ENODEV; 719 719 } 720 720 721 - max8998 = kzalloc(sizeof(struct max8998_data), GFP_KERNEL); 721 + max8998 = devm_kzalloc(&pdev->dev, sizeof(struct max8998_data), 722 + GFP_KERNEL); 722 723 if (!max8998) 723 724 return -ENOMEM; 724 725 725 726 size = sizeof(struct regulator_dev *) * pdata->num_regulators; 726 - max8998->rdev = kzalloc(size, GFP_KERNEL); 727 - if (!max8998->rdev) { 728 - kfree(max8998); 727 + max8998->rdev = devm_kzalloc(&pdev->dev, size, GFP_KERNEL); 728 + if (!max8998->rdev) 729 729 return -ENOMEM; 730 - } 731 730 732 731 rdev = max8998->rdev; 733 732 max8998->dev = &pdev->dev; ··· 750 751 printk(KERN_ERR "MAX8998 SET1 GPIO defined as 0 !\n"); 751 752 WARN_ON(!pdata->buck1_set1); 752 753 ret = -EIO; 753 - goto err_free_mem; 754 + goto err_out; 754 755 } 755 756 /* Check if SET2 is not equal to 0 */ 756 757 if (!pdata->buck1_set2) { 757 758 printk(KERN_ERR "MAX8998 SET2 GPIO defined as 0 !\n"); 758 759 WARN_ON(!pdata->buck1_set2); 759 760 ret = -EIO; 760 - goto err_free_mem; 761 + goto err_out; 761 762 } 762 763 763 764 gpio_request(pdata->buck1_set1, "MAX8998 BUCK1_SET1"); ··· 777 778 max8998->buck1_vol[0] = i; 778 779 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE1, i); 779 780 if (ret) 780 - goto err_free_mem; 781 + goto err_out; 781 782 782 783 /* Set predefined value for BUCK1 register 2 */ 783 784 i = 0; ··· 789 790 max8998->buck1_vol[1] = i; 790 791 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE2, i); 791 792 if (ret) 792 - goto err_free_mem; 793 + goto err_out; 793 794 794 795 /* Set predefined value for BUCK1 register 3 */ 795 796 i = 0; ··· 801 802 max8998->buck1_vol[2] = i; 802 803 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE3, i); 803 804 if (ret) 804 - goto err_free_mem; 805 + goto err_out; 805 806 806 807 /* Set predefined value for BUCK1 register 4 */ 807 808 i = 0; ··· 813 814 max8998->buck1_vol[3] = i; 814 815 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE4, i); 815 816 if (ret) 816 - goto err_free_mem; 817 + goto err_out; 817 818 818 819 } 819 820 ··· 823 824 printk(KERN_ERR "MAX8998 SET3 GPIO defined as 0 !\n"); 824 825 WARN_ON(!pdata->buck2_set3); 825 826 ret = -EIO; 826 - goto err_free_mem; 827 + goto err_out; 827 828 } 828 829 gpio_request(pdata->buck2_set3, "MAX8998 BUCK2_SET3"); 829 830 gpio_direction_output(pdata->buck2_set3, ··· 838 839 max8998->buck2_vol[0] = i; 839 840 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE1, i); 840 841 if (ret) 841 - goto err_free_mem; 842 + goto err_out; 842 843 843 844 /* BUCK2 register 2 */ 844 845 i = 0; ··· 849 850 max8998->buck2_vol[1] = i; 850 851 ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE2, i); 851 852 if (ret) 852 - goto err_free_mem; 853 + goto err_out; 853 854 } 854 855 855 856 for (i = 0; i < pdata->num_regulators; i++) { ··· 879 880 880 881 return 0; 881 882 err: 882 - for (i = 0; i < max8998->num_regulators; i++) 883 - if (rdev[i]) 884 - regulator_unregister(rdev[i]); 885 - 886 - err_free_mem: 887 - kfree(max8998->rdev); 888 - kfree(max8998); 889 - 883 + while (--i >= 0) 884 + regulator_unregister(rdev[i]); 885 + err_out: 890 886 return ret; 891 887 } 892 888 ··· 892 898 int i; 893 899 894 900 for (i = 0; i < max8998->num_regulators; i++) 895 - if (rdev[i]) 896 - regulator_unregister(rdev[i]); 897 - 898 - kfree(max8998->rdev); 899 - kfree(max8998); 900 - 901 + regulator_unregister(rdev[i]); 901 902 return 0; 902 903 } 903 904