summaryrefslogtreecommitdiffstats
path: root/kdbus-fix-operator-precedence-issues-in-item-macros.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2015-07-08 10:30:06 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2015-07-08 10:30:06 -0400
commit8be443055ee741775545f3d86cbfd36410c6ef8d (patch)
tree90c6fda25ceb55bee60a1d8a30f436eb3b9e1277 /kdbus-fix-operator-precedence-issues-in-item-macros.patch
parent84bb446543a6e771a1be4fc09b0712607bc6a376 (diff)
downloadkernel-8be443055ee741775545f3d86cbfd36410c6ef8d.tar.gz
kernel-8be443055ee741775545f3d86cbfd36410c6ef8d.tar.xz
kernel-8be443055ee741775545f3d86cbfd36410c6ef8d.zip
Linux v4.2-rc1-33-gd6ac4ffc61ac
Diffstat (limited to 'kdbus-fix-operator-precedence-issues-in-item-macros.patch')
-rw-r--r--kdbus-fix-operator-precedence-issues-in-item-macros.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/kdbus-fix-operator-precedence-issues-in-item-macros.patch b/kdbus-fix-operator-precedence-issues-in-item-macros.patch
new file mode 100644
index 000000000..a030e4ca4
--- /dev/null
+++ b/kdbus-fix-operator-precedence-issues-in-item-macros.patch
@@ -0,0 +1,47 @@
+From: Sergei Zviagintsev <sergei@s15v.net>
+Date: Tue, 9 Jun 2015 23:59:59 +0300
+Subject: [PATCH] kdbus: fix operator precedence issues in item macros
+
+`_i' argument in KDBUS_ITEM_NEXT and KDBUS_ITEMS_END macros is not
+enclosed into parentheses when the cast operator is applied, which
+leads to improper type conversion if `_i' is supplied as a complex
+expression, e.g.
+
+ KDBUS_ITEM_NEXT(condition ? a : b)
+
+KDBUS_ITEMS_SIZE macro has similar issue, missing parentheses around
+`_h' 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>
+---
+ ipc/kdbus/item.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/ipc/kdbus/item.h b/ipc/kdbus/item.h
+index eeefd8beac3b..32909e2e7954 100644
+--- a/ipc/kdbus/item.h
++++ b/ipc/kdbus/item.h
+@@ -21,8 +21,8 @@
+ #include "util.h"
+
+ /* generic access and iterators over a stream of items */
+-#define KDBUS_ITEM_NEXT(_i) (typeof(_i))(((u8 *)_i) + KDBUS_ALIGN8((_i)->size))
+-#define KDBUS_ITEMS_SIZE(_h, _is) ((_h)->size - offsetof(typeof(*_h), _is))
++#define KDBUS_ITEM_NEXT(_i) (typeof(_i))((u8 *)(_i) + KDBUS_ALIGN8((_i)->size))
++#define KDBUS_ITEMS_SIZE(_h, _is) ((_h)->size - offsetof(typeof(*(_h)), _is))
+ #define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data)
+ #define KDBUS_ITEM_SIZE(_s) KDBUS_ALIGN8(KDBUS_ITEM_HEADER_SIZE + (_s))
+ #define KDBUS_ITEM_PAYLOAD_SIZE(_i) ((_i)->size - KDBUS_ITEM_HEADER_SIZE)
+@@ -40,7 +40,7 @@
+ (u8 *)(_i) >= (u8 *)(_is))
+
+ #define KDBUS_ITEMS_END(_i, _is, _s) \
+- ((u8 *)_i == ((u8 *)(_is) + KDBUS_ALIGN8(_s)))
++ ((u8 *)(_i) == ((u8 *)(_is) + KDBUS_ALIGN8(_s)))
+
+ /**
+ * struct kdbus_item_header - Describes the fix part of an item