Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754529AbdCTMH3 (ORCPT ); Mon, 20 Mar 2017 08:07:29 -0400 Received: from mail-ot0-f194.google.com ([74.125.82.194]:36641 "EHLO mail-ot0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754397AbdCTMHE (ORCPT ); Mon, 20 Mar 2017 08:07:04 -0400 MIME-Version: 1.0 In-Reply-To: References: <20170320094335.1266306-1-arnd@arndb.de> <1490011236.3600.5.camel@linux.intel.com> From: Arnd Bergmann Date: Mon, 20 Mar 2017 13:07:02 +0100 X-Google-Sender-Auth: 9lvDfeHaS8RdoiI_to3NmsuJkbE Message-ID: Subject: Re: [PATCH 1/3] drm/i915: allocate mock file pointer dynamically To: Joonas Lahtinen Cc: Daniel Vetter , Jani Nikula , David Airlie , Chris Wilson , Tvrtko Ursulin , Matthew Auld , intel-gfx@lists.freedesktop.org, dri-devel , Linux Kernel Mailing List 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: 1700 Lines: 40 On Mon, Mar 20, 2017 at 1:02 PM, Arnd Bergmann wrote: > On Mon, Mar 20, 2017 at 1:00 PM, Joonas Lahtinen > wrote: >> On ma, 2017-03-20 at 10:40 +0100, Arnd Bergmann wrote: > >>> diff --git a/drivers/gpu/drm/i915/selftests/mock_drm.c b/drivers/gpu/drm/i915/selftests/mock_drm.c >>> index 113dec05c7dc..18514065c93d 100644 >>> --- a/drivers/gpu/drm/i915/selftests/mock_drm.c >>> +++ b/drivers/gpu/drm/i915/selftests/mock_drm.c >>> @@ -32,15 +32,15 @@ static inline struct inode fake_inode(struct drm_i915_private *i915) >>> struct drm_file *mock_file(struct drm_i915_private *i915) >>> { >>> > struct inode inode = fake_inode(i915); >>> > - struct file filp = {}; >>> > + struct file *filp = kzalloc(sizeof(struct file), GFP_KERNEL); >>> > struct drm_file *file; >>> > int err; >>> >> >> filp = kzalloc(sizeof(*filp), GFP_KERNEL); >> if (unlikely(!filp)) { >> err = -ENOMEM; >> goto err; >> } >> >> And appropriate onion teardown in case drm_open fails, so that we don't >> leak memory. > > Oops, of course you are right, sorry about that. Actually it's even worse, as I had originally planned to also allocate the inode dynamically, but for some reasons didn't do that in the patch I sent. This version of the patch as I sent it is rather bogus, so please ignore it (but not the other two patches I sent). If David's solution to this problem can make it into 4.12, there is no problem at all. Another alternative would be to use anon_inode_getfile(), again with proper error handling and cleanup. This is a bit slower but gives us valid file and inode structures. Arnd