EDAC, pnd2: Return proper error value from apl_rd_reg()
authorGustavo A. R. Silva <garsilva@embeddedor.com>
Thu, 22 Jun 2017 22:05:35 +0000 (17:05 -0500)
committerBorislav Petkov <bp@suse.de>
Fri, 23 Jun 2017 07:48:50 +0000 (09:48 +0200)
Add code comment to make it clear that the fall-through is intentional
and, OR ret with its previous value to avoid overwriting it so that
callers can check the correct return value.

Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Cc: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20170622220535.GA4896@embeddedgus
[ Massage a bit. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/pnd2_edac.c

index 1cad5a9..e1748d7 100644 (file)
@@ -168,14 +168,15 @@ int sbi_send(int port, int off, int op, u32 *data)
 
 static int apl_rd_reg(int port, int off, int op, void *data, size_t sz, char *name)
 {
-       int     ret = 0;
+       int ret = 0;
 
        edac_dbg(2, "Read %s port=%x off=%x op=%x\n", name, port, off, op);
        switch (sz) {
        case 8:
                ret = sbi_send(port, off + 4, op, (u32 *)(data + 4));
+               /* fall through */
        case 4:
-               ret = sbi_send(port, off, op, (u32 *)data);
+               ret |= sbi_send(port, off, op, (u32 *)data);
                pnd2_printk(KERN_DEBUG, "%s=%x%08x ret=%d\n", name,
                                        sz == 8 ? *((u32 *)(data + 4)) : 0, *((u32 *)data), ret);
                break;