54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
From: Sergei Zviagintsev <sergei@s15v.net>
|
|
Date: Wed, 10 Jun 2015 00:00:04 +0300
|
|
Subject: [PATCH] selftests/kdbus: fix precedence issues in macros
|
|
|
|
`item' argument in KDBUS_ITEM_NEXT macro is not enclosed into
|
|
parentheses when the cast operator is applied, which leads to improper
|
|
type conversion if `item' is supplied as a complex expression, e.g.
|
|
|
|
KDBUS_ITEM_NEXT(condition ? a : b)
|
|
|
|
RUN_CLONE_CHILD macro has similar issue, missing parentheses around
|
|
`clone_ret' when using indirection operator.
|
|
|
|
Use parentheses properly to guarantee right precedence.
|
|
|
|
Signed-off-by: Sergei Zviagintsev <sergei@s15v.net>
|
|
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
tools/testing/selftests/kdbus/kdbus-util.h | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/tools/testing/selftests/kdbus/kdbus-util.h b/tools/testing/selftests/kdbus/kdbus-util.h
|
|
index b53b03f0565c..df5721ee8f54 100644
|
|
--- a/tools/testing/selftests/kdbus/kdbus-util.h
|
|
+++ b/tools/testing/selftests/kdbus/kdbus-util.h
|
|
@@ -27,7 +27,7 @@
|
|
#define KDBUS_ITEM_SIZE(s) KDBUS_ALIGN8((s) + KDBUS_ITEM_HEADER_SIZE)
|
|
|
|
#define KDBUS_ITEM_NEXT(item) \
|
|
- (typeof(item))(((uint8_t *)item) + KDBUS_ALIGN8((item)->size))
|
|
+ (typeof(item))((uint8_t *)(item) + KDBUS_ALIGN8((item)->size))
|
|
#define KDBUS_ITEM_FOREACH(item, head, first) \
|
|
for (item = (head)->first; \
|
|
((uint8_t *)(item) < (uint8_t *)(head) + (head)->size) && \
|
|
@@ -104,7 +104,7 @@ extern int kdbus_util_verbose;
|
|
_setup_; \
|
|
efd = eventfd(0, EFD_CLOEXEC); \
|
|
ASSERT_RETURN(efd >= 0); \
|
|
- *clone_ret = 0; \
|
|
+ *(clone_ret) = 0; \
|
|
pid = syscall(__NR_clone, flags, NULL); \
|
|
if (pid == 0) { \
|
|
eventfd_t event_status = 0; \
|
|
@@ -129,7 +129,7 @@ extern int kdbus_util_verbose;
|
|
ret = TEST_OK; \
|
|
} else { \
|
|
ret = -errno; \
|
|
- *clone_ret = -errno; \
|
|
+ *(clone_ret) = -errno; \
|
|
} \
|
|
close(efd); \
|
|
ret; \
|