Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2470365yba; Mon, 15 Apr 2019 12:18:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqy9gjm9xmpUWgcsQn8kJd1a32IpdZhO7l3DAZOC1ri57A0M24pH/rqEj/ertodmBzZEy6aC X-Received: by 2002:a63:2c3:: with SMTP id 186mr70064488pgc.161.1555355913823; Mon, 15 Apr 2019 12:18:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555355913; cv=none; d=google.com; s=arc-20160816; b=cUFaXvsre/CkBv1g7Ocd/INrPyyg3eCAivNyB35FMpstOms8b+gXsuW7Gc4sy2Z/1C 92Hylz2S3VaeC8zmq4cJy+MtKzK1mMFVWheYifJAG4jWPZnb1Zs6t4YhTbvLixrSvTHd /k6ItMG53gddaeHmCk3U79pVezA3nU1xmixXQF2tT8MP9x3d0lMdu2J8YQVi4R9iEMWu LDBlpKL6zQCeCzSxQP5j3GcrRvT8W80yO+vQxtuDaCvUGChNx4AqZ4WJ8R5rZP+we3BC qs4uTy5GGF9AE4eBVZzu/vBSQ5Zxgq/XCMZDKTB/WVZ+jOl2gLp02cc7wByw7EpT7APQ WPhw== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=5O0qEpehYtRhfQ2zl1xLZskTvEDxb2hTtc9orpuwRVI=; b=KSBSs537oKozsaux5vbBHp7LR3BEyI9ath7LXQ3X5axpejy6+akXONp7M+pNoQ5gyl O96BsHlUhZYyvkXa15Ei8nYweU5eZl9ZqYaGhIealwj7oV7d6bzAVNPy+T0slJ5/u8Wd ZwwH/0MsY0HKKgAtXNXCZV+iJ2sZlnFbQWnAWIoRpQ1HqdBOiIW69UuLeFZRIWF6mkjf KJCGkGw+cacm/ZvPNLRalSoB0a8WcJekgucWmmAZAxxUM0+9GK/BKzLUyHR94IV85GGT +WpUi2Zwmtqprpo18jPAQo5GrtDqUAJLsVLWeHibf+5Uo46fdZW7onhK98SvVC5wskc0 u0rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=B7gP8czQ; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c10si45292499plo.216.2019.04.15.12.18.17; Mon, 15 Apr 2019 12:18:33 -0700 (PDT) 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=B7gP8czQ; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731626AbfDOTRA (ORCPT + 99 others); Mon, 15 Apr 2019 15:17:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:50246 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731094AbfDOTMq (ORCPT ); Mon, 15 Apr 2019 15:12:46 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 2622D2073F; Mon, 15 Apr 2019 19:12:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355565; bh=pQYJmHJT7PBNeH2DZM8AKGRrSD7/IDnhcH7KXwxPyTM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B7gP8czQnAFBfKnr52lbmHmkbPrYdyPy3IZ3H/+UUo27oo8n9zVuAhoD+y3KOmOv8 w9TNnWLyl6GMepVBs1+ed20bcgR3JpHP7gufQer/5sittKb+l0tnM2fu9ZblbcZW43 124g9+visulI/+YeibTL/bTGjFJR4ANlwohFPjzU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Vetter , Dave Airlie Subject: [PATCH 5.0 068/117] drm/udl: add a release method and delay modeset teardown Date: Mon, 15 Apr 2019 21:00:38 +0200 Message-Id: <20190415183748.418353046@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183744.887851196@linuxfoundation.org> References: <20190415183744.887851196@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Airlie commit 9b39b013037fbfa8d4b999345d9e904d8a336fc2 upstream. If we unplug a udl device, the usb callback with deinit the mode_config struct, however userspace will still have an open file descriptor and a framebuffer on that device. When userspace closes the fd, we'll oops because it'll try and look stuff up in the object idr which we've destroyed. This punts destroying the mode objects until release time instead. Cc: stable@vger.kernel.org Reviewed-by: Daniel Vetter Signed-off-by: Dave Airlie Link: https://patchwork.freedesktop.org/patch/msgid/20190405031715.5959-2-airlied@gmail.com Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/udl/udl_drv.c | 1 + drivers/gpu/drm/udl/udl_drv.h | 1 + drivers/gpu/drm/udl/udl_main.c | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) --- a/drivers/gpu/drm/udl/udl_drv.c +++ b/drivers/gpu/drm/udl/udl_drv.c @@ -51,6 +51,7 @@ static struct drm_driver driver = { .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME, .load = udl_driver_load, .unload = udl_driver_unload, + .release = udl_driver_release, /* gem hooks */ .gem_free_object_unlocked = udl_gem_free_object, --- a/drivers/gpu/drm/udl/udl_drv.h +++ b/drivers/gpu/drm/udl/udl_drv.h @@ -104,6 +104,7 @@ void udl_urb_completion(struct urb *urb) int udl_driver_load(struct drm_device *dev, unsigned long flags); void udl_driver_unload(struct drm_device *dev); +void udl_driver_release(struct drm_device *dev); int udl_fbdev_init(struct drm_device *dev); void udl_fbdev_cleanup(struct drm_device *dev); --- a/drivers/gpu/drm/udl/udl_main.c +++ b/drivers/gpu/drm/udl/udl_main.c @@ -378,6 +378,12 @@ void udl_driver_unload(struct drm_device udl_free_urb_list(dev); udl_fbdev_cleanup(dev); - udl_modeset_cleanup(dev); kfree(udl); } + +void udl_driver_release(struct drm_device *dev) +{ + udl_modeset_cleanup(dev); + drm_dev_fini(dev); + kfree(dev); +}