Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752739AbbFDL0P (ORCPT ); Thu, 4 Jun 2015 07:26:15 -0400 Received: from mail-lb0-f170.google.com ([209.85.217.170]:35088 "EHLO mail-lb0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752081AbbFDL0F (ORCPT ); Thu, 4 Jun 2015 07:26:05 -0400 MIME-Version: 1.0 In-Reply-To: <1433414370-17557-1-git-send-email-sergei@s15v.net> References: <1433414370-17557-1-git-send-email-sergei@s15v.net> Date: Thu, 4 Jun 2015 13:26:03 +0200 Message-ID: Subject: Re: [PATCH] kdbus: fix type conversion in item macroses From: David Herrmann To: Sergei Zviagintsev Cc: Greg Kroah-Hartman , Daniel Mack , David Herrmann , Djalal Harouni , linux-kernel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2518 Lines: 67 Hi On Thu, Jun 4, 2015 at 12:39 PM, Sergei Zviagintsev wrote: > 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(-) Reviewed-by: David Herrmann Thanks David > 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/