From: Tomeu Vizoso <tomeu.vizoso@collabora.com> To: linux-kernel@vger.kernel.org Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com>, "Sean Paul" <seanpaul@chromium.org>, "Thierry Reding" <thierry.reding@gmail.com>, "Emil Velikov" <emil.l.velikov@gmail.com>, "Daniel Vetter" <daniel.vetter@intel.com>, "Jani Nikula" <jani.nikula@linux.intel.com>, "Tomeu Vizoso" <tomeu.vizoso@collabora.com>, "David Airlie" <airlied@linux.ie>, dri-devel@lists.freedesktop.org Subject: [PATCH v12 2/4] drm: Move locking into drm_debugfs_crtc_crc_add Date: Thu, 17 Nov 2016 10:27:05 +0100 [thread overview] Message-ID: <1479374827-10642-3-git-send-email-tomeu.vizoso@collabora.com> (raw) In-Reply-To: <1479374827-10642-1-git-send-email-tomeu.vizoso@collabora.com> There's no reason any more for callers of this function to take the lock themselves, so just move the lock to the function to avoid confusion and bugs when more callers are contributed. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> --- drivers/gpu/drm/drm_debugfs_crc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c index 00e771fb7df2..68b171af237b 100644 --- a/drivers/gpu/drm/drm_debugfs_crc.c +++ b/drivers/gpu/drm/drm_debugfs_crc.c @@ -325,16 +325,19 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame, struct drm_crtc_crc_entry *entry; int head, tail; - assert_spin_locked(&crc->lock); + spin_lock(&crc->lock); /* Caller may not have noticed yet that userspace has stopped reading */ - if (!crc->opened) + if (!crc->opened) { + spin_unlock(&crc->lock); return -EINVAL; + } head = crc->head; tail = crc->tail; if (CIRC_SPACE(head, tail, DRM_CRC_ENTRIES_NR) < 1) { + spin_unlock(&crc->lock); DRM_ERROR("Overflow of CRC buffer, userspace reads too slow.\n"); return -ENOBUFS; } @@ -347,6 +350,8 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame, head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1); crc->head = head; + spin_unlock(&crc->lock); + return 0; } EXPORT_SYMBOL_GPL(drm_crtc_add_crc_entry); -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Tomeu Vizoso <tomeu.vizoso@collabora.com> To: linux-kernel@vger.kernel.org Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>, Emil Velikov <emil.l.velikov@gmail.com>, dri-devel@lists.freedesktop.org, Daniel Vetter <daniel.vetter@intel.com> Subject: [PATCH v12 2/4] drm: Move locking into drm_debugfs_crtc_crc_add Date: Thu, 17 Nov 2016 10:27:05 +0100 [thread overview] Message-ID: <1479374827-10642-3-git-send-email-tomeu.vizoso@collabora.com> (raw) In-Reply-To: <1479374827-10642-1-git-send-email-tomeu.vizoso@collabora.com> There's no reason any more for callers of this function to take the lock themselves, so just move the lock to the function to avoid confusion and bugs when more callers are contributed. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> --- drivers/gpu/drm/drm_debugfs_crc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_debugfs_crc.c b/drivers/gpu/drm/drm_debugfs_crc.c index 00e771fb7df2..68b171af237b 100644 --- a/drivers/gpu/drm/drm_debugfs_crc.c +++ b/drivers/gpu/drm/drm_debugfs_crc.c @@ -325,16 +325,19 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame, struct drm_crtc_crc_entry *entry; int head, tail; - assert_spin_locked(&crc->lock); + spin_lock(&crc->lock); /* Caller may not have noticed yet that userspace has stopped reading */ - if (!crc->opened) + if (!crc->opened) { + spin_unlock(&crc->lock); return -EINVAL; + } head = crc->head; tail = crc->tail; if (CIRC_SPACE(head, tail, DRM_CRC_ENTRIES_NR) < 1) { + spin_unlock(&crc->lock); DRM_ERROR("Overflow of CRC buffer, userspace reads too slow.\n"); return -ENOBUFS; } @@ -347,6 +350,8 @@ int drm_crtc_add_crc_entry(struct drm_crtc *crtc, bool has_frame, head = (head + 1) & (DRM_CRC_ENTRIES_NR - 1); crc->head = head; + spin_unlock(&crc->lock); + return 0; } EXPORT_SYMBOL_GPL(drm_crtc_add_crc_entry); -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2016-11-17 9:29 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-17 9:27 [PATCH v12 0/4] New debugfs API for capturing CRC of frames Tomeu Vizoso 2016-11-17 9:27 ` Tomeu Vizoso 2016-11-17 9:27 ` [PATCH v12 1/4] drm/i915/debugfs: Move out pipe CRC code Tomeu Vizoso 2016-11-17 9:27 ` Tomeu Vizoso 2016-11-17 9:27 ` Tomeu Vizoso [this message] 2016-11-17 9:27 ` [PATCH v12 2/4] drm: Move locking into drm_debugfs_crtc_crc_add Tomeu Vizoso 2016-11-17 9:27 ` [PATCH v12 3/4] drm/i915: Use new CRC debugfs API Tomeu Vizoso 2016-11-17 9:27 ` Tomeu Vizoso 2016-11-17 9:27 ` [PATCH v12 4/4] drm/i915: Put "cooked" vlank counters in frame CRC lines Tomeu Vizoso 2016-11-17 9:27 ` Tomeu Vizoso
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1479374827-10642-3-git-send-email-tomeu.vizoso@collabora.com \ --to=tomeu.vizoso@collabora.com \ --cc=airlied@linux.ie \ --cc=daniel.vetter@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=emil.l.velikov@gmail.com \ --cc=jani.nikula@linux.intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=seanpaul@chromium.org \ --cc=thierry.reding@gmail.com \ --cc=ville.syrjala@linux.intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.