[Sound-open-firmware] [PATCH 1/2] ipc: add missing braces for multi-line macro in block

Jie, Yang yang.jie at intel.com
Fri Jan 19 02:31:06 CET 2018


>-----Original Message-----
>From: sound-open-firmware-bounces at alsa-project.org [mailto:sound-open-
>firmware-bounces at alsa-project.org] On Behalf Of Pierre-Louis Bossart
>Sent: Friday, January 19, 2018 4:31 AM
>To: sound-open-firmware at alsa-project.org
>Cc: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
>Subject: [Sound-open-firmware] [PATCH 1/2] ipc: add missing braces for multi-
>line macro in block
>
>Detected with Coverity and fix with braces.
>
>Details:
>
>Code that is meant to be executed conditionally may be executed
>unconditionally
>
>In do_notify: The indentation of this code suggests it is nested when
>it is not. (CWE-483)
>
>multi_stmt_macro: The macro on this line expands into multiple
>statements, only the first of which is nested within the preceding
>parent while the rest are not.
>
>http://cwe.mitre.org/data/definitions/483.html
>
>Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
>---
> src/ipc/byt-ipc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/src/ipc/byt-ipc.c b/src/ipc/byt-ipc.c
>index 8897bb9..b5da4b6 100644
>--- a/src/ipc/byt-ipc.c
>+++ b/src/ipc/byt-ipc.c
>@@ -67,8 +67,9 @@ static void do_notify(void)
> 		goto out;
>
> 	/* copy the data returned from DSP */
>-	if (msg->rx_size && msg->rx_size < SOF_IPC_MSG_MAX_SIZE)
>+	if (msg->rx_size && msg->rx_size < SOF_IPC_MSG_MAX_SIZE) {
> 		mailbox_dspbox_read(msg->rx_data, 0, msg->rx_size);
>+	}

Isn't it better choice to change it in the macro definition then it is safe
to call it in other places also?

diff --git a/src/include/reef/mailbox.h b/src/include/reef/mailbox.h
index c0580a9..1179edf 100644
--- a/src/include/reef/mailbox.h
+++ b/src/include/reef/mailbox.h
@@ -63,19 +63,26 @@
        MAILBOX_DEBUG_SIZE

 #define mailbox_dspbox_write(dest, src, bytes) \
-       rmemcpy((void*)(MAILBOX_DSPBOX_BASE + dest), src, bytes); \
-       dcache_writeback_region((void*)(MAILBOX_DSPBOX_BASE + dest), bytes);
-
+       do { \
+               rmemcpy((void*)(MAILBOX_DSPBOX_BASE + dest), src, bytes); \
+               dcache_writeback_region((void*)(MAILBOX_DSPBOX_BASE + dest), bytes); \
+       } while (0)
 #define mailbox_dspbox_read(dest, src, bytes) \
-       dcache_invalidate_region((void*)(MAILBOX_DSPBOX_BASE + src), bytes); \
-       rmemcpy(dest, (void*)(MAILBOX_DSPBOX_BASE + src), bytes);
+       do { \
+               dcache_invalidate_region((void*)(MAILBOX_DSPBOX_BASE + src), bytes); \
+               rmemcpy(dest, (void*)(MAILBOX_DSPBOX_BASE + src), bytes); \
+       } while (0)

 #define mailbox_hostbox_write(dest, src, bytes) \
-       rmemcpy((void*)(MAILBOX_HOSTBOX_BASE + dest), src, bytes); \
-       dcache_writeback_region((void*)(MAILBOX_HOSTBOX_BASE + dest), bytes);
+       do { \
+               rmemcpy((void*)(MAILBOX_HOSTBOX_BASE + dest), src, bytes); \
+               dcache_writeback_region((void*)(MAILBOX_HOSTBOX_BASE + dest), bytes); \
+       } while (0)

 #define mailbox_hostbox_read(dest, src, bytes) \
-       dcache_invalidate_region((void*)(MAILBOX_HOSTBOX_BASE + src), bytes); \
-       rmemcpy(dest, (void*)(MAILBOX_HOSTBOX_BASE + src), bytes);
+       do { \
+               dcache_invalidate_region((void*)(MAILBOX_HOSTBOX_BASE + src), bytes); \
+               rmemcpy(dest, (void*)(MAILBOX_HOSTBOX_BASE + src), bytes); \
+       } while (0)

 #endif


Thanks,
~Keyon

>
> 	/* any callback ? */
> 	if (msg->cb)
>--
>2.14.1
>
>_______________________________________________
>Sound-open-firmware mailing list
>Sound-open-firmware at alsa-project.org
>http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware


More information about the Sound-open-firmware mailing list