Module Name:    src
Committed By:   mlelstv
Date:           Mon Nov 21 21:03:22 UTC 2016

Modified Files:
        src/sys/dev/scsipi: scsipi_base.c

Log Message:
Lock is already taken when handling async events, don't lock again
in scsipi_lookup_periph.

Fixes PR kern/51641.


To generate a diff of this commit:
cvs rdiff -u -r1.167 -r1.168 src/sys/dev/scsipi/scsipi_base.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/dev/scsipi/scsipi_base.c
diff -u src/sys/dev/scsipi/scsipi_base.c:1.167 src/sys/dev/scsipi/scsipi_base.c:1.168
--- src/sys/dev/scsipi/scsipi_base.c:1.167	Sun Nov 20 15:37:19 2016
+++ src/sys/dev/scsipi/scsipi_base.c	Mon Nov 21 21:03:22 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: scsipi_base.c,v 1.167 2016/11/20 15:37:19 mlelstv Exp $	*/
+/*	$NetBSD: scsipi_base.c,v 1.168 2016/11/21 21:03:22 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2002, 2003, 2004 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: scsipi_base.c,v 1.167 2016/11/20 15:37:19 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: scsipi_base.c,v 1.168 2016/11/21 21:03:22 mlelstv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_scsi.h"
@@ -2277,7 +2277,7 @@ scsipi_async_event_max_openings(struct s
 
 	/* XXX This could really suck with a large LUN space. */
 	for (; minlun <= maxlun; minlun++) {
-		periph = scsipi_lookup_periph(chan, mo->mo_target, minlun);
+		periph = scsipi_lookup_periph_locked(chan, mo->mo_target, minlun);
 		if (periph == NULL)
 			continue;
 
@@ -2373,7 +2373,7 @@ scsipi_async_event_channel_reset(struct 
 		if (target == chan->chan_id)
 			continue;
 		for (lun = 0; lun <  chan->chan_nluns; lun++) {
-			periph = scsipi_lookup_periph(chan, target, lun);
+			periph = scsipi_lookup_periph_locked(chan, target, lun);
 			if (periph) {
 				xs = periph->periph_xscheck;
 				if (xs)

Reply via email to