From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752660AbdFMKMj (ORCPT ); Tue, 13 Jun 2017 06:12:39 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:55860 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751895AbdFMKMi (ORCPT ); Tue, 13 Jun 2017 06:12:38 -0400 Date: Tue, 13 Jun 2017 12:12:25 +0200 From: Greg KH To: laurentiu.tudor@nxp.com Cc: stuyoder@gmail.com, devel@driverdev.osuosl.org, arnd@arndb.de, marc.zyngier@arm.com, roy.pledge@nxp.com, linux-kernel@vger.kernel.org, agraf@suse.de, catalin.horghidan@nxp.com, ioana.ciornei@nxp.com, leoyang.li@nxp.com, bharat.bhushan@nxp.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v7 02/10] staging: fsl-mc: fix macros with possible side effects Message-ID: <20170613101225.GA27165@kroah.com> References: <20170608142855.10455-1-laurentiu.tudor@nxp.com> <20170608142855.10455-3-laurentiu.tudor@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170608142855.10455-3-laurentiu.tudor@nxp.com> User-Agent: Mutt/1.8.3 (2017-05-23) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 08, 2017 at 05:28:47PM +0300, laurentiu.tudor@nxp.com wrote: > From: Laurentiu Tudor > > Several macros were triggering this checkpatch.pl warning: > "Macro argument reuse '$arg' - possible side-effects?" > Fix the warning by avoiding multiple macro argument use. > > Signed-off-by: Laurentiu Tudor > --- > > Notes: > -v7 > -no changes > > drivers/staging/fsl-mc/bus/dprc-driver.c | 10 +++++++--- > drivers/staging/fsl-mc/bus/fsl-mc-allocator.c | 11 +++++++---- > 2 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/staging/fsl-mc/bus/dprc-driver.c b/drivers/staging/fsl-mc/bus/dprc-driver.c > index d723c69..39c9a3b 100644 > --- a/drivers/staging/fsl-mc/bus/dprc-driver.c > +++ b/drivers/staging/fsl-mc/bus/dprc-driver.c > @@ -21,9 +21,13 @@ > > #define FSL_MC_DPRC_DRIVER_NAME "fsl_mc_dprc" > > -#define FSL_MC_DEVICE_MATCH(_mc_dev, _obj_desc) \ > - (strcmp((_mc_dev)->obj_desc.type, (_obj_desc)->type) == 0 && \ > - (_mc_dev)->obj_desc.id == (_obj_desc)->id) > +#define FSL_MC_DEVICE_MATCH(_mc_dev, _obj_desc) \ > +({ \ > + struct fsl_mc_device *__mc_dev = _mc_dev; \ > + struct dprc_obj_desc *__obj_desc = _obj_desc; \ > + (strcmp(__mc_dev->obj_desc.type, __obj_desc->type) == 0 && \ > + __mc_dev->obj_desc.id == __obj_desc->id); \ > +}) Ick, no. Just make this a real function please. > > struct dprc_child_objs { > int child_count; > diff --git a/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c b/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c > index ce07096..d3def40 100644 > --- a/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c > +++ b/drivers/staging/fsl-mc/bus/fsl-mc-allocator.c > @@ -17,10 +17,13 @@ > #include "dpcon-cmd.h" > #include "fsl-mc-private.h" > > -#define FSL_MC_IS_ALLOCATABLE(_obj_type) \ > - (strcmp(_obj_type, "dpbp") == 0 || \ > - strcmp(_obj_type, "dpmcp") == 0 || \ > - strcmp(_obj_type, "dpcon") == 0) > +#define FSL_MC_IS_ALLOCATABLE(_obj_type) \ > +({ \ > + const char *__obj_type = _obj_type; \ > + (strcmp(__obj_type, "dpbp") == 0 || \ > + strcmp(__obj_type, "dpmcp") == 0 || \ > + strcmp(__obj_type, "dpcon") == 0); \ > +}) Same here. Don't put real logic in a #define, it never makes sense to do it and only makes things much harder to debug. thanks, greg k-h