From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753415AbdECKTe (ORCPT ); Wed, 3 May 2017 06:19:34 -0400 Received: from metis.ext.4.pengutronix.de ([92.198.50.35]:34573 "EHLO metis.ext.4.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753048AbdECKTY (ORCPT ); Wed, 3 May 2017 06:19:24 -0400 Message-ID: <1493806760.13947.32.camel@pengutronix.de> Subject: Re: [PATCH v2 4/5] drm/etnaviv: Reuse dma_fence_release. From: Lucas Stach To: Eric Anholt Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Russell King , Christian Gmeiner , etnaviv@lists.freedesktop.org Date: Wed, 03 May 2017 12:19:20 +0200 In-Reply-To: <20170412191202.22740-5-eric@anholt.net> References: <20170412191202.22740-1-eric@anholt.net> <20170412191202.22740-5-eric@anholt.net> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.12.9-1+b1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-SA-Exim-Connect-IP: 2001:67c:670:100:fa0f:41ff:fe58:4010 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Eric, Am Mittwoch, den 12.04.2017, 12:12 -0700 schrieb Eric Anholt: > If we follow the typical pattern of the base class being the first > member, we can use the default dma_fence_free function. Sorry, I don't like this change. While it provides a bit of code simplification, it also bakes the implicit assumption into the code that dma_fence is the first struct member without any checks to validate this assumption. I would at least expect a build bug assert, but then the current bit of code to keep this explicit and self-documenting is probably just as good. Regards, Lucas > Signed-off-by: Eric Anholt > Cc: Lucas Stach > Cc: Russell King > Cc: Christian Gmeiner > Cc: etnaviv@lists.freedesktop.org > --- > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > index da48819ff2e6..0d26ca56e94b 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > @@ -998,8 +998,8 @@ static void hangcheck_disable(struct etnaviv_gpu *gpu) > > /* fence object management */ > struct etnaviv_fence { > - struct etnaviv_gpu *gpu; > struct dma_fence base; > + struct etnaviv_gpu *gpu; > }; > > static inline struct etnaviv_fence *to_etnaviv_fence(struct dma_fence *fence) > @@ -1031,20 +1031,13 @@ static bool etnaviv_fence_signaled(struct dma_fence *fence) > return fence_completed(f->gpu, f->base.seqno); > } > > -static void etnaviv_fence_release(struct dma_fence *fence) > -{ > - struct etnaviv_fence *f = to_etnaviv_fence(fence); > - > - kfree_rcu(f, base.rcu); > -} > - > static const struct dma_fence_ops etnaviv_fence_ops = { > .get_driver_name = etnaviv_fence_get_driver_name, > .get_timeline_name = etnaviv_fence_get_timeline_name, > .enable_signaling = etnaviv_fence_enable_signaling, > .signaled = etnaviv_fence_signaled, > .wait = dma_fence_default_wait, > - .release = etnaviv_fence_release, > + .release = dma_fence_free, > }; > > static struct dma_fence *etnaviv_gpu_fence_alloc(struct etnaviv_gpu *gpu)