DF-2515 / fix.diff
--- /home/maxx/dfbsd/dfbsd/sys/dev/disk/sbp/sbp.c 2026-06-29 12:51:18.000000000 +0000 +++ sys/dev/disk/sbp/sbp.c 2026-10-24 09:11:52.098751509 +0000 @@ -2334,7 +2334,14 @@ cdb = (void *)csio->cdb_io.cdb_ptr; else cdb = (void *)&csio->cdb_io.cdb_bytes; - bcopy(cdb, (void *)&ocb->orb[5], csio->cdb_len); + { + int cdb_len = csio->cdb_len; + if (cdb_len > 12) { + kprintf("sbp: CDB too long for ORB, clamped\n"); + cdb_len = 12; /* orb[5..7] only */ + } + bcopy(cdb, (void *)&ocb->orb[5], cdb_len); + } /* kprintf("ORB %08x %08x %08x %08x\n", ntohl(ocb->orb[0]), ntohl(ocb->orb[1]), ntohl(ocb->orb[2]), ntohl(ocb->orb[3])); kprintf("ORB %08x %08x %08x %08x\n", ntohl(ocb->orb[4]), ntohl(ocb->orb[5]), ntohl(ocb->orb[6]), ntohl(ocb->orb[7])); |