From patchwork Mon Jan 20 19:26:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Herrmann X-Patchwork-Id: 3514251 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id E3DE2C02DC for ; Mon, 20 Jan 2014 19:27:22 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2179B2010E for ; Mon, 20 Jan 2014 19:27:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 42AAE200FF for ; Mon, 20 Jan 2014 19:27:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 37431FAF25 for ; Mon, 20 Jan 2014 11:27:21 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-bk0-f49.google.com (mail-bk0-f49.google.com [209.85.214.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 66386FAC2E for ; Mon, 20 Jan 2014 11:26:51 -0800 (PST) Received: by mail-bk0-f49.google.com with SMTP id v15so598013bkz.8 for ; Mon, 20 Jan 2014 11:26:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vjUcYE91zXp5M+K65qNZk4Pun5l8Lxvof4qT7pqwBZA=; b=AIm1IY/kiKE7E4IX6omO9eaUM5ndoxfXySvIkh3Z3VDqTG9ZDdHEyC7BxpYVW+IE+W aKl1wgzhvcZj5yrNoIYWnSNC8wjH6matP2dDMHAqpr4emBpr6iQw6Q2eNqJ7IajeOBqp jytwYMGbJu9mnV/MLsalooV5E7Yh9nhlph0Srwf4Z6FPukJUfaiw2yl28RBMTTdKT3CM Iuxv0lKN1xPn9e5IihxBEFCxb38pEDA5wMNuTbI06KHaKyHI998XL7W8fpax7DBhiG5J GVWKU8HoSvaQvZK6RrBT4paDqVkdlyJ6OpJ0y1TS3EAH5TH+yrUDor1l+U6bLLoz6xMw hbaw== X-Received: by 10.205.86.137 with SMTP id as9mr15366bkc.89.1390246010462; Mon, 20 Jan 2014 11:26:50 -0800 (PST) Received: from david-ub.localdomain (stgt-5f7292c1.pool.mediaWays.net. [95.114.146.193]) by mx.google.com with ESMTPSA id tf11sm1780282bkb.17.2014.01.20.11.26.49 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 20 Jan 2014 11:26:49 -0800 (PST) From: David Herrmann To: dri-devel@lists.freedesktop.org Subject: [PATCH 3/7] drm/udl: import prime-fds with proper page-alignment Date: Mon, 20 Jan 2014 20:26:25 +0100 Message-Id: <1390245989-13280-3-git-send-email-dh.herrmann@gmail.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1390245989-13280-1-git-send-email-dh.herrmann@gmail.com> References: <1390245989-13280-1-git-send-email-dh.herrmann@gmail.com> Cc: Daniel Vetter X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Spam-Status: No, score=-4.6 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of rounding down to the next lower page-boundary, round up. dma-buf guarantees that we can map buffers in multiples of a page, so if an exporter does not page-align, do it ourselves. This avoids issues if the exported buffer contains an unaligned size and we crop it. In this case, the buffer is too small for the UDL CRTC. So we round up to page-size now and avoid black borders. Worst case is we end up reading out some random kernel memory, but we can never fault as the whole page has the same access-rights. And in this case it's an issue of the buggy exporting driver, not the importing one. Signed-off-by: David Herrmann --- drivers/gpu/drm/udl/udl_gem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c index df963a1..1069e57 100644 --- a/drivers/gpu/drm/udl/udl_gem.c +++ b/drivers/gpu/drm/udl/udl_gem.c @@ -227,7 +227,7 @@ static int udl_prime_create(struct drm_device *dev, struct udl_gem_object *obj; int npages; - npages = size / PAGE_SIZE; + npages = PAGE_ALIGN(size) >> PAGE_SHIFT; *obj_p = NULL; obj = udl_gem_alloc_object(dev, npages * PAGE_SIZE);