Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Oct 2012 15:36:24 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r241948 - stable/9/sys/cam
Message-ID:  <201210231536.q9NFaOqO099667@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Tue Oct 23 15:36:23 2012
New Revision: 241948
URL: http://svn.freebsd.org/changeset/base/241948

Log:
  MFC r241510:
  Don't exclude XPT SIM from locking in xpt_create_path_unlocked().
  We don't want xpt periph, device, target or bus disappeared because of
  incorrect reference counting.

Modified:
  stable/9/sys/cam/cam_xpt.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/cam/cam_xpt.c
==============================================================================
--- stable/9/sys/cam/cam_xpt.c	Tue Oct 23 15:34:51 2012	(r241947)
+++ stable/9/sys/cam/cam_xpt.c	Tue Oct 23 15:36:23 2012	(r241948)
@@ -3433,19 +3433,14 @@ xpt_create_path_unlocked(struct cam_path
 	struct	   cam_path *path;
 	struct	   cam_eb *bus = NULL;
 	cam_status status;
-	int	   need_unlock = 0;
 
 	path = (struct cam_path *)malloc(sizeof(*path), M_CAMPATH, M_WAITOK);
 
-	if (path_id != CAM_BUS_WILDCARD) {
-		bus = xpt_find_bus(path_id);
-		if (bus != NULL) {
-			need_unlock = 1;
-			CAM_SIM_LOCK(bus->sim);
-		}
-	}
+	bus = xpt_find_bus(path_id);
+	if (bus != NULL)
+		CAM_SIM_LOCK(bus->sim);
 	status = xpt_compile_path(path, periph, path_id, target_id, lun_id);
-	if (need_unlock) {
+	if (bus != NULL) {
 		CAM_SIM_UNLOCK(bus->sim);
 		xpt_release_bus(bus);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210231536.q9NFaOqO099667>