staging: ks7010: fix memcmp() bug
authorTobin C. Harding <me@tobin.cc>
Wed, 22 Mar 2017 00:59:52 +0000 (11:59 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Mar 2017 13:27:23 +0000 (14:27 +0100)
Call site to memcmp() treats return value as if it were an error code,
it is not. If memcmp() finds inputs to be not the same, an error
return code should be set explicitly.

Correctly handle return value from call to memcmp(), set error code
explicitly.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Tobin C. Harding <me@tobin.cc>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/ks7010/ks7010_sdio.c

index 28b91be8415cac9cc2c4515e238b297552acd660..dbb1f0538b484ee9aa22c58870708c2a1f6a262f 100644 (file)
@@ -695,8 +695,8 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address,
        if (ret)
                goto err_free_read_buf;
 
-       ret = memcmp(data, read_buf, size);
-       if (ret) {
+       if (memcmp(data, read_buf, size) != 0) {
+               ret = -EIO;
                DPRINTK(0, "data compare error (%d)\n", ret);
                goto err_free_read_buf;
        }