From: David Herrmann Subject: [PATCH 2/6] drm: mm: add drm_mm_node_linked() helper Date: Mon, 1 Jul 2013 20:32:59 +0200 Message-ID: <1372703583-9550-3-git-send-email-dh.herrmann@gmail.com> References: <1372703583-9550-1-git-send-email-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-bk0-f51.google.com (mail-bk0-f51.google.com [209.85.214.51]) by gabe.freedesktop.org (Postfix) with ESMTP id 90E21E5CB7 for ; Mon, 1 Jul 2013 11:33:22 -0700 (PDT) Received: by mail-bk0-f51.google.com with SMTP id ji1so1896255bkc.38 for ; Mon, 01 Jul 2013 11:33:21 -0700 (PDT) In-Reply-To: <1372703583-9550-1-git-send-email-dh.herrmann@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org Cc: Dave Airlie List-Id: dri-devel@lists.freedesktop.org This helper tests whether a given node is currently linked into a drm_mm manager. We use the node->mm pointer for that as it is set for all linked objects. We also reset node->mm whenever a node is removed. All such access is currently safe as everyone calls kfree() on the object directly after removing it. Furthermore, no-one is supposed to access node->mm from outside drm_mm.c, anyway. Signed-off-by: David Herrmann --- drivers/gpu/drm/drm_mm.c | 1 + include/drm/drm_mm.h | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c index 7917729..3bd43ce 100644 --- a/drivers/gpu/drm/drm_mm.c +++ b/drivers/gpu/drm/drm_mm.c @@ -374,6 +374,7 @@ void drm_mm_remove_node(struct drm_mm_node *node) list_del(&node->node_list); node->allocated = 0; + node->mm = NULL; } EXPORT_SYMBOL(drm_mm_remove_node); diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h index de92425..d83b966 100644 --- a/include/drm/drm_mm.h +++ b/include/drm/drm_mm.h @@ -85,6 +85,11 @@ static inline bool drm_mm_node_allocated(struct drm_mm_node *node) return node->allocated; } +static inline bool drm_mm_node_linked(struct drm_mm_node *node) +{ + return node->mm; +} + static inline bool drm_mm_initialized(struct drm_mm *mm) { return mm->hole_stack.next; -- 1.8.3.2