git: DragonFly_RELEASE_2_4 CAM - Fix missing SIM lock in cam_periph_release()
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Sep 30 15:33:47 PDT 2009
commit 851c57bb2d6b6b44dd70627c4ea8a798d32d80f3
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Sep 30 15:26:05 2009 -0700
CAM - Fix missing SIM lock in cam_periph_release()
* When releasing the last reference on a CAM peripheral which has been
marked invalid, the peripheral is then freed. Freeing the peripheral
requires the SIM lock.
Go through necessary tribulations to acquire the SIM lock. The lock order
is important (SIM lock first, XPT lock second), and the SIM lock may or
may not already be held by the thread.
* The bug could cause a crash after burning a CD as the CD becomes invalid
after the burn completes in order to reload its state.
Summary of changes:
sys/bus/cam/cam_periph.c | 52 ++++++++++++++++++++++++++++++++++++++--------
sys/bus/cam/cam_sim.c | 24 +++++++++++++++++++++
sys/bus/cam/cam_sim.h | 8 +++++-
3 files changed, 73 insertions(+), 11 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/851c57bb2d6b6b44dd70627c4ea8a798d32d80f3
--
DragonFly BSD source repository
More information about the Commits
mailing list