kernel: update nvmem subsystem to the latest upstream
[openwrt/staging/hauke.git] / target / linux / generic / backport-5.15 / 804-v5.18-0002-nvmem-core-Use-devm_add_action_or_reset.patch
1 From 5825b2c6762611e67ccaf3ccf64485365a120f0b Mon Sep 17 00:00:00 2001
2 From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
3 Date: Sun, 20 Feb 2022 15:15:16 +0000
4 Subject: [PATCH] nvmem: core: Use devm_add_action_or_reset()
5
6 Slightly simplify the devm_nvmem_register() by using the
7 devm_add_action_or_reset().
8
9 Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
10 Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11 Link: https://lore.kernel.org/r/20220220151527.17216-3-srinivas.kandagatla@linaro.org
12 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
13 ---
14 drivers/nvmem/core.c | 22 +++++++++-------------
15 1 file changed, 9 insertions(+), 13 deletions(-)
16
17 --- a/drivers/nvmem/core.c
18 +++ b/drivers/nvmem/core.c
19 @@ -904,9 +904,9 @@ void nvmem_unregister(struct nvmem_devic
20 }
21 EXPORT_SYMBOL_GPL(nvmem_unregister);
22
23 -static void devm_nvmem_release(struct device *dev, void *res)
24 +static void devm_nvmem_unregister(void *nvmem)
25 {
26 - nvmem_unregister(*(struct nvmem_device **)res);
27 + nvmem_unregister(nvmem);
28 }
29
30 /**
31 @@ -923,20 +923,16 @@ static void devm_nvmem_release(struct de
32 struct nvmem_device *devm_nvmem_register(struct device *dev,
33 const struct nvmem_config *config)
34 {
35 - struct nvmem_device **ptr, *nvmem;
36 -
37 - ptr = devres_alloc(devm_nvmem_release, sizeof(*ptr), GFP_KERNEL);
38 - if (!ptr)
39 - return ERR_PTR(-ENOMEM);
40 + struct nvmem_device *nvmem;
41 + int ret;
42
43 nvmem = nvmem_register(config);
44 + if (IS_ERR(nvmem))
45 + return nvmem;
46
47 - if (!IS_ERR(nvmem)) {
48 - *ptr = nvmem;
49 - devres_add(dev, ptr);
50 - } else {
51 - devres_free(ptr);
52 - }
53 + ret = devm_add_action_or_reset(dev, devm_nvmem_unregister, nvmem);
54 + if (ret)
55 + return ERR_PTR(ret);
56
57 return nvmem;
58 }