Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1619342pxb; Mon, 11 Oct 2021 09:36:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwJJG+KoLSWiA9GNQYiXoSncw03R3LPRjvgSFjzmHJie1f4jV6TZL0jPS+qdwT0fYM/E40m X-Received: by 2002:a17:902:a38b:b0:138:d329:27ac with SMTP id x11-20020a170902a38b00b00138d32927acmr25262235pla.7.1633970178695; Mon, 11 Oct 2021 09:36:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633970178; cv=none; d=google.com; s=arc-20160816; b=TGUHTQdf2HCcXP9RS+mDLKgaqi8CZAKKbW303GgmROoj3esyNMct7QlqvP6fAGJY2X pBiiyFUsAwJzAJ2qLGah1DzAygSYrS3H69VmdXmJlOZ7s5e4xA405wPHyCu1Xz/nrBCV bMeda0qbHkyEUJ6a3/5/EzHC1Vt0PDBl/JrHlGErHqUaBP3fPBx3MzHD/ii2NMMZLtku UfDTz5zwbs9R8D5/72eqIYaIM4spWGf9/2WRAfUIkPkElKsCbhfa9kz/wywfLFlsgfs6 6FNTG8dBBk2RlBxfjPcanlZM9UKNsGS49wtnoZQLscu4PBrSgbevwMuf+Fd/MOKQX9vD 9U/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=HTWBk6JyNw6pqE22FNZ6KDRskRNA1H33lSsDRIG4OCY=; b=w+y3hMsXi+mH3alXINQGKyyqvOHIPBFF0KGgEvSTVcKix+AoYlyYvDTa59yf8PUeGQ lolkL/ip5UDTVNMdLtt7AJi5vW5vPYlX+U/mEr2zO7+/l5VpVhSbzHyBHnU/8qD3WEb+ WCxULiqIv3fSto+AyC2KZQ6X8YlyKm9e2t+xqoZqwLAbhFdAgjYBG9OcS19H0PA91taP g2BBB2Y8CHrudHqyDRMLDI8LBTqgYAxmY7SXGOoB+7vsD4n4GwAel1UGrEv9DNRIurE+ e7zcFpaTBaYUk/WpCL6tLIO9kp8agOQoe+u+IFpP8nYZbjvfH8Qtmcty2WsnEJVUiI7e LLsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=HXtfUsJE; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e2si8236pjr.21.2021.10.11.09.36.06; Mon, 11 Oct 2021 09:36:18 -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=@linuxfoundation.org header.s=korg header.b=HXtfUsJE; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239024AbhJKOL7 (ORCPT + 99 others); Mon, 11 Oct 2021 10:11:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:33474 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241994AbhJKOIl (ORCPT ); Mon, 11 Oct 2021 10:08:41 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9B00B6109E; Mon, 11 Oct 2021 14:01:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1633960889; bh=G4OaVBSLymtNc+XFYOoO4vZZlAPyjUA54wtGPksziM4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HXtfUsJElAgJPgpSgrKGWtm8N3zxOAkRL5Qatjbgn8ICOTs0hKayOvHsTWVMCaJlJ Z1YP09Ht0kyqAZbkJ6LzJll+d/Ux5xMiSyfTCe2bf/4A5u11h40oEpx2cig06gbj01 uQPMFp5tYq4iEaXwYH4bpt5k72sJwteBxrl8tQs0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thierry Reding , Jeremy Cline , Lyude Paul , Karol Herbst , Maarten Lankhorst , Sasha Levin Subject: [PATCH 5.14 103/151] drm/nouveau: avoid a use-after-free when BO init fails Date: Mon, 11 Oct 2021 15:46:15 +0200 Message-Id: <20211011134521.149443113@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211011134517.833565002@linuxfoundation.org> References: <20211011134517.833565002@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jeremy Cline [ Upstream commit bcf34aa5082ee2343574bc3f4d1c126030913e54 ] nouveau_bo_init() is backed by ttm_bo_init() and ferries its return code back to the caller. On failures, ttm_bo_init() invokes the provided destructor which should de-initialize and free the memory. Thus, when nouveau_bo_init() returns an error the gem object has already been released and the memory freed by nouveau_bo_del_ttm(). Fixes: 019cbd4a4feb ("drm/nouveau: Initialize GEM object before TTM object") Cc: Thierry Reding Signed-off-by: Jeremy Cline Reviewed-by: Lyude Paul Reviewed-by: Karol Herbst Signed-off-by: Karol Herbst Link: https://patchwork.freedesktop.org/patch/msgid/20201203000220.18238-1-jcline@redhat.com Signed-off-by: Maarten Lankhorst Signed-off-by: Sasha Levin --- drivers/gpu/drm/nouveau/nouveau_gem.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 5b27845075a1..8c2ecc282723 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -247,10 +247,8 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain, } ret = nouveau_bo_init(nvbo, size, align, domain, NULL, NULL); - if (ret) { - nouveau_bo_ref(NULL, &nvbo); + if (ret) return ret; - } /* we restrict allowed domains on nv50+ to only the types * that were requested at creation time. not possibly on -- 2.33.0