svn commit: r362834 - head/sys/kern

Andrew Turner andrew at FreeBSD.org
Wed Jul 1 12:07:29 UTC 2020


Author: andrew
Date: Wed Jul  1 12:07:28 2020
New Revision: 362834
URL: https://svnweb.freebsd.org/changeset/base/362834

Log:
  Simplify the flow when getting/setting an isrc
  
  Rather than unlocking and returning we can just perform the needed action
  only when the interrupt source is valid and reuse the unlock in both the
  valid irq and invalid irq cases.
  
  Sponsored by:	Innovate UK

Modified:
  head/sys/kern/subr_intr.c

Modified: head/sys/kern/subr_intr.c
==============================================================================
--- head/sys/kern/subr_intr.c	Wed Jul  1 10:37:08 2020	(r362833)
+++ head/sys/kern/subr_intr.c	Wed Jul  1 12:07:28 2020	(r362834)
@@ -1517,13 +1517,12 @@ intr_map_get_isrc(u_int res_id)
 {
 	struct intr_irqsrc *isrc;
 
+	isrc = NULL;
 	mtx_lock(&irq_map_lock);
-	if ((res_id >= irq_map_count) || (irq_map[res_id] == NULL)) {
-		mtx_unlock(&irq_map_lock);
-		return (NULL);
-	}
-	isrc = irq_map[res_id]->isrc;
+	if (res_id < irq_map_count && irq_map[res_id] != NULL)
+		isrc = irq_map[res_id]->isrc;
 	mtx_unlock(&irq_map_lock);
+
 	return (isrc);
 }
 
@@ -1532,11 +1531,8 @@ intr_map_set_isrc(u_int res_id, struct intr_irqsrc *is
 {
 
 	mtx_lock(&irq_map_lock);
-	if ((res_id >= irq_map_count) || (irq_map[res_id] == NULL)) {
-		mtx_unlock(&irq_map_lock);
-		return;
-	}
-	irq_map[res_id]->isrc = isrc;
+	if (res_id < irq_map_count && irq_map[res_id] != NULL)
+		irq_map[res_id]->isrc = isrc;
 	mtx_unlock(&irq_map_lock);
 }
 


More information about the svn-src-all mailing list