Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp121181pxv; Thu, 24 Jun 2021 04:21:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyd4PFokkTWkUjVcfb/FbBnVJ7d3xkxAKU8Z/kK+Siy2J/VF1LUz+fcUQCSa+7kbsYMNNIP X-Received: by 2002:a02:77d1:: with SMTP id g200mr4190957jac.132.1624533672433; Thu, 24 Jun 2021 04:21:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624533672; cv=none; d=google.com; s=arc-20160816; b=ToBe3o9FNWJfftKSws/uFE9I96pfMkcgqcXgwECVN1dkYXaSmhJ0tr7s2dfqxQnkCW HkNgtLPnhxT3ZNIdoWE81CSH8fVBCFU7OE/YTAeBV3wcT4aiRw6PtoFv8b5zmNG0pnKT +RqJXekPTzyhCNDW6/WC+VcVqogrk4183jjIxktTWcPZhp1pBRvkbwEmgkDo72Ato/lb qGB6rBB63yF3lMdaSmkNDY0tmbO1Gy7aWO8V6sUIxwSV8xogNV+MhK9xPaTqBlILk/6f dRq0zWWzO5wW/Sve7VMIMyHQW8MxkRzAjpwICIa1tzSVAeQUmvbaVIO5KeNSJL0gzlYn gtFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:message-id:subject:cc:to :from:date:dkim-signature; bh=QMQxLghzbQJ+S5UvF1jyExdgcSoUuoLVwyuxH7j+Wps=; b=mnNjJzH/LTRf51Ihyz9jQzaiHX2XmWA2lzeRwgxMNI+nDH1RcwgRyRlNTvsFxf340M CTdBTycgw6WJt6DMTWDPuLf6km6vE9kg8Qi47zvpePquK5PLatqnq0ufhAR4yuOKC285 LTrJmgSHJatR5cjX4GUzHxUv/QuPO3RoqdhFf5JVR6BwJIFI5K9CIfxjnnCF+ChUHsvi XGGIKINH4l81+4IFlJySH+qglJEmiLX6xqTx4PX5kyNXDy2ZEo+sqWxQfx1Dp3W/oI2L Y7SMgZN9dsOTnqBvQlaoQ4j8igDFW6JaOEGnsLYo2YN9tCYUBl9tGdjoq/6Qw18djYU6 PBQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="h/uUXhqy"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 16si3319869ilt.38.2021.06.24.04.21.00; Thu, 24 Jun 2021 04:21:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="h/uUXhqy"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232372AbhFXLWq (ORCPT + 99 others); Thu, 24 Jun 2021 07:22:46 -0400 Received: from mail.kernel.org ([198.145.29.99]:34234 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232005AbhFXLWn (ORCPT ); Thu, 24 Jun 2021 07:22:43 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 40412613C5; Thu, 24 Jun 2021 11:20:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1624533624; bh=yeBxxI9RxIG1SBqoCQkOp8CWXVUmYQbT3KrhCdThdUQ=; h=Date:From:To:cc:Subject:From; b=h/uUXhqyme6NlwDRYS288PXCjbfgX3cO68nvhdbShTtcWiUCCFVN/lpxUTNwaT6Ng Co+4182vvnP77I/IlfJZ6NjSZ2eamUoa3E8ymWMJ48XG5VzmPhppOlNSO3U5daWq6/ cmNoJp5UixUE4C1nhdTB1Li4yaf67syfRxE1fz1gUPjDR3tybyc7VTn1AHiEbpdad5 Ca1ArlpbK875RpjhW+HaDyzuVVpUT9Pe9bFEF9DLGjGvPgx8xF67PrwNXJ1cq1GKgs ViBHsz8iDe1bOUepqReha5pnu8MO5nQ7IL8uAeGYK9SJjMmq5vQEPMV1tAwiqyBpvB fDDhfVaY6xwmw== Date: Thu, 24 Jun 2021 13:20:21 +0200 (CEST) From: Jiri Kosina To: Alex Deucher , =?ISO-8859-15?Q?Christian_K=F6nig?= , David Airlie cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Vojtech Pavlik Subject: [PATCH] drm/amdgpu: Fix resource leak on probe error path Message-ID: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jiri Kosina This reverts commit 4192f7b5768912ceda82be2f83c87ea7181f9980. It is not true (as stated in the reverted commit changelog) that we never unmap the BAR on failure; it actually does happen properly on amdgpu_driver_load_kms() -> amdgpu_driver_unload_kms() -> amdgpu_device_fini() error path. What's worse, this commit actually completely breaks resource freeing on probe failure (like e.g. failure to load microcode), as amdgpu_driver_unload_kms() notices adev->rmmio being NULL and bails too early, leaving all the resources that'd normally be freed in amdgpu_acpi_fini() and amdgpu_device_fini() still hanging around, leading to all sorts of oopses when someone tries to, for example, access the sysfs and procfs resources which are still around while the driver is gone. Fixes: 4192f7b57689 ("drm/amdgpu: unmap register bar on device init failure") Reported-by: Vojtech Pavlik Signed-off-by: Jiri Kosina --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 57ec108b5972..0f1c0e17a587 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -3414,13 +3414,13 @@ int amdgpu_device_init(struct amdgpu_device *adev, r = amdgpu_device_get_job_timeout_settings(adev); if (r) { dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n"); - goto failed_unmap; + return r; } /* early init functions */ r = amdgpu_device_ip_early_init(adev); if (r) - goto failed_unmap; + return r; /* doorbell bar mapping and doorbell index init*/ amdgpu_device_doorbell_init(adev); @@ -3646,10 +3646,6 @@ int amdgpu_device_init(struct amdgpu_device *adev, failed: amdgpu_vf_error_trans_all(adev); -failed_unmap: - iounmap(adev->rmmio); - adev->rmmio = NULL; - return r; } -- 2.12.3