summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2006-08-25 09:33:56 +0000
committersos <sos@FreeBSD.org>2006-08-25 09:33:56 +0000
commit632c97e1f133406690c6702231aac820385035d5 (patch)
tree7b4f2bb8f780141fbf11a80991530cacd7ad833e /sys/dev/ata
parent12a681a764edc4fe946f89bf4a3a96e46fb90040 (diff)
downloadFreeBSD-src-632c97e1f133406690c6702231aac820385035d5.zip
FreeBSD-src-632c97e1f133406690c6702231aac820385035d5.tar.gz
Properly initialize and destroy the RAID lock.
Also dont mess with RAID's thats not attached yet and avoid panic.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/ata-raid.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-raid.c b/sys/dev/ata/ata-raid.c
index f659f37..78afd7b 100644
--- a/sys/dev/ata/ata-raid.c
+++ b/sys/dev/ata/ata-raid.c
@@ -4087,7 +4087,8 @@ ata_raid_subdisk_detach(device_t dev)
ars->raid[volume]->disks[ars->disk_number[volume]].flags &=
~(AR_DF_PRESENT | AR_DF_ONLINE);
ars->raid[volume]->disks[ars->disk_number[volume]].dev = NULL;
- ata_raid_config_changed(ars->raid[volume], 1);
+ if (mtx_initialized(&ars->raid[volume]->lock))
+ ata_raid_config_changed(ars->raid[volume], 1);
ars->raid[volume] = NULL;
ars->disk_number[volume] = -1;
}
@@ -4149,6 +4150,8 @@ ata_raid_module_event_handler(module_t mod, int what, void *arg)
if (!rdp || !rdp->status)
continue;
+ if (mtx_initialized(&rdp->lock))
+ mtx_destroy(&rdp->lock);
if (rdp->disk)
disk_destroy(rdp->disk);
}
OpenPOWER on IntegriCloud