]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.4/mfd-ab8500-core-return-zero-in-get_register_interrup.patch
Linux 3.18.137
[thirdparty/kernel/stable-queue.git] / queue-4.4 / mfd-ab8500-core-return-zero-in-get_register_interrup.patch
1 From 7da38c2f4131e2951c099ea476e498b887101647 Mon Sep 17 00:00:00 2001
2 From: Dan Carpenter <dan.carpenter@oracle.com>
3 Date: Thu, 25 Oct 2018 15:43:44 +0300
4 Subject: mfd: ab8500-core: Return zero in get_register_interruptible()
5
6 [ Upstream commit 10628e3ecf544fa2e4e24f8e112d95c37884dc98 ]
7
8 This function is supposed to return zero on success or negative error
9 codes on error. Unfortunately, there is a bug so it sometimes returns
10 non-zero, positive numbers on success.
11
12 I noticed this bug during review and I can't test it. It does appear
13 that the return is sometimes propogated back to _regmap_read() where all
14 non-zero returns are treated as failure so this may affect run time.
15
16 Fixes: 47c1697508f2 ("mfd: Align ab8500 with the abx500 interface")
17 Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
18 Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
19 Signed-off-by: Lee Jones <lee.jones@linaro.org>
20 Signed-off-by: Sasha Levin <sashal@kernel.org>
21 ---
22 drivers/mfd/ab8500-core.c | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25 diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c
26 index fefbe4cfa61dd..1263cfd8b4d2f 100644
27 --- a/drivers/mfd/ab8500-core.c
28 +++ b/drivers/mfd/ab8500-core.c
29 @@ -259,7 +259,7 @@ static int get_register_interruptible(struct ab8500 *ab8500, u8 bank,
30 mutex_unlock(&ab8500->lock);
31 dev_vdbg(ab8500->dev, "rd: addr %#x => data %#x\n", addr, ret);
32
33 - return ret;
34 + return (ret < 0) ? ret : 0;
35 }
36
37 static int ab8500_get_register(struct device *dev, u8 bank,
38 --
39 2.19.1
40