Subject: May be missing splx?
To: None <netbsd-bugs@NetBSD.ORG>
From: None <enami@sys.ptg.sony.co.jp>
List: netbsd-bugs
Date: 07/05/1995 12:12:09
[Sorry, I can't use send-pr yet].
I found the some place where the splx(s) may be missing, in
the current source tree (of Jun 24).
1. In the file sys/dev/isa/bt742a.c, it returns from bt_scsi_cmd
without calling splx(s) when bt_send_mbo returns NULL.
int
bt_scsi_cmd(xs)
struct scsi_xfer *xs;
{
:
s = splbio();
if (bt_send_mbo(bt, BT_MBO_START, ccb) == NULL) {
xs->error = XS_DRIVER_STUFFUP;
bt_free_ccb(bt, ccb, flags);
return TRY_AGAIN_LATER;
}
2. In the file sys/dev/isa/aha1542.c, ditto.
3. In the file sys/miscfs/specfs/spec_vnops.c, in the funciton spec_fsync,
if DIAGNOSTIC is defined, it jumps before s = splbio() without
calling splx(s).
int
spec_fsync(ap)
struct vop_fsync_args /* {
:
{
:
loop:
s = splbio();
:
#ifdef DIAGNOSTIC
if (vp->v_dirtyblkhd.lh_first) {
vprint("spec_fsync: dirty", vp);
goto loop;
}
#endif
enami.