Add the same KASSERT to all VOP_STRATEGY and VOP_SPECSTRATEGY implementations
to check that the buffer points to the correct vnode.
This commit is contained in:
parent
76dbe2e720
commit
cefb5754dd
@ -718,6 +718,8 @@ cd9660_strategy(ap)
|
||||
struct vnode *vp = bp->b_vp;
|
||||
struct iso_node *ip;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
ip = VTOI(vp);
|
||||
if (vp->v_type == VBLK || vp->v_type == VCHR)
|
||||
panic("cd9660_strategy: spec");
|
||||
|
@ -651,6 +651,8 @@ hpfs_strategy(ap)
|
||||
daddr_t blkno;
|
||||
int error;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
dprintf(("hpfs_strategy(): \n"));
|
||||
|
||||
if (vp->v_type == VBLK || vp->v_type == VCHR)
|
||||
|
@ -1749,6 +1749,8 @@ msdosfs_strategy(ap)
|
||||
int error = 0;
|
||||
daddr_t blkno;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
if (bp->b_vp->v_type == VBLK || bp->b_vp->v_type == VCHR)
|
||||
panic("msdosfs_strategy: spec");
|
||||
/*
|
||||
|
@ -282,6 +282,8 @@ ntfs_strategy(ap)
|
||||
struct ntfsmount *ntmp = ip->i_mp;
|
||||
int error;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
dprintf(("ntfs_strategy: offset: %d, blkno: %d, lblkno: %d\n",
|
||||
(u_int32_t)bp->b_offset,(u_int32_t)bp->b_blkno,
|
||||
(u_int32_t)bp->b_lblkno));
|
||||
|
@ -796,6 +796,8 @@ static int nwfs_strategy (ap)
|
||||
struct thread *td;
|
||||
int error = 0;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
NCPVNDEBUG("\n");
|
||||
if (bp->b_flags & B_PHYS)
|
||||
panic("nwfs physio");
|
||||
|
@ -886,6 +886,8 @@ smbfs_strategy (ap)
|
||||
struct thread *td;
|
||||
int error = 0;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
SMBVDEBUG("\n");
|
||||
if (bp->b_flags & B_PHYS)
|
||||
panic("smbfs physio");
|
||||
|
@ -531,6 +531,8 @@ spec_strategy(ap)
|
||||
{
|
||||
static int once;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
if (!once) {
|
||||
vprint("VOP_STRATEGY on VCHR", ap->a_vp);
|
||||
backtrace();
|
||||
@ -547,6 +549,8 @@ spec_specstrategy(ap)
|
||||
} */ *ap;
|
||||
{
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
return spec_xstrategy(ap->a_vp, ap->a_bp);
|
||||
}
|
||||
|
||||
|
@ -819,6 +819,8 @@ udf_strategy(struct vop_strategy_args *a)
|
||||
vp = bp->b_vp;
|
||||
node = VTON(vp);
|
||||
|
||||
KASSERT(a->a_vp == a->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, a->a_vp, a->a_bp->b_vp));
|
||||
/* cd9660 has this test reversed, but it seems more logical this way */
|
||||
if (bp->b_blkno != bp->b_lblkno) {
|
||||
/*
|
||||
|
@ -1830,6 +1830,8 @@ union_strategy(ap)
|
||||
struct buf *bp = ap->a_bp;
|
||||
struct vnode *othervp = OTHERVP(bp->b_vp);
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
#ifdef DIAGNOSTIC
|
||||
if (othervp == NULLVP)
|
||||
panic("union_strategy: nil vp");
|
||||
|
@ -1461,6 +1461,8 @@ ext2_strategy(ap)
|
||||
int32_t blkno;
|
||||
int error;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
ip = VTOI(vp);
|
||||
if (vp->v_type == VBLK || vp->v_type == VCHR)
|
||||
panic("ext2_strategy: spec");
|
||||
|
@ -1461,6 +1461,8 @@ ext2_strategy(ap)
|
||||
int32_t blkno;
|
||||
int error;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
ip = VTOI(vp);
|
||||
if (vp->v_type == VBLK || vp->v_type == VCHR)
|
||||
panic("ext2_strategy: spec");
|
||||
|
@ -718,6 +718,8 @@ cd9660_strategy(ap)
|
||||
struct vnode *vp = bp->b_vp;
|
||||
struct iso_node *ip;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
ip = VTOI(vp);
|
||||
if (vp->v_type == VBLK || vp->v_type == VCHR)
|
||||
panic("cd9660_strategy: spec");
|
||||
|
@ -2552,6 +2552,8 @@ nfs_strategy(struct vop_strategy_args *ap)
|
||||
struct thread *td;
|
||||
int error = 0;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
KASSERT(!(bp->b_flags & B_DONE), ("nfs_strategy: buffer %p unexpectedly marked B_DONE", bp));
|
||||
KASSERT(BUF_REFCNT(bp) > 0, ("nfs_strategy: buffer %p not locked", bp));
|
||||
|
||||
|
@ -1384,6 +1384,8 @@ struct vop_strategy_args {
|
||||
struct vnode *vp;
|
||||
daddr_t lbn;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
vp = ap->a_vp;
|
||||
lbn = ap->a_bp->b_lblkno;
|
||||
if (VTOI(vp)->i_fs->fs_magic == FS_UFS2_MAGIC &&
|
||||
|
@ -1949,6 +1949,8 @@ ufs_strategy(ap)
|
||||
ufs2_daddr_t blkno;
|
||||
int error;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
ip = VTOI(vp);
|
||||
if (bp->b_blkno == bp->b_lblkno) {
|
||||
error = ufs_bmaparray(vp, bp->b_lblkno, &blkno, bp, NULL, NULL);
|
||||
|
@ -105,6 +105,8 @@ swapdev_strategy(ap)
|
||||
struct vnode *vp;
|
||||
struct buf *bp;
|
||||
|
||||
KASSERT(ap->a_vp == ap->a_bp->b_vp, ("%s(%p != %p)",
|
||||
__func__, ap->a_vp, ap->a_bp->b_vp));
|
||||
bp = ap->a_bp;
|
||||
sz = howmany(bp->b_bcount, PAGE_SIZE);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user