Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756956AbcDECcq (ORCPT ); Mon, 4 Apr 2016 22:32:46 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:36630 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751925AbcDECco (ORCPT ); Mon, 4 Apr 2016 22:32:44 -0400 From: Bastien Philbert To: patrik.r.jakobsson@gmail.com Cc: airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] gma500: Add new error checking for the function, psb_driver_load Date: Mon, 4 Apr 2016 22:32:37 -0400 Message-Id: <1459823557-11727-2-git-send-email-bastienphilbert@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1459823557-11727-1-git-send-email-bastienphilbert@gmail.com> References: <1459823557-11727-1-git-send-email-bastienphilbert@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1506 Lines: 41 This adds new error checking to the function, psb_driver_load for when the function, psb_mmu_inset_pfn_sequence fails to grab memory for the internal function call to psb_pd_addr_end. In addition we now implement this by checking for a error code return value from the internal call to the function, psb_mmu_inset_pfn_sequence for the function, psb_driver_load. If a error code is returned we must jump to a new label, unlock_err in order to deallocate our usage count by one for the usage of the semaphore, sem before unloading Signed-off-by: Bastien Philbert --- drivers/gpu/drm/gma500/psb_drv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c index 4e1c685..52651fb 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c @@ -343,7 +343,10 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) dev_priv->stolen_base >> PAGE_SHIFT, pg->gatt_start, pg->stolen_size >> PAGE_SHIFT, 0); + if (ret) + goto unlock_err; up_read(&pg->sem); + psb_mmu_set_pd_context(psb_mmu_get_default_pd(dev_priv->mmu), 0); psb_mmu_set_pd_context(dev_priv->pf_pd, 1); @@ -405,6 +408,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags) #endif /* Intel drm driver load is done, continue doing pvr load */ return 0; +unlock_err: + up_read(&pg->sem); out_err: psb_driver_unload(dev); return ret; -- 2.5.0