Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752636AbbFDKjz (ORCPT ); Thu, 4 Jun 2015 06:39:55 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:58441 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751373AbbFDKjq (ORCPT ); Thu, 4 Jun 2015 06:39:46 -0400 X-Sasl-enc: Q+IoTkjdX2GdvfoHVhGIJCc39ArvWccAgz9Yjl9bm82I 1433414385 From: Sergei Zviagintsev To: Greg Kroah-Hartman , Daniel Mack , David Herrmann , Djalal Harouni Cc: linux-kernel@vger.kernel.org, Sergei Zviagintsev Subject: [PATCH] kdbus: fix type conversion in item macroses Date: Thu, 4 Jun 2015 13:39:28 +0300 Message-Id: <1433414370-17557-1-git-send-email-sergei@s15v.net> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2232 Lines: 59 KDBUS_ITEM_NEXT and KDBUS_ITEMS_END macroses do not enclose _i argument into parentheses when applying the cast operator. If complex expression passed, e.g. KDBUS_ITEM_NEXT(condition ? a : b) then type conversion to (u8 *) will go wrong due to precedence rules. Use parentheses properly. Update documentation. Signed-off-by: Sergei Zviagintsev --- Documentation/kdbus/kdbus.item.xml | 2 +- ipc/kdbus/item.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/kdbus/kdbus.item.xml b/Documentation/kdbus/kdbus.item.xml index 09f8b903116f..b0eeeef995af 100644 --- a/Documentation/kdbus/kdbus.item.xml +++ b/Documentation/kdbus/kdbus.item.xml @@ -69,7 +69,7 @@ #define KDBUS_ALIGN8(val) (((val) + 7) & ~7) #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; \ diff --git a/ipc/kdbus/item.h b/ipc/kdbus/item.h index eeefd8beac3b..03612368b3bb 100644 --- a/ipc/kdbus/item.h +++ b/ipc/kdbus/item.h @@ -21,7 +21,7 @@ #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_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)) @@ -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 -- 1.8.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/