From patchwork Thu Dec 22 08:36:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 9484511 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 AF9C3601D3 for ; Thu, 22 Dec 2016 08:42:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ABAE9277D9 for ; Thu, 22 Dec 2016 08:42:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A0A8F281C3; Thu, 22 Dec 2016 08:42:17 +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_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=unavailable 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 693FA277D9 for ; Thu, 22 Dec 2016 08:42:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0F9FB6F1A7; Thu, 22 Dec 2016 08:42:13 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wj0-x244.google.com (mail-wj0-x244.google.com [IPv6:2a00:1450:400c:c01::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3F2EC6F16E; Thu, 22 Dec 2016 08:37:13 +0000 (UTC) Received: by mail-wj0-x244.google.com with SMTP id hb5so1998169wjc.2; Thu, 22 Dec 2016 00:37:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=rBNKDLFG1pPKqGgkMeV21Hsxt8icrzgxjBqVlNjm1RI=; b=IO4GIJ6x+r09yq5d9/6KMdLMhsDS39Nb4PGlxvLtRU0or1em5RI62SXUrJV29EBsC2 zQslKLz/gfUVZ2Rr2P/zvqVGvA3QclWzqyElKkT8zuAYpJTujW2fzqXu5/C1dlETmnf4 r1OgJKXPislTf5PktCh/OWo4BcJ4PguROMqrpolrYqImk/5usmr75BiQ+nLx9tmNcRg7 uh7H+JRdHysgLp27qyGRRqY3pC45tX+jOUeIdyh0W1j1le4ZJ4VOxNfOIUaCvfkni1/o UxEcvHrBqeIY8OfMqwQZr1gn0bMS+0d7q4mk8377lYhCBkmFU3+m1IqVZz+LficqEhBU /x3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=rBNKDLFG1pPKqGgkMeV21Hsxt8icrzgxjBqVlNjm1RI=; b=cc1oZZdXOraSy+pmB3gYjWIyUlA9HnxEQsYBIY9hdsCfSL8rcTm982Zg69zod/tTEi StSPXP8sTLp0TncYwBGsvsRPWq1Tzl2h5b4sH6iNwNVr3xUackKGo4fr/1uD/hV4TPLj ci1XuRR2ZrwxefAB3nTPa05tPH+GmmkD3zLZDZUB9mP6r0JH4TbkXwbDya5lNpoJK5kZ kF6hRe/oH9bCX+vBp1tX2dyfvAAZOOfTmxLDNlNfz2cySOJJyEq+3hWyF5gki6gocEHo O/g2tR/PeKD1oYP8sgFjzOcwBqFmQEt0ZYCdUxb2p6Ww382I2hdP/s2DR9CfoG0sXoJL Qu0g== X-Gm-Message-State: AIkVDXIQ9NWDklL3papq3lW5uk+ZTE+UEschlZSRdglIKNMJX+q84KlxibJGmJw0IPoBQg== X-Received: by 10.194.66.101 with SMTP id e5mr7779333wjt.172.1482395831238; Thu, 22 Dec 2016 00:37:11 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id di9sm34442318wjc.37.2016.12.22.00.37.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Dec 2016 00:37:10 -0800 (PST) From: Chris Wilson To: dri-devel@lists.freedesktop.org Date: Thu, 22 Dec 2016 08:36:28 +0000 Message-Id: <20161222083641.2691-26-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20161222083641.2691-1-chris@chris-wilson.co.uk> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> Cc: intel-gfx@lists.freedesktop.org Subject: [Intel-gfx] [PATCH v4 25/38] drm: Add asserts to catch overflow in drm_mm_init() and drm_mm_init_scan() X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP A simple assert to ensure that we don't overflow start + size when initialising the drm_mm, or its scanner. In future, we may want to switch to tracking the value of ranges (rather than size) so that we can cover the full u64, for example like resource tracking. Signed-off-by: Chris Wilson Reviewed-by: Joonas Lahtinen --- drivers/gpu/drm/drm_mm.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c index e0419cf09bbb..b80305484124 100644 --- a/drivers/gpu/drm/drm_mm.c +++ b/drivers/gpu/drm/drm_mm.c @@ -729,6 +729,8 @@ void drm_mm_init_scan(struct drm_mm *mm, u64 alignment, unsigned long color) { + DRM_MM_BUG_ON(!size); + mm->scan_color = color; mm->scan_alignment = alignment; mm->scan_size = size; @@ -764,6 +766,9 @@ void drm_mm_init_scan_with_range(struct drm_mm *mm, u64 start, u64 end) { + DRM_MM_BUG_ON(start >= end); + DRM_MM_BUG_ON(!size || size > end - start); + mm->scan_color = color; mm->scan_alignment = alignment; mm->scan_size = size; @@ -882,6 +887,8 @@ EXPORT_SYMBOL(drm_mm_scan_remove_block); */ void drm_mm_init(struct drm_mm *mm, u64 start, u64 size) { + DRM_MM_BUG_ON(start + size <= start); + INIT_LIST_HEAD(&mm->hole_stack); mm->scanned_blocks = 0;