From patchwork Fri Dec 16 07:47:05 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 9477443 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 EF1EF6047D for ; Fri, 16 Dec 2016 07:50:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E50342880A for ; Fri, 16 Dec 2016 07:50:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DA2C228810; Fri, 16 Dec 2016 07:50:54 +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 A75092880A for ; Fri, 16 Dec 2016 07:50:54 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AD07E6EB47; Fri, 16 Dec 2016 07:50:48 +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 140C26EB34; Fri, 16 Dec 2016 07:47:54 +0000 (UTC) Received: by mail-wj0-x242.google.com with SMTP id kp2so13137071wjc.0; Thu, 15 Dec 2016 23:47:54 -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=4m++zaikWTebLq0akUfpHSm4ATeWhGxrW5BuLon46Mk=; b=VPzZS2alW2nlVG15WoZtqTj85iODRFO5NAU2qJ6O/IA6NVp+SD8n4iEV//km5rK/ez poFxtaitlDaGmV/Oq53insJd/JX95Gt6jcTFc82aw4ICThnxELEEzwvlxvNdRheYEgG/ X/zhQsgPYvuf3pxIV3mC+eaJXmIQNiSFtG3sZgfkuBAnR5c+9om7DUH9zed6D5czZKSB 4hzq/kYH4tj0KChBiINAk21jDl8JN+18YpDS+oPz/49GZ8UjwUYZPQWBSJbs5uSlUTyx T9mEQcjP9YbPPr6tMtPl6rcDYFikf8JH9nIApJENTxmOE0IciPwhtWgzTcVVwUm28DE0 xsMA== 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=4m++zaikWTebLq0akUfpHSm4ATeWhGxrW5BuLon46Mk=; b=RVgyFjFbFC1qgjSGNI59ZMPJj2WPxzyS6BMmnRZA5U01+rgq1ji03u34MtJOFZOeO8 CbplOJUxSLzHMAmpYnJ/TSEFV5v7K9eq8qzqScx4UIlvQGXb/UjC4fhM4fZ38gYE5ASu Qf1VkiM+h+bzYly041ypxupx8fNWovxwYIyaPpBY+2olqz+Aag746SsppOJ3psNbqpev DnGwviJ+lwdzZ7Ocf1EHyAeI0gMKZlgN5pD/UOQpgvJvW0UO4wwv44dzuLM3igY/nEoV 7bwdScfp59CQnrmC2GyveI9YGXYUgT3Q1DJxuSNGb857k9JZbZYkAIpoqGfgyXMSVSl+ 9d2w== X-Gm-Message-State: AIkVDXLqivG0NwnVf2VB2jUB0ZXymaWQICdLriewuBwfTuQ7r8Pwic0Z8sBTc4pZ0IY1Vg== X-Received: by 10.194.87.230 with SMTP id bb6mr1611305wjb.163.1481874472192; Thu, 15 Dec 2016 23:47:52 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id c202sm2792407wme.1.2016.12.15.23.47.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Dec 2016 23:47:51 -0800 (PST) From: Chris Wilson To: dri-devel@lists.freedesktop.org Subject: [PATCH v2 27/40] drm: Add asserts to catch overflow in drm_mm_init() and drm_mm_init_scan() Date: Fri, 16 Dec 2016 07:47:05 +0000 Message-Id: <20161216074718.32500-28-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20161216074718.32500-1-chris@chris-wilson.co.uk> References: <20161216074718.32500-1-chris@chris-wilson.co.uk> Cc: intel-gfx@lists.freedesktop.org, joonas.lahtinen@linux.intel.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 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 14a5ef505f1b..57267845b7d4 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 == 0); + 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 == 0 || 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;