...
...
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