DF-1070 / verify.log
=== (1) the fixed hz/2 sleep + immediate kfree ===
420: sim_lock_sleep(softc, 0, "targbh", hz/2, periph->sim->lock);
421: kfree(softc, M_SCSIBH);
=== (2) NO wakeup(softc) anywhere in the file (only wakeup on other addrs) ===
all wakeup() calls:
444: wakeup(&periph->ccb_list);
526: wakeup(&done_ccb->ccb_h.cbfcnp);
the XXX comments marking the unfinished sync:
342: /* XXX Block for Continue I/O completion */
419: /* XXX Wait for callback of targbhdislun() */
=== (3) targbhdislun aborts ATIOs and IMMED_NOTIFY but NOT CTIOs ===
19: while ((atio = softc->accept_tio_list) != NULL) {
20: softc->accept_tio_list =
23: ccb->cab.ccb_h.func_code = XPT_ABORT;
28: while ((ccb_h = SLIST_FIRST(&softc->immed_notify_slist)) != NULL) {
29: SLIST_REMOVE_HEAD(&softc->immed_notify_slist, periph_links.sle);
31: ccb->cab.ccb_h.func_code = XPT_ABORT;
=== (4) targbhdone dereferences periph->softc unconditionally ===
237: softc = (struct targbh_softc *)periph->softc;
338: softc = (struct targbh_softc *)periph->softc;
407: softc = (struct targbh_softc *)periph->softc;
436: softc = (struct targbh_softc *)periph->softc;
522: softc = (struct targbh_softc *)periph->softc;
=== (5) scsi_targ_bh is optional targbh (NOT in default GENERIC) ===
46:bus/cam/scsi/scsi_targ_bh.c optional targbh
in X86_64_GENERIC (expect none):
(not configured)
in running kernel (expect none):
DONE: all five static checks executed.