Module Name:    src
Committed By:   riastradh
Date:           Mon Aug 27 14:41:53 UTC 2018

Modified Files:
        src/sys/external/bsd/drm2/include/linux: kfifo.h

Log Message:
kfifo is used under a spin lock, so its lock must be a spin lock.

>From mrg@.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/include/linux/kfifo.h

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/include/linux/kfifo.h
diff -u src/sys/external/bsd/drm2/include/linux/kfifo.h:1.2 src/sys/external/bsd/drm2/include/linux/kfifo.h:1.3
--- src/sys/external/bsd/drm2/include/linux/kfifo.h:1.2	Mon Aug 27 14:00:26 2018
+++ src/sys/external/bsd/drm2/include/linux/kfifo.h	Mon Aug 27 14:41:53 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kfifo.h,v 1.2 2018/08/27 14:00:26 riastradh Exp $	*/
+/*	$NetBSD: kfifo.h,v 1.3 2018/08/27 14:41:53 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -71,7 +71,7 @@ _kfifo_alloc(struct kfifo_meta *meta, vo
 	/* Type pun!  Hope void * == struct whatever *.  */
 	memcpy(bufp, &buf, sizeof(void *));
 
-	mutex_init(&meta->kfm_lock, MUTEX_DEFAULT, IPL_NONE);
+	mutex_init(&meta->kfm_lock, MUTEX_DEFAULT, IPL_VM);
 	meta->kfm_head = 0;
 	meta->kfm_tail = 0;
 	meta->kfm_nbytes = nbytes;
@@ -120,7 +120,7 @@ _kfifo_out_peek(struct kfifo_meta *meta,
 	char *dst = ptr;
 	size_t copied = 0;
 
-	mutex_enter(&meta->kfm_lock);
+	mutex_spin_enter(&meta->kfm_lock);
 	const size_t head = meta->kfm_head;
 	const size_t tail = meta->kfm_tail;
 	const size_t nbytes = meta->kfm_nbytes;
@@ -140,7 +140,7 @@ _kfifo_out_peek(struct kfifo_meta *meta,
 			copied = size;
 		}
 	}
-	mutex_exit(&meta->kfm_lock);
+	mutex_spin_exit(&meta->kfm_lock);
 
 	return copied;
 }
@@ -155,7 +155,7 @@ _kfifo_out(struct kfifo_meta *meta, cons
 	char *dst = ptr;
 	size_t copied = 0;
 
-	mutex_enter(&meta->kfm_lock);
+	mutex_spin_enter(&meta->kfm_lock);
 	const size_t head = meta->kfm_head;
 	const size_t tail = meta->kfm_tail;
 	const size_t nbytes = meta->kfm_nbytes;
@@ -178,7 +178,7 @@ _kfifo_out(struct kfifo_meta *meta, cons
 			copied = size;
 		}
 	}
-	mutex_exit(&meta->kfm_lock);
+	mutex_spin_exit(&meta->kfm_lock);
 
 	return copied;
 }
@@ -193,7 +193,7 @@ _kfifo_in(struct kfifo_meta *meta, void 
 	char *dst = buf;
 	size_t copied = 0;
 
-	mutex_enter(&meta->kfm_lock);
+	mutex_spin_enter(&meta->kfm_lock);
 	const size_t head = meta->kfm_head;
 	const size_t tail = meta->kfm_tail;
 	const size_t nbytes = meta->kfm_nbytes;
@@ -215,7 +215,7 @@ _kfifo_in(struct kfifo_meta *meta, void 
 			copied = size;
 		}
 	}
-	mutex_exit(&meta->kfm_lock);
+	mutex_spin_exit(&meta->kfm_lock);
 
 	return copied;
 }

Reply via email to