diff options
author | 2010-06-26 04:04:24 +0000 | |
---|---|---|
committer | 2010-06-26 04:04:24 +0000 | |
commit | 7ad2cde65e812e1b49f22ef34f9fdabb50ee00d4 (patch) | |
tree | dfdb508aa8f1a20845372fb607d94dd700c41867 /sys/dev/ic/adw.c | |
parent | disable opencvs; maintainers went bye bye (diff) | |
download | wireguard-openbsd-7ad2cde65e812e1b49f22ef34f9fdabb50ee00d4.tar.xz wireguard-openbsd-7ad2cde65e812e1b49f22ef34f9fdabb50ee00d4.zip |
xs->cmd[n] doesn't mean the n'th byte, because xs->cmd is a struct
*scsi_generic. Change xs->cmd[0] references in sii.c to xs->cmd->opcode
and do (caddr_t) arithmetic when copying chunks into the adw adapter
struct.
Found by Matthew Dempsky, diff tweaked and tested by me.
Diffstat (limited to 'sys/dev/ic/adw.c')
-rw-r--r-- | sys/dev/ic/adw.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/ic/adw.c b/sys/dev/ic/adw.c index c8f9a4a1e52..d510df69c64 100644 --- a/sys/dev/ic/adw.c +++ b/sys/dev/ic/adw.c @@ -1,4 +1,4 @@ -/* $OpenBSD: adw.c,v 1.44 2010/05/20 00:55:17 krw Exp $ */ +/* $OpenBSD: adw.c,v 1.45 2010/06/26 04:04:24 krw Exp $ */ /* $NetBSD: adw.c,v 1.23 2000/05/27 18:24:50 dante Exp $ */ /* @@ -41,7 +41,6 @@ #include <sys/malloc.h> #include <sys/buf.h> #include <sys/proc.h> -#include <sys/user.h> #include <sys/timeout.h> #include <machine/bus.h> @@ -690,10 +689,9 @@ adw_build_req(xs, ccb, flags) * For wide boards a CDB length maximum of 16 bytes * is supported. */ - bcopy(xs->cmd, &scsiqp->cdb, ((scsiqp->cdb_len = xs->cmdlen) <= 12)? - xs->cmdlen : 12 ); - if(xs->cmdlen > 12) - bcopy(&(xs->cmd[12]), &scsiqp->cdb16, xs->cmdlen - 12); + scsiqp->cdb_len = xs->cmdlen; + bcopy((caddr_t)xs->cmd, &scsiqp->cdb, 12); + bcopy((caddr_t)xs->cmd + 12, &scsiqp->cdb16, 4); scsiqp->target_id = sc_link->target; scsiqp->target_lun = sc_link->lun; |