Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2014 01:45:03 +0000 (UTC)
From:      Alexander Kabaev <kan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267660 - head/sys/dev/firewire
Message-ID:  <201406200145.s5K1j3TC083304@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kan
Date: Fri Jun 20 01:45:03 2014
New Revision: 267660
URL: http://svnweb.freebsd.org/changeset/base/267660

Log:
  Set target->sbp field to valid value when sbp device is created.
  
  The sbp_cam_detach_target can be called from sbp_post_explore function
  on the first target that is not really attached and it was written with
  the corresponding safety check in place to tolerate that. Unfortunately
  the recent locking cleanup did add a locking assertion that tries to
  dereference the target->sbp pointer unconditionally, which causes less
  than desirable outcome. Since the assertion is useful, just initialize
  the target sbp pointer once when sbp device is being initialized instead
  of when the target is being attached. This makes assertion work in all
  cases and fixes the crash on boot.

Modified:
  head/sys/dev/firewire/sbp.c

Modified: head/sys/dev/firewire/sbp.c
==============================================================================
--- head/sys/dev/firewire/sbp.c	Fri Jun 20 00:43:52 2014	(r267659)
+++ head/sys/dev/firewire/sbp.c	Fri Jun 20 01:45:03 2014	(r267660)
@@ -622,7 +622,6 @@ END_DEBUG
 	}
 	/* new target */
 	target = &sbp->targets[i];
-	target->sbp = sbp;
 	target->fwdev = fwdev;
 	target->target_id = i;
 	/* XXX we may want to reload mgm port after each bus reset */
@@ -1976,6 +1975,7 @@ END_DEBUG
 	for( i = 0 ; i < SBP_NUM_TARGETS ; i++){
 		sbp->targets[i].fwdev = NULL;
 		sbp->targets[i].luns = NULL;
+		sbp->targets[i].sbp = sbp;
 	}
 
 	sbp->sim = cam_sim_alloc(sbp_action, sbp_poll, "sbp", sbp,



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