From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: RE: [PATCH v2 1/1] drm/exynos: Fix freeing issues in exynos_drm_drv.c Date: Tue, 21 Jan 2014 13:41:09 +0900 Message-ID: <03ef01cf1663$01665210$0432f630$%dae@samsung.com> References: <1389852086-11801-1-git-send-email-sachin.kamat@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by gabe.freedesktop.org (Postfix) with ESMTP id 1DF61FA808 for ; Mon, 20 Jan 2014 20:41:12 -0800 (PST) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MZQ00GIEICMF420@mailout3.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 21 Jan 2014 13:41:10 +0900 (KST) In-reply-to: Content-language: ko List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org To: 'Sachin Kamat' , dri-devel@lists.freedesktop.org Cc: 'Patch Tracking' List-Id: dri-devel@lists.freedesktop.org > -----Original Message----- > From: Sachin Kamat [mailto:sachin.kamat@linaro.org] > Sent: Tuesday, January 21, 2014 12:16 PM > To: dri-devel@lists.freedesktop.org > Cc: Inki Dae; Sachin Kamat; Patch Tracking > Subject: Re: [PATCH v2 1/1] drm/exynos: Fix freeing issues in > exynos_drm_drv.c > > Hi Inki, > > Does this patch look good now? Sorry for being late. Applied. Thanks, Inki Dae > > On 16 January 2014 11:31, Sachin Kamat wrote: > > Fixes the following errors: > > drivers/gpu/drm/exynos/exynos_drm_drv.c:182 exynos_drm_open() > > error: double free of 'file_priv' > > drivers/gpu/drm/exynos/exynos_drm_drv.c:188 exynos_drm_open() > > error: dereferencing freed memory 'file_priv' > > > > Signed-off-by: Sachin Kamat > > --- > > drivers/gpu/drm/exynos/exynos_drm_drv.c | 14 ++++++++------ > > 1 file changed, 8 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c > b/drivers/gpu/drm/exynos/exynos_drm_drv.c > > index 9d096a0..215131a 100644 > > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c > > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c > > @@ -171,22 +171,24 @@ static int exynos_drm_open(struct drm_device *dev, > struct drm_file *file) > > file->driver_priv = file_priv; > > > > ret = exynos_drm_subdrv_open(dev, file); > > - if (ret) { > > - kfree(file_priv); > > - file->driver_priv = NULL; > > - } > > + if (ret) > > + goto out; > > > > anon_filp = anon_inode_getfile("exynos_gem", &exynos_drm_gem_fops, > > NULL, 0); > > if (IS_ERR(anon_filp)) { > > - kfree(file_priv); > > - return PTR_ERR(anon_filp); > > + ret = PTR_ERR(anon_filp); > > + goto out; > > } > > > > anon_filp->f_mode = FMODE_READ | FMODE_WRITE; > > file_priv->anon_filp = anon_filp; > > > > return ret; > > +out: > > + kfree(file_priv); > > + file->driver_priv = NULL; > > + return ret; > > } > > > > static void exynos_drm_preclose(struct drm_device *dev, > > -- > > 1.7.9.5 > > > > > > -- > With warm regards, > Sachin