From patchwork Tue Jun 23 20:45:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 6663141 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.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 0BBDCC05AD for ; Tue, 23 Jun 2015 20:43:34 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 344482041F for ; Tue, 23 Jun 2015 20:43:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 5AAA720555 for ; Tue, 23 Jun 2015 20:43:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 080226EA70; Tue, 23 Jun 2015 13:43:31 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by gabe.freedesktop.org (Postfix) with ESMTP id 74C466EA70 for ; Tue, 23 Jun 2015 13:43:29 -0700 (PDT) Received: by wicnd19 with SMTP id nd19so117172622wic.1 for ; Tue, 23 Jun 2015 13:43:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Y7wGCdDfaQLzOjsOL8nygtIu5wNLV/kaVASBYw62lyU=; b=fDqjutPm6WAHGshIlOTnhgGrkrtnz1dGVvlcR3J0mz5tKcj3+Iuk5/HfMqmIRsDsLO Q5xj8QlgmdK3QB2UAiNHOqzprF8wBqNeu48ltisJiJvHQ+WcF/LCzZrohMEKb+Qt/E6Z 1qJ3Z0EQ+wb/SpsuF+CeUHe/lv3RWACQ0rXig= 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=Y7wGCdDfaQLzOjsOL8nygtIu5wNLV/kaVASBYw62lyU=; b=fdiAhwy6NFMw6NY9MiBqjPY6nO6m50O5qF+DJ/RfVomqMQy3h5+cvoWAWu3RKpO12c +dfSP1fp5BW24X2dqMkWMqOG6lV+h0EGZaNjnvKQhP3j6Pxc94d4uR6QnQbVL9WMDJuB eoCQDbUmgaQCPw8Jd4CXAiYGAkTEG4B3O4JSkcL2umCkedQqbwoX50rDvCki8dYwMEFq h4LDa3FXxMJ5QrjBezAkv2Np2ZVYvVf5GwSXfr6MlIdHT1ZubMkUDi7TDlDDNxkfsxvn B9x9u2NAKRNzZemdu1/UB2yqUFP7p8CLOSs/+6eMzvvBvhf8ABx/uMumL4RY2v11t0oB gjSw== X-Gm-Message-State: ALoCoQm1ME3ULt4kNmQOBBSrTJPdNSBIAmBzX4ofoDC/Z+qx378ZuunMoL1W3hgdZsVvvguiIVzO X-Received: by 10.181.13.5 with SMTP id eu5mr6510236wid.37.1435092208905; Tue, 23 Jun 2015 13:43:28 -0700 (PDT) Received: from phenom.ffwll.local (212-51-149-109.fiber7.init7.net. [212.51.149.109]) by mx.google.com with ESMTPSA id c2sm34354177wjf.18.2015.06.23.13.43.27 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 23 Jun 2015 13:43:28 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH 07/11] drm: Check locking in drm_for_each_fb Date: Tue, 23 Jun 2015 22:45:58 +0200 Message-Id: <1435092362-31062-8-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1435092362-31062-1-git-send-email-daniel.vetter@ffwll.ch> References: <1435092362-31062-1-git-send-email-daniel.vetter@ffwll.ch> Cc: Daniel Vetter , Intel Graphics Development , Daniel Vetter 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-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, 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 Ever since framebuffers are reference counted we have a special lock for the global fb list. Make sure users of that list do hold that lock when using the new iterators. Signed-off-by: Daniel Vetter --- include/drm/drm_crtc.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index a912ba06cf45..3646c47b43de 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1602,6 +1602,10 @@ static inline struct drm_property *drm_property_find(struct drm_device *dev, encoder = list_next_entry(encoder, head)) #define drm_for_each_fb(fb, dev) \ - list_for_each_entry(fb, &(dev)->mode_config.fb_list, head) + for (WARN_ON(!mutex_is_locked(&(dev)->mode_config.fb_lock)), \ + fb = list_first_entry(&(dev)->mode_config.fb_list, \ + struct drm_framebuffer, head); \ + &fb->head != (&(dev)->mode_config.fb_list); \ + fb = list_next_entry(fb, head)) #endif /* __DRM_CRTC_H__ */