Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2083009ybp; Thu, 10 Oct 2019 01:53:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqyndpZkXPVm3HalHp9YXziuM9KFV0Ng+6WV8oemx11CVUe5T3/9BI7qyM3+2BKxR0ntL159 X-Received: by 2002:a17:906:6a54:: with SMTP id n20mr7102717ejs.30.1570697615220; Thu, 10 Oct 2019 01:53:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570697615; cv=none; d=google.com; s=arc-20160816; b=xJu3skAUnrNemp9eazKKQkSXf/XneebD+e9wys+hSf09RUaC3/S01ZER7c4osagAtE P1LdnpuvqCu0m67zfkeZtUFBnBU2u4n65S6Wl/NMhnfwyqQ6U/8eOX2fFJ6+B2da0HSH qOVD2dFdgPPOz1r2uf2S2/ZO+bsVujIxX/bM+A1nmrnl1NLf6nOKnMSAofNc3Kj/I8tx S/Q7bTggJxabmms4T28yBQXF9VYjA3Q2vqy23H3NU2yo5l5EZPHNyZ7PacLyRzGiK3xp dp/HEH4Rp+IfYg0wpW0wgjBO4QRn8X0JpPSTOaMDyyk0pnsBiU2P/MqjNPZEhJxtGV2M 30ag== 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=jOS7H8LlvkoxBjAcReHyTh0sfZ/rNQU01teAatyXuyg=; b=eMjtwCmf+LiqAJfz4gn69Tp55lhrKJKxVsDcZAL85MX+eQw/1fkxXpExk7HZX02AgI x1a3tWBdzq9JjBuAI6E6TgvNyzl8HvFe5RbuLvzw3CdyLAxHcPU8JtKudH9zkUsHc7Di 4MQhF1AXake/Ep6WUU9gqH8c9bvGRJr/FHj/D/1Sy5U978/jfUuv/M0yUyXB+qjndgW6 GIOhTX4ev+djq7spXCbIzQEekNkAy+vVCy3VFz7Oj1lBDjixhveJHm0lzX8XCtb+Le6B O4OtLfjqEOCwwKWDjx7PrQVffTFReg66EiBrZsgKCPyrt7J70IcXSsB6fBKxwZxuaH4y bRlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dtwTYlXm; 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 e12si3214164edb.262.2019.10.10.01.53.12; Thu, 10 Oct 2019 01:53:35 -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=dtwTYlXm; 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 S2390178AbfJJIv7 (ORCPT + 99 others); Thu, 10 Oct 2019 04:51:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:59700 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390179AbfJJIv6 (ORCPT ); Thu, 10 Oct 2019 04:51:58 -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 1E16020679; Thu, 10 Oct 2019 08:51:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570697517; bh=C2dPrzvJbLHxSfOqxAHxfA+whEXnGFJtN4jQkT7k6Ag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dtwTYlXmcaWgRso5iRcaJXxMawkSiwLItb10EljcDZYQCAjQkSFXj8z8tEJGMd4E1 nn/qev4jkHsOY/5B3dlSO4ssCmqfsSmTr3opcQBK+kGhYpVnrNndaFemInVQWGR/Yd flRs4DIRShIcdNwBImfN0MSebjtOA0oHqpsJKZYc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chris Wilson , Tvrtko Ursulin , Sasha Levin Subject: [PATCH 4.14 55/61] drm/i915/userptr: Acquire the page lock around set_page_dirty() Date: Thu, 10 Oct 2019 10:37:20 +0200 Message-Id: <20191010083524.098009692@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191010083449.500442342@linuxfoundation.org> References: <20191010083449.500442342@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: Chris Wilson [ Upstream commit cb6d7c7dc7ff8cace666ddec66334117a6068ce2 ] set_page_dirty says: For pages with a mapping this should be done under the page lock for the benefit of asynchronous memory errors who prefer a consistent dirty state. This rule can be broken in some special cases, but should be better not to. Under those rules, it is only safe for us to use the plain set_page_dirty calls for shmemfs/anonymous memory. Userptr may be used with real mappings and so needs to use the locked version (set_page_dirty_lock). Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=203317 Fixes: 5cc9ed4b9a7a ("drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl") Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Cc: stable@vger.kernel.org Reviewed-by: Tvrtko Ursulin Link: https://patchwork.freedesktop.org/patch/msgid/20190708140327.26825-1-chris@chris-wilson.co.uk Signed-off-by: Sasha Levin --- drivers/gpu/drm/i915/i915_gem_userptr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c index 05ae8c4a8a1b6..9760b67dab28b 100644 --- a/drivers/gpu/drm/i915/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/i915_gem_userptr.c @@ -691,7 +691,15 @@ i915_gem_userptr_put_pages(struct drm_i915_gem_object *obj, for_each_sgt_page(page, sgt_iter, pages) { if (obj->mm.dirty) - set_page_dirty(page); + /* + * As this may not be anonymous memory (e.g. shmem) + * but exist on a real mapping, we have to lock + * the page in order to dirty it -- holding + * the page reference is not sufficient to + * prevent the inode from being truncated. + * Play safe and take the lock. + */ + set_page_dirty_lock(page); mark_page_accessed(page); put_page(page); -- 2.20.1