Received: by 2002:ac0:8845:0:0:0:0:0 with SMTP id g63csp1064118img; Tue, 26 Feb 2019 13:31:36 -0800 (PST) X-Google-Smtp-Source: AHgI3IZdgyugjGAufxMdeBZa8VMf2nW9WKecfQNx90DtOG/vLmHW/FFoxZzVE/uGdavGTvej5p8p X-Received: by 2002:a62:b618:: with SMTP id j24mr27795350pff.120.1551216696860; Tue, 26 Feb 2019 13:31:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551216696; cv=none; d=google.com; s=arc-20160816; b=mbtDqvjtcJOkJ5yCYW5A7ycXeejTnLk1AdJKXskDnU0LNIPiSuWLR/MX6LDmFaZSAb ljxQrQ7qSbopJ5rylItYJ5cXYsYWkX8T6fbewbIN2Y0CvwwNSvdsX7YXO9i3ycYNNnu2 ybRylyBxr47HMqwBXHuNADgyXvt5+Wy+eiXfZe0pUn4FJjsYNOE3L7l2zTAKiU1geEMX lvC4EOBEKUAriyS4f57I5cGhYLHG7QzjCiLp8RPTraNyCJEM18vZfDnTWqvz+P1k0X2Q t6TvplYdVcO+PAJ3OcpUw1oV5o7l7JjBPTMcTo3WlotnfpRyoRqQrFTdQDQMJORif1kr lwpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=Uh4CbiF9fHCwHmmnn78NtSt1EOjpFT26ahzeAQR9sUo=; b=gGmgZYUUChFwxT27UwuATqS8vCmpVk9Ja7lsL8oYVFma918eEh0NFUp4Tq74u5Pwqq lJJg9Ok4Ae/jgnFoQkd3QSKQ2ZKjaqt2mgsiN0iu3sD3EAbrPO9KDYDUw6ArOAm9F0do u2U4kXXbx8TcqIq1dEJW3azDySPZe47SQtjPtVo0zQ1KqNeaCvhzsU/zwhhrHmelgYDi BDD7HBfHXpS9GRLqOSYpiL3xy5B34VN0el2p4Y1tfSXL9dt7Ic4xjK/qu92z/wos0RUy d+Eoo6RcNZ+wmwOUDx8Jsy8+TEW9ekDhh4nruGOFncQ4HwEUBAreXMJ/GmsAhZTmjFgA ZSUg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RTFVx471; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id x1si13167674plo.58.2019.02.26.13.31.20; Tue, 26 Feb 2019 13:31:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RTFVx471; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1729066AbfBZVa5 (ORCPT + 99 others); Tue, 26 Feb 2019 16:30:57 -0500 Received: from mail.kernel.org ([198.145.29.99]:34586 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728727AbfBZVa4 (ORCPT ); Tue, 26 Feb 2019 16:30:56 -0500 Received: from gmail.com (unknown [104.132.1.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BAEFA21850; Tue, 26 Feb 2019 21:30:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551216655; bh=sRpHekf41Wkc4rtWwxgyCQJTsEli1LAI6csERRxBRJg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=RTFVx471pFWYtprxBZEk1Prqn5HyV42FhWLvU1OzRT6+ve7DrgCQlbAnH8RGpVXMY EMqYRT7O0cbhgwMUjGyq9jf3V3V/ks5V8ZyLzoLWk653aE4ugKB9kKObt5dN5lCAke keo1syzqjOnNzBy8CkpYnjx5oBjDFoxOZXDLewUU= Date: Tue, 26 Feb 2019 13:30:54 -0800 From: Eric Biggers To: Chris Wilson Cc: Daniel Vetter , David Airlie , dri-devel@lists.freedesktop.org, syzkaller-bugs , linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/vgem: fix use-after-free when drm_gem_handle_create() fails Message-ID: <20190226213053.GC218103@gmail.com> References: <20190226204726.92256-1-ebiggers@kernel.org> <155121487959.17933.15702334870310780013@skylake-alporthouse-com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <155121487959.17933.15702334870310780013@skylake-alporthouse-com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 26, 2019 at 09:01:29PM +0000, Chris Wilson wrote: > Quoting Eric Biggers (2019-02-26 20:47:26) > > From: Eric Biggers > > > > If drm_gem_handle_create() fails in vgem_gem_create(), then the > > drm_vgem_gem_object is freed twice: once when the reference is dropped > > by drm_gem_object_put_unlocked(), and again by __vgem_gem_destroy(). > > > > This was hit by syzkaller using fault injection. > > > > Fix it by skipping the second free. > > > > Reported-by: syzbot+e73f2fb5ed5a5df36d33@syzkaller.appspotmail.com > > Fixes: 5ba6c9ff961a ("drm/vgem: Fix mmaping") > > That's the wrong fixes line, it's > Fixes: af33a9190d02 ("drm/vgem: Enable dmabuf import interfaces") > Cc: Chris Wilson > Cc: Laura Abbott > Cc: Daniel Vetter > > Sadly I reviewed it so I'm still culpable, but the fix is correct as the > put purposely frees it on error. > You're right; I misread the code at that commit. I'll resend with the correct tags. > > Cc: stable@vger.kernel.org > > Signed-off-by: Eric Biggers > > > --- > > drivers/gpu/drm/vgem/vgem_drv.c | 8 +++----- > > 1 file changed, 3 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c > > index 5930facd6d2d8..70646d9da1596 100644 > > --- a/drivers/gpu/drm/vgem/vgem_drv.c > > +++ b/drivers/gpu/drm/vgem/vgem_drv.c > > @@ -189,15 +189,13 @@ static struct drm_gem_object *vgem_gem_create(struct drm_device *dev, > > return ERR_CAST(obj); > > > > ret = drm_gem_handle_create(file, &obj->base, handle); > > + > > drm_gem_object_put_unlocked(&obj->base); > > + > > The pattern in the other GEM drivers is not to have these extra > newlines. > > Reviewed-by: Chris Wilson > > > if (ret) > > - goto err; > > + return ERR_PTR(ret); > > > > return &obj->base; > > - > > -err: > > - __vgem_gem_destroy(obj); > > - return ERR_PTR(ret); > > } > > > > static int vgem_gem_dumb_create(struct drm_file *file, struct drm_device *dev, > > -- > > 2.21.0.rc2.261.ga7da99ff1b-goog > >