From patchwork Fri Dec 9 11:21:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Gmeiner X-Patchwork-Id: 9467959 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5BF0C60586 for ; Fri, 9 Dec 2016 11:22:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4EE88285C8 for ; Fri, 9 Dec 2016 11:22:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 43FEB285F7; Fri, 9 Dec 2016 11:22:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0D37B285C8 for ; Fri, 9 Dec 2016 11:22:20 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C39A56E981; Fri, 9 Dec 2016 11:22:08 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wj0-x242.google.com (mail-wj0-x242.google.com [IPv6:2a00:1450:400c:c01::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id BBC836E981 for ; Fri, 9 Dec 2016 11:21:57 +0000 (UTC) Received: by mail-wj0-x242.google.com with SMTP id kp2so1989884wjc.0 for ; Fri, 09 Dec 2016 03:21:57 -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=dYxBZ7mkHzRS8KxQVA6ebXMdQJ5rhIBmq96TQMbXFME=; b=F1xxkg/zXzR1TsevnLbX0fyQ6xtWCGJXLQQr/I1AcuWlGe3DQ+qpME3M27Yzw/Nx88 yqn1N+foNjFA3vIAjSwpu1WHxG2J5mJ5sPy3bAerkVOP7jpgWMHZoAClCiVwYn7AJhue 7KmsLV3LrDvFt+uapkEVMXDKaKAsgrfeols/7wfFLli1V1GZjut8c1YOaZ38ue3f9vb6 dgwE0w6zzGaxebyUcFhGonJ66Itu6WfFyjdN7PjA/TlrvK4ojBn+K6UmeMHpRo3Urwll Yws7VHSVJ8e6YmyicEd1/pdkjTXDlYNrKLg9mQJZKkPvW95rVuuXW6/JmF4TldIcjRzZ ynEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dYxBZ7mkHzRS8KxQVA6ebXMdQJ5rhIBmq96TQMbXFME=; b=StgXL7Skw3RIAOh148yxxho6eqTi/inLQgltFIEJkH1pyk+Qhc9mk5mY97tZ6r9sM/ /98F6X//PGFi6i6NLp+iecqPynyDxIT+4ge6sNL/WGLQKcMe0vvHilxQH+3mpJMZjMzO BHBcrrvpProus1b/V2fOr4zPAOifeQeBuMpuM53fCP0kf+w3IIj21C5McDI4MVKB2O4U 5H/n+KPhHXmeKgUZuXXNJFxFWKlXB96Wbevg33E2rpQwYzHCw6fC+XaUUOT4nJv69glR 1jTRVabBBf0PaUcwZb809EhIy6Kyru7zIMD6FbcfYNd6fgflDz/2aq0MRCk7i6TWKdlJ W4RA== X-Gm-Message-State: AKaTC02TE238qUsHewEAFwcm806yjR3Z3l21YEIGHTYiO8ZedxKtsi6EX/EpbdhmvlbU4w== X-Received: by 10.194.122.101 with SMTP id lr5mr67471539wjb.210.1481282515974; Fri, 09 Dec 2016 03:21:55 -0800 (PST) Received: from linux.fritz.box.fritz.box (178-190-139-123.adsl.highway.telekom.at. [178.190.139.123]) by smtp.gmail.com with ESMTPSA id v2sm41824518wja.41.2016.12.09.03.21.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Dec 2016 03:21:55 -0800 (PST) From: Christian Gmeiner To: dri-devel@lists.freedesktop.org Subject: [PATCH 09/10] drm/etnaviv: validate readback register address Date: Fri, 9 Dec 2016 12:21:30 +0100 Message-Id: <20161209112131.3924-10-christian.gmeiner@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20161209112131.3924-1-christian.gmeiner@gmail.com> References: <20161209112131.3924-1-christian.gmeiner@gmail.com> Cc: linux+etnaviv@armlinux.org.uk, cphealy@gmail.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Reading some registers end in a system crash ala: Unhandled fault: external abort on non-linefetch (0x1028) at 0xfe641000 Internal error: : 1028 [#1] PREEMPT ARM Avoid those by register validation. Signed-off-by: Christian Gmeiner --- drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c index 08f9b3d..4383c0d 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c @@ -277,6 +277,27 @@ static int submit_reloc(struct etnaviv_gem_submit *submit, void *stream, return 0; } +static int readback_reg_valid(unsigned reg) +{ + /* + * 0x000..0x200: ok + * 0x200..0x400: crash + * 0x400..0x800: ok + * 0x800..0xa00: crash + * 0xa00..0xc00: crash + * 0xc00..0xe00: crash + * 0xe00..0x1000: crash + * everything above: crash + */ + if (reg >= 0x200 && reg < 400) + return 0; + + if (reg >= 0x800) + return 0; + + return 1; +} + static int submit_readback(struct etnaviv_gem_submit *submit, struct etnaviv_cmdbuf *cmdbuf, const struct drm_etnaviv_gem_submit_readback *readbacks, @@ -303,6 +324,11 @@ static int submit_readback(struct etnaviv_gem_submit *submit, return -EINVAL; } + if (!readback_reg_valid(r->reg)) { + DRM_ERROR("invalid readback reg (would cause crash)"); + return -EINVAL; + } + cmdbuf->readbacks[i].bo_vma = etnaviv_gem_vmap(&bo->obj->base); cmdbuf->readbacks[i].offset = r->readback_offset; cmdbuf->readbacks[i].reg = r->reg;