... | ... | ||
---|---|---|---|
4 | 4 | ||
5 | Add error handling to the sd_read(), ensuring that the memcpy() is | 5 | Add error handling to the sd_read(), ensuring that the memcpy() is |
6 | only performed when the read operation is successful. | 6 | only performed when the read operation is successful. |
7 | 7 | ||
8 | Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver") | 8 | Fixes: 554c0a3abf21 ("staging: Add rtl8723bs sdio wifi driver") |
9 | Cc: stable@vger.kernel.org # v4.12+ | ||
9 | Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> | 10 | Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> |
10 | --- | 11 | --- |
11 | drivers/staging/rtl8723bs/hal/sdio_ops.c | 8 +++++--- | 12 | drivers/staging/rtl8723bs/hal/sdio_ops.c | 8 +++++--- |
12 | 1 file changed, 5 insertions(+), 3 deletions(-) | 13 | 1 file changed, 5 insertions(+), 3 deletions(-) |
13 | 14 | ||
... | ... | ||
20 | 21 | ||
21 | ftaddr &= ~(u16)0x3; | 22 | ftaddr &= ~(u16)0x3; |
22 | - sd_read(intfhdl, ftaddr, 8, tmpbuf); | 23 | - sd_read(intfhdl, ftaddr, 8, tmpbuf); |
23 | - memcpy(&le_tmp, tmpbuf + shift, 4); | 24 | - memcpy(&le_tmp, tmpbuf + shift, 4); |
24 | - val = le32_to_cpu(le_tmp); | 25 | - val = le32_to_cpu(le_tmp); |
25 | + err = sd_read(intfhdl, ftaddr, 8, tmpbuf); | 26 | + val = sd_read(intfhdl, ftaddr, 8, tmpbuf); |
26 | + if (!err) { | 27 | + if (!val) { |
27 | + memcpy(&le_tmp, tmpbuf + shift, 4); | 28 | + memcpy(&le_tmp, tmpbuf + shift, 4); |
28 | + val = le32_to_cpu(le_tmp); | 29 | + val = le32_to_cpu(le_tmp); |
29 | + } | 30 | + } |
30 | 31 | ||
31 | kfree(tmpbuf); | 32 | kfree(tmpbuf); |
32 | } | 33 | } |
33 | -- | 34 | -- |
34 | 2.42.0.windows.2 | 35 | 2.42.0.windows.2 | diff view generated by jsdifflib |