Module Name:    src
Committed By:   riastradh
Date:           Wed Jan 15 13:55:40 UTC 2014

Modified Files:
        src/sys/external/bsd/drm2/dist/drm [riastradh-drm2]: drm_ioctl.c

Log Message:
Take master->lock.spinlock to read master->lock.hw_lock.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.2.4 -r1.1.1.1.2.5 \
    src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.1.1.1.2.4 src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.1.1.1.2.5
--- src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c:1.1.1.1.2.4	Wed Jan 15 13:52:20 2014
+++ src/sys/external/bsd/drm2/dist/drm/drm_ioctl.c	Wed Jan 15 13:55:40 2014
@@ -253,11 +253,14 @@ int drm_getstats(struct drm_device *dev,
 	memset(stats, 0, sizeof(*stats));
 
 	for (i = 0; i < dev->counters; i++) {
-		if (dev->types[i] == _DRM_STAT_LOCK)
+		if (dev->types[i] == _DRM_STAT_LOCK) {
+			spin_lock(file_priv->master->lock.spinlock);
 			stats->data[i].value =
 			    (file_priv->master->lock.hw_lock ? file_priv->master->lock.hw_lock->lock : 0);
-		else
+			spin_unlock(file_priv->master->lock.spinlock);
+		} else {
 			stats->data[i].value = atomic_read(&dev->counts[i]);
+		}
 		stats->data[i].type = dev->types[i];
 	}
 

Reply via email to