Received: by 2002:ac0:8845:0:0:0:0:0 with SMTP id g63csp333285img; Wed, 27 Feb 2019 23:38:00 -0800 (PST) X-Google-Smtp-Source: AHgI3IbEsx2suwticnaja7MQIMyUrWQQk8ctyWY7mZYddJOHV0658jkXzXhSchJ1BkieiXyMJk0K X-Received: by 2002:a17:902:a508:: with SMTP id s8mr6290326plq.275.1551339480072; Wed, 27 Feb 2019 23:38:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551339480; cv=none; d=google.com; s=arc-20160816; b=CeqvlXGonJ+rCkJ3Aq8/l0hzDhEBIEc5otyzdKHCeh9W4oRKgNjFW5EbtzfFh7zHaN 4rlBrrImwobGs6bGmERnSqvKMuPdHknez0HENxe60euP5j2dTcR6rM6UHVToJOfQVysX x0P9dNIobXwT46rG3RWe3U3v7FW3YW5ae1v3gjNXYieiM8Q55MeNkecu7m4Ygas9UhKd prMjXe0xlcP65thjUEA7zXmdct5ng63nyFZQOkkHvIkMXt/SGbWmh/UAZ4r5z7SLai7v zbLp3UyGqGHWKIxQYq4iVClTzclGspRxoUz/+hQ/FKuOxGeyOH7FDnxegSGoiMpPcQ40 J+gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=oM4hTOT2OCF1A/yD/tVGVsaXROzs37e+3No7f+S/dkw=; b=g/7hc8B+U/1/IudvBTFhfpGcw/mvTulITyES/To7PsSq2cSrmDeToPWFtYzz8gYGrC Q9xiLG9RcCLHqIxeMNh4IfuH+JN1sRhN4dLtb7jNh6RjEwI97PBK5E6jlpwDfWVIBnWh vdeIJ0DG2x87QklrZZ42+2PYMQZqwASdghYZkspZrSBJ8Spw7bN2XhL1mhUux9JLsw2P KoE4TVC0XhGnWFcMnSozG86pu0S28pkxpgyF/S9f4iyvnW0AFd3FYWzL1wFNV8DExYJQ xX7AYdJjM2GWFTHi3rh3bfFj/+kU9ogUiko72l7Txq4SzzxdV8aqeZqmUWZIQDMTYZta 5j+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=N0WBsZti; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 3si5698127plv.228.2019.02.27.23.37.44; Wed, 27 Feb 2019 23:38:00 -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=@google.com header.s=20161025 header.b=N0WBsZti; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731020AbfB1Gl5 (ORCPT + 99 others); Thu, 28 Feb 2019 01:41:57 -0500 Received: from mail-it1-f195.google.com ([209.85.166.195]:37445 "EHLO mail-it1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727819AbfB1Gl5 (ORCPT ); Thu, 28 Feb 2019 01:41:57 -0500 Received: by mail-it1-f195.google.com with SMTP id z124so14112116itc.2 for ; Wed, 27 Feb 2019 22:41:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=oM4hTOT2OCF1A/yD/tVGVsaXROzs37e+3No7f+S/dkw=; b=N0WBsZtijllghBiFDgw2A6j/BtYUWaCvjKx9o3A7dWzicUQCQkkCSnxvP5TeUKOO5W cO4EA2WDc6T0fjOOyS73/o1OoDcF2HkoVmjAxKDk6YbSJNvN1euavdhsFWFDME2DcH0M 5bH8yp1vWOSd6nixG4WN9/QJ+eywZQdHTpcwsEDwCu2z2twWfGtGq8KNljAwWIkTmQgv rPkmc6T/7Z3F7Mrq/1/jOde95F2WHL6A5QwfKnmfR/XYtHalL+KBfFjxxJJmUC7lWBXf aHj7EarEEbGGQ7t2asoupH3TQTELf/EGhDf9FXYM/2tKNdxMYo/ctcphXTy9tqUShwdS 1qVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=oM4hTOT2OCF1A/yD/tVGVsaXROzs37e+3No7f+S/dkw=; b=EhLIdItf5tnbNN3xOWZfYDKoqXJ+XdZIL1detQ5tHesTslszy1FkiCwH7ehoFosdlU pUjtNs6boxNabDaZcZtd+tJBREp0afmtopz6nxnmcTor45g9FvmHReOwJ/kIg9JVWbG9 QZTH8aSywMYvmHgCK/8QaMTg2ZHK3yxGYOhou3zKxIArXP5zxEI74mfldhDHS1hfX06D qSDxqih/TbCNtf1fu8VijTQUzJkH4pajxLa+vDkzfmvfZN5TiESNjdWinGJC9wZ3UNuT m9MpF4+ZsQDg0MDDpCfNUtpfymPW7uIPlr3O+si5BjELKY2g0qLG8hEKA6GBwMKb1XnI /5VA== X-Gm-Message-State: AHQUAuabqjYOg7OrxcKI6znDmw9DEyUsXfEKKuDdUVweoPe8KHGAQNr0 7HvyteXS53ug05gpTrs2rJfWbdBJuz2uNx84QPFGnw== X-Received: by 2002:a24:674a:: with SMTP id u71mr2059481itc.12.1551336115765; Wed, 27 Feb 2019 22:41:55 -0800 (PST) MIME-Version: 1.0 References: <20190226213053.GC218103@gmail.com> <20190226220858.214438-1-ebiggers@kernel.org> <20190227231202.tycdbcqtk5ylwp4k@smtp.gmail.com> In-Reply-To: <20190227231202.tycdbcqtk5ylwp4k@smtp.gmail.com> From: Dmitry Vyukov Date: Thu, 28 Feb 2019 07:41:44 +0100 Message-ID: Subject: Re: [PATCH] drm/vkms: fix use-after-free when drm_gem_handle_create() fails To: Rodrigo Siqueira Cc: Eric Biggers , DRI , syzkaller-bugs , LKML , Haneen Mohammed , Daniel Vetter , Chris Wilson , stable Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 28, 2019 at 12:12 AM Rodrigo Siqueira wrote: > > On 02/26, Eric Biggers wrote: > > From: Eric Biggers > > > > If drm_gem_handle_create() fails in vkms_gem_create(), then the > > vkms_gem_object is freed twice: once when the reference is dropped by > > drm_gem_object_put_unlocked(), and again by the extra calls to > > drm_gem_object_release() and kfree(). > > > > Fix it by skipping the second release and free. > > > > This bug was originally found in the vgem driver by syzkaller using > > fault injection, but I noticed it's also present in the vkms driver. > > > > Fixes: 559e50fd34d1 ("drm/vkms: Add dumb operations") > > Cc: Rodrigo Siqueira > > Cc: Haneen Mohammed > > Cc: Daniel Vetter > > Cc: Chris Wilson > > Cc: stable@vger.kernel.org > > Signed-off-by: Eric Biggers > > --- > > drivers/gpu/drm/vkms/vkms_gem.c | 5 +---- > > 1 file changed, 1 insertion(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/vkms/vkms_gem.c b/drivers/gpu/drm/vkms/vkm= s_gem.c > > index 138b0bb325cf9..69048e73377dc 100644 > > --- a/drivers/gpu/drm/vkms/vkms_gem.c > > +++ b/drivers/gpu/drm/vkms/vkms_gem.c > > @@ -111,11 +111,8 @@ struct drm_gem_object *vkms_gem_create(struct drm_= device *dev, > > > > ret =3D drm_gem_handle_create(file, &obj->gem, handle); > > drm_gem_object_put_unlocked(&obj->gem); > > - if (ret) { > > - drm_gem_object_release(&obj->gem); > > - kfree(obj); > > + if (ret) > > return ERR_PTR(ret); > > - } > > > > return &obj->gem; > > } > > -- > > 2.21.0.rc2.261.ga7da99ff1b-goog > > > > Hi, > > Thanks for your patch! :) > > The patch looks good for me. I also tested it under the IGT tests on my > local VM and everything was fine. Hi Rodrigo, What are IGT tests? How can I run them? > > Reviewed-by: Rodrigo Siqueira > > -- > Rodrigo Siqueira > https://siqueira.tech > Graduate Student > Department of Computer Science > University of S=C3=A3o Paulo > > -- > You received this message because you are subscribed to the Google Groups= "syzkaller-bugs" group. > To unsubscribe from this group and stop receiving emails from it, send an= email to syzkaller-bugs+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgi= d/syzkaller-bugs/20190227231202.tycdbcqtk5ylwp4k%40smtp.gmail.com. > For more options, visit https://groups.google.com/d/optout.