Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932284AbdDEB3N (ORCPT ); Tue, 4 Apr 2017 21:29:13 -0400 Received: from regular1.263xmail.com ([211.150.99.138]:33595 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754846AbdDEB3M (ORCPT ); Tue, 4 Apr 2017 21:29:12 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-RL-SENDER: jeffy.chen@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: jeffy.chen@rock-chips.com X-UNIQUE-TAG: <1e041250da01f472aad753f57d3d2a97> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <58E44831.900@rock-chips.com> Date: Wed, 05 Apr 2017 09:28:17 +0800 From: jeffy User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20130126 Thunderbird/19.0 MIME-Version: 1.0 To: linux-kernel@vger.kernel.org, briannorris@chromium.org, dianders@chromium.org, dri-devel@lists.freedesktop.org, tfiga@chromium.org, linux-rockchip@lists.infradead.org, zyw@rock-chips.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v2 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered References: <1491046529-4310-1-git-send-email-jeffy.chen@rock-chips.com> <1491046529-4310-9-git-send-email-jeffy.chen@rock-chips.com> <20170403074101.f3ykqpdphklwummz@phenom.ffwll.local> In-Reply-To: <20170403074101.f3ykqpdphklwummz@phenom.ffwll.local> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2111 Lines: 63 Hi Daniel, On 04/03/2017 03:41 PM, Daniel Vetter wrote: > On Sat, Apr 01, 2017 at 07:35:28PM +0800, Jeffy Chen wrote: >> Signed-off-by: Jeffy Chen >> --- >> >> Changes in v2: None > > Wut? How is this even possible? If you haven't registered the driver yet, > there's no way for userspace to call allocation functions. Anything else > is a driver bug that should be handled by fixing the driver load sequence. > The only thing I can imagine is that you init the fbdev stuff too early, > in that case pls fix that. Not apply this duct-tape here. after unbind drm drivers, userspace may still have the chance to call gem ioctls before we call drm_dev_register again. and we can add a sanity check here to avoid invalid access. i'll try to make a better commit message in next version soon, thanx for reply. > > Thanks, Daniel > >> >> drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >> index df9e570..2bf8024 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c >> @@ -184,6 +184,9 @@ static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj, >> struct drm_device *drm = obj->dev; >> struct rockchip_drm_private *private = drm->dev_private; >> >> + if (!drm->registered) >> + return -ENODEV; >> + >> if (private->domain) >> return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap); >> else >> @@ -208,6 +211,11 @@ static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj) >> >> static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj) >> { >> + struct drm_device *drm = rk_obj->base.dev; >> + >> + if (!drm->registered) >> + return; >> + >> if (rk_obj->pages) >> rockchip_gem_free_iommu(rk_obj); >> else >> -- >> 2.1.4 >> >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/dri-devel >