Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp244588ybi; Wed, 29 May 2019 20:31:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqxGxSBK2taaEEJPs3qgwm+PGANOBNuDKWBsw/yWJVXgu3/w8bmebCwsN0L1M+FIKUHeIIOV X-Received: by 2002:a17:902:2beb:: with SMTP id l98mr1654575plb.290.1559187117491; Wed, 29 May 2019 20:31:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559187117; cv=none; d=google.com; s=arc-20160816; b=hDdYxNCSZ50b0vwltybgzFsidrVb84KWbE1Pd/wDyYdqUMRdLQ0GYgd4J7hVdVowqk /Ba1hsd1PaCDEkrYa+SZTfJD3FcPaat3SFMhdb9pb2OFKPy5u5GlbJKK5P3cmmQeU3WJ E7SOBNdmD3+ByHvoUhQG8PxdBoCPqJ3AazKQErzJj8WzxyUHB0eMpaMnxa1jjt5gpmq8 KEJf0aEDnyK1p1aICNexTfKyKp0a7QOt6tBiREK6FChlr+4CcObjAjtYDpAkS+VdsXGs VDKu87qFnTyH8yZ+FFRVTWHwtY3OpC7u+MqnuVJuAGKhch8oMOvdPQ2siPI/PGP8Klig yDkw== 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=rE4WGGk9QLB9daRe23StgC/kbzK2YrLTyTTpjMgqu0k=; b=ySSNsuaeSciQwQZYrEoMNkHXGnnDszdUSrsVa53ti64NyCHFwN5H3A5nckwsddYQVu mbwqj2gn/yYOuu837tFy5G4S0x8A2KSP4bKF03yZ4vPibCEcMhgEezEcREhbN3J7CkBl vqSomaFFDL9eLxzBTNgifaUDD2OywIm+7qqs7x2evexzRBUdKWthU6e/4UQ1MG+FVVdT TTdFDTfRLBNCdsVla/ZwVMdk0JOqjo2u5qq+euNv6T8JVUM1ohe5K+lYZTSMuuCBOLCY Q7Dfj3botIx58L1QeeUVZvF0vlBNfacueswNLqgoABNcaEtmPsD2zS5BWYkmlBe7QiWC RXjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=E9sW7p2T; 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 186si1865179pfc.247.2019.05.29.20.31.40; Wed, 29 May 2019 20:31:57 -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=E9sW7p2T; 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 S2388587AbfE3Da1 (ORCPT + 99 others); Wed, 29 May 2019 23:30:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:34394 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730046AbfE3DV1 (ORCPT ); Wed, 29 May 2019 23:21:27 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (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 B5E3D249E6; Thu, 30 May 2019 03:21:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186486; bh=SoCcNy78lwGhxP++i8+gokc+1T3HmcxE2eEBtGwag8o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E9sW7p2Tmd6pS4UvTiHpjseETvR/g3KzaUyt1vUUG3AkMXZ/pgOVeDka6a9DvVJY8 4wNGYAzhlMa91DipYJ/7bp73VYPeCiD/l+74PVriZedHy/Fy3AeBzPDEuidDYSxjAZ d08427t/9V9c5tXfClQ7XCDyPG41Ubg+uGEt1UCM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chris Wilson , Daniel Vetter , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Sasha Levin Subject: [PATCH 4.9 128/128] drm: Wake up next in drm_read() chain if we are forced to putback the event Date: Wed, 29 May 2019 20:07:40 -0700 Message-Id: <20190530030457.108342500@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030432.977908967@linuxfoundation.org> References: <20190530030432.977908967@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 [ Upstream commit 60b801999c48b6c1dd04e653a38e2e613664264e ] After an event is sent, we try to copy it into the user buffer of the first waiter in drm_read() and if the user buffer doesn't have enough room we put it back onto the list. However, we didn't wake up any subsequent waiter, so that event may sit on the list until either a new vblank event is sent or a new waiter appears. Rare, but in the worst case may lead to a stuck process. Testcase: igt/drm_read/short-buffer-wakeup Signed-off-by: Chris Wilson Cc: Daniel Vetter Reviewed-by: Ville Syrjälä Link: https://patchwork.freedesktop.org/patch/msgid/20170804082328.17173-1-chris@chris-wilson.co.uk Signed-off-by: Sasha Levin --- drivers/gpu/drm/drm_fops.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c index c37b7b5f1dd31..921f7f690ae9b 100644 --- a/drivers/gpu/drm/drm_fops.c +++ b/drivers/gpu/drm/drm_fops.c @@ -515,6 +515,7 @@ ssize_t drm_read(struct file *filp, char __user *buffer, file_priv->event_space -= length; list_add(&e->link, &file_priv->event_list); spin_unlock_irq(&dev->event_lock); + wake_up_interruptible(&file_priv->event_wait); break; } -- 2.20.1