DragonFlyBSD Kernel Audit
DF-1070 / verify.log
← back to finding ↓ download raw
=== (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.