Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2479127yba; Mon, 15 Apr 2019 12:30:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqx+09Eu2Tqj13gDfZV5oXljYdC7A3c5PScf5u20vVT2V8j5YEc/ZnbcdO/DrLKgmZd514tT X-Received: by 2002:a17:902:9a4c:: with SMTP id x12mr30158610plv.90.1555356626750; Mon, 15 Apr 2019 12:30:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555356626; cv=none; d=google.com; s=arc-20160816; b=ApQdMyVTFFu5aggiEr0IqBQULS97X3Pt/90QoSVQUuP1c1V6kyksoYQX3xFxxgcgYw p5qXUavJWlKXlQzYI0KG6fFzVwfWQ0socJRg1KW9z/1l7sTK+h0LV+bc6/OilX/96+i4 DyFmPbwn7RkwY1G+A+fHDGsOMHT7i0QNIDlZZjMlksjhYoufC/DXmNpr3HDrDGbQ9zCA o79oItHqiHS4U5h8tR4iVuOecX58kZb45Y9jVxFJZHm2TTJA6pQH3h1tsGs2V92IIC/i UF/Xd4VWEpN2QnH8+525SqFrWSVSoK4mRekpUal493hzll5fViJf6zWszmG1tdwl/0xn fw3Q== 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=2vQMELQfQfNbRTYkbgez5iaRvbfjhn++1yHQh4s7jeo=; b=cANrcBlbPcBby7Q/HJMFov9BemYYULAIEi2gV3vYoxyWitOjk2KNSXD5Rri8QwfU8k VemSrJFvrqbP92VjF6eKVjybkAoGEbxCO1FF37y6uaJbGKhWE0fHk11TdIwTDN9B3jZn XqbpFgir0AMDE3qI6PlGDIOIZnIxztt6SORCcwgSKXKJJmnh8LFIiv7QvNxRXs7r//F3 XoY51FtQiWYfv2MxtiXr9lgh4a5bHpkIiusSV/Ne0uTyjLkpdjOaARDoe6SvB2Ai8hmE 4r2TdJSmmrwzoIiLeMm18wxOTQtZnLQlHVLdJSs8u6dBRMTBNXh12eZn8wVhVxqEl9Xi sbnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=y4aSXxJ1; 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 t9si33991461pgp.273.2019.04.15.12.30.10; Mon, 15 Apr 2019 12:30:26 -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=y4aSXxJ1; 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 S1729966AbfDOT1o (ORCPT + 99 others); Mon, 15 Apr 2019 15:27:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:35606 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729289AbfDOTDh (ORCPT ); Mon, 15 Apr 2019 15:03:37 -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 526902087C; Mon, 15 Apr 2019 19:03:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1555355016; bh=3GMIeBtL+zUWVPQx7tV6tP59+yY+sOOMWG2Hgfg33x4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=y4aSXxJ1zAQ7obe163w9PrdrgBq5/p37dqyT6lSmdtU3PxYpJ3fnCCbQ5gaPJl1Dw ES9bkDdUkI+VBygtmZhmvQIBW4IdotEqNiNYbp7dpyaKHFdQBjXx1tjxMDj+5lbcuZ 0OztBbLfXgP8sxjRVi45snrG53qBQ6Yf0hvTDltc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Vetter , Dave Airlie Subject: [PATCH 4.14 43/69] drm/udl: add a release method and delay modeset teardown Date: Mon, 15 Apr 2019 20:59:01 +0200 Message-Id: <20190415183733.176337541@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190415183726.036654568@linuxfoundation.org> References: <20190415183726.036654568@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 @@ -47,6 +47,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 = udl_gem_free_object, --- a/drivers/gpu/drm/udl/udl_drv.h +++ b/drivers/gpu/drm/udl/udl_drv.h @@ -101,6 +101,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); +}