summaryrefslogtreecommitdiff
path: root/usr/src/uts/common
diff options
context:
space:
mode:
authorRay Hassan <Ray.Hassan@oracle.COM>2010-06-16 10:25:09 +0100
committerRay Hassan <Ray.Hassan@oracle.COM>2010-06-16 10:25:09 +0100
commite50ee8ef3546a2325eb1ef7768c1da5758ec16e9 (patch)
treea95e2192b328ba33022365c5c8893c55f2053345 /usr/src/uts/common
parent4e240297c2857fcb86445d5efc563627559bdbfd (diff)
downloadillumos-joyent-e50ee8ef3546a2325eb1ef7768c1da5758ec16e9.tar.gz
6914620 SVM can panic system when attempting to access a damaged one-sided mirror
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r--usr/src/uts/common/io/lvm/mirror/mirror.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr/src/uts/common/io/lvm/mirror/mirror.c b/usr/src/uts/common/io/lvm/mirror/mirror.c
index 02fca3cab1..121a8cf33c 100644
--- a/usr/src/uts/common/io/lvm/mirror/mirror.c
+++ b/usr/src/uts/common/io/lvm/mirror/mirror.c
@@ -20,8 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#include <sys/param.h>
@@ -356,9 +355,11 @@ mirror_geterror(mm_unit_t *un, int *smi, int *cip, int clr_error,
open_comp = (frm_probe) ?
(shared->ms_flags & MDM_S_PROBEOPEN):
(shared->ms_flags & MDM_S_ISOPEN);
- if ((shared->ms_flags & MDM_S_IOERR || !open_comp) &&
+ if (((shared->ms_flags & MDM_S_IOERR || !open_comp) &&
((shared->ms_state == CS_OKAY) ||
- (shared->ms_state == CS_RESYNC))) {
+ (shared->ms_state == CS_RESYNC))) ||
+ (!open_comp &&
+ (shared->ms_state == CS_LAST_ERRED))) {
if (clr_error) {
shared->ms_flags &= ~MDM_S_IOERR;
}