summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-09-22 10:46:06 +0000
committermav <mav@FreeBSD.org>2014-09-22 10:46:06 +0000
commit9e711a15d73e7f9e8992f45e4b5969b413680623 (patch)
treec43911231caef7302d71c0531a319bc6aca3e893
parent2b799f4318e1953e1a387fecfa820d5b253dc6ec (diff)
downloadFreeBSD-src-9e711a15d73e7f9e8992f45e4b5969b413680623.zip
FreeBSD-src-9e711a15d73e7f9e8992f45e4b5969b413680623.tar.gz
Deny ANCHOR flag set without UNMAP flag set in WRITE SAME commands.
-rw-r--r--sys/cam/ctl/ctl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c
index 37e0339..39c0dc1 100644
--- a/sys/cam/ctl/ctl.c
+++ b/sys/cam/ctl/ctl.c
@@ -5987,8 +5987,9 @@ ctl_write_same(struct ctl_scsiio *ctsio)
break; /* NOTREACHED */
}
- /* NDOB flag can be used only together with UNMAP */
- if ((byte2 & (SWS_NDOB | SWS_UNMAP)) == SWS_NDOB) {
+ /* NDOB and ANCHOR flags can be used only together with UNMAP */
+ if ((byte2 & SWS_UNMAP) == 0 &&
+ (byte2 & (SWS_NDOB | SWS_ANCHOR)) != 0) {
ctl_set_invalid_field(ctsio, /*sks_valid*/ 1,
/*command*/ 1, /*field*/ 1, /*bit_valid*/ 1, /*bit*/ 0);
ctl_done((union ctl_io *)ctsio);
OpenPOWER on IntegriCloud