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

Merge tag 'samsung-drivers-5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/drivers

Samsung soc drivers changes for v5.4, part 2

Fixes and cleanups for recently introduced Exynos chipid driver.

* tag 'samsung-drivers-5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
soc: samsung: chipid: Select missing dependency for EXYNOS_CHIPID
soc: samsung: chipid: Remove the regmap lookup error log
soc: samsung: chipid: Fix memory leak in error path

Link: https://lore.kernel.org/r/20190904175002.10487-3-krzk@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+12 -7
+1
drivers/soc/samsung/Kconfig
··· 10 10 config EXYNOS_CHIPID 11 11 bool "Exynos Chipid controller driver" if COMPILE_TEST 12 12 depends on ARCH_EXYNOS || COMPILE_TEST 13 + select MFD_SYSCON 13 14 select SOC_BUS 14 15 15 16 config EXYNOS_PMU
+11 -7
drivers/soc/samsung/exynos-chipid.c
··· 56 56 int ret; 57 57 58 58 regmap = syscon_regmap_lookup_by_compatible("samsung,exynos4210-chipid"); 59 - if (IS_ERR(regmap)) { 60 - pr_err("Failed to get CHIPID regmap\n"); 59 + if (IS_ERR(regmap)) 61 60 return PTR_ERR(regmap); 62 - } 63 61 64 62 ret = regmap_read(regmap, EXYNOS_CHIPID_REG_PRO_ID, &product_id); 65 63 if (ret < 0) ··· 79 81 soc_dev_attr->soc_id = product_id_to_soc_id(product_id); 80 82 if (!soc_dev_attr->soc_id) { 81 83 pr_err("Unknown SoC\n"); 82 - return -ENODEV; 84 + ret = -ENODEV; 85 + goto err; 83 86 } 84 87 85 88 /* please note that the actual registration will be deferred */ 86 89 soc_dev = soc_device_register(soc_dev_attr); 87 90 if (IS_ERR(soc_dev)) { 88 - kfree(soc_dev_attr->revision); 89 - kfree(soc_dev_attr); 90 - return PTR_ERR(soc_dev); 91 + ret = PTR_ERR(soc_dev); 92 + goto err; 91 93 } 92 94 93 95 /* it is too early to use dev_info() here (soc_dev is NULL) */ ··· 95 97 soc_dev_attr->soc_id, product_id, revision); 96 98 97 99 return 0; 100 + 101 + err: 102 + kfree(soc_dev_attr->revision); 103 + kfree(soc_dev_attr); 104 + return ret; 98 105 } 106 + 99 107 early_initcall(exynos_chipid_early_init);