]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
remoteproc: fix error return code in rproc_fw_boot()
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>
Sun, 30 Jun 2013 08:07:13 +0000 (11:07 +0300)
committerOhad Ben-Cohen <ohad@wizery.com>
Sun, 30 Jun 2013 08:07:13 +0000 (11:07 +0300)
Set 'ret' to -EINVAL when needed, so a sensible return value
is returned on errors.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
[fix additional instances of this bug as well, update commit log]
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
drivers/remoteproc/remoteproc_core.c

index 022dc635d01e4935ee84c0378e0d606e94028a39..7e33536b5c2bdf8f8b911fb48fa8a0b02603db44 100644 (file)
@@ -815,18 +815,17 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
        }
 
        rproc->bootaddr = rproc_get_boot_addr(rproc, fw);
+       ret = -EINVAL;
 
        /* look for the resource table */
        table = rproc_find_rsc_table(rproc, fw, &tablesz);
        if (!table) {
-               ret = -EINVAL;
                goto clean_up;
        }
 
        /* Verify that resource table in loaded fw is unchanged */
        if (rproc->table_csum != crc32(0, table, tablesz)) {
                dev_err(dev, "resource checksum failed, fw changed?\n");
-               ret = -EINVAL;
                goto clean_up;
        }
 
@@ -852,8 +851,10 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
         * copy this information to device memory.
         */
        loaded_table = rproc_find_loaded_rsc_table(rproc, fw);
-       if (!loaded_table)
+       if (!loaded_table) {
+               ret = -EINVAL;
                goto clean_up;
+       }
 
        memcpy(loaded_table, rproc->cached_table, tablesz);