]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.60/nvmem-properly-handle-returned-value-nvmem_reg_read.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / releases / 4.14.60 / nvmem-properly-handle-returned-value-nvmem_reg_read.patch
CommitLineData
a65d4bac
GKH
1From foo@baz Sat Jul 28 10:25:26 CEST 2018
2From: Mathieu Malaterre <malat@debian.org>
3Date: Fri, 11 May 2018 12:07:03 +0100
4Subject: nvmem: properly handle returned value nvmem_reg_read
5
6From: Mathieu Malaterre <malat@debian.org>
7
8[ Upstream commit 50808bfcc14b854775a9f1d0abe3dac2babcf5c3 ]
9
10Function nvmem_reg_read can return a non zero value indicating an error.
11This returned value must be read and error propagated to
12nvmem_cell_prepare_write_buffer. Silence the following gcc warning (W=1):
13
14drivers/nvmem/core.c:1093:9: warning: variable 'rc' set but
15 not used [-Wunused-but-set-variable]
16
17Signed-off-by: Mathieu Malaterre <malat@debian.org>
18Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
19Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
21Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
22---
23 drivers/nvmem/core.c | 7 +++++++
24 1 file changed, 7 insertions(+)
25
26--- a/drivers/nvmem/core.c
27+++ b/drivers/nvmem/core.c
28@@ -1049,6 +1049,8 @@ static inline void *nvmem_cell_prepare_w
29
30 /* setup the first byte with lsb bits from nvmem */
31 rc = nvmem_reg_read(nvmem, cell->offset, &v, 1);
32+ if (rc)
33+ goto err;
34 *b++ |= GENMASK(bit_offset - 1, 0) & v;
35
36 /* setup rest of the byte if any */
37@@ -1067,11 +1069,16 @@ static inline void *nvmem_cell_prepare_w
38 /* setup the last byte with msb bits from nvmem */
39 rc = nvmem_reg_read(nvmem,
40 cell->offset + cell->bytes - 1, &v, 1);
41+ if (rc)
42+ goto err;
43 *p |= GENMASK(7, (nbits + bit_offset) % BITS_PER_BYTE) & v;
44
45 }
46
47 return buf;
48+err:
49+ kfree(buf);
50+ return ERR_PTR(rc);
51 }
52
53 /**