SCCS-vsn: sys/ufs/ffs/ffs_vfsops.c 8.14
register struct ufsmount *ump;
struct buf *bp;
register struct fs *fs;
register struct ufsmount *ump;
struct buf *bp;
register struct fs *fs;
- dev_t dev = devvp->v_rdev;
struct partinfo dpart;
int havepart = 0, blks;
caddr_t base, space;
int havepart = 0, blks;
int error, i, size, ronly;
int32_t *lp;
struct partinfo dpart;
int havepart = 0, blks;
caddr_t base, space;
int havepart = 0, blks;
int error, i, size, ronly;
int32_t *lp;
extern struct vnode *rootvp;
extern struct vnode *rootvp;
+ dev = devvp->v_rdev;
+ cred = p ? p->p_ucred : NOCRED;
if (error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p))
return (error);
if (error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, p))
return (error);
- if (VOP_IOCTL(devvp, DIOCGPART, (caddr_t)&dpart, FREAD, NOCRED, p) != 0)
+ if (VOP_IOCTL(devvp, DIOCGPART, (caddr_t)&dpart, FREAD, cred, p) != 0)
size = DEV_BSIZE;
else {
havepart = 1;
size = DEV_BSIZE;
else {
havepart = 1;
- if (error = bread(devvp, SBLOCK, SBSIZE, NOCRED, &bp))
+ if (error = bread(devvp, SBLOCK, SBSIZE, cred, &bp))
goto out;
fs = (struct fs *)bp->b_data;
error = EINVAL; /* XXX needs translation */
goto out;
fs = (struct fs *)bp->b_data;
error = EINVAL; /* XXX needs translation */
tp = bread(dev, fsbtodb(fs, fs->fs_csaddr + i), size,
fs->fs_dbsize);
#else SECSIZE
tp = bread(dev, fsbtodb(fs, fs->fs_csaddr + i), size,
fs->fs_dbsize);
#else SECSIZE
- error = bread(devvp, fsbtodb(fs, fs->fs_csaddr + i), size,
- NOCRED, &bp);
- if (error) {
+ if (error = bread(devvp, fsbtodb(fs, fs->fs_csaddr + i), size,
+ cred, &bp)) {
free(base, M_UFSMNT);
goto out;
}
free(base, M_UFSMNT);
goto out;
}
- (void)VOP_CLOSE(devvp, ronly ? FREAD : FREAD|FWRITE, NOCRED, p);
+ (void)VOP_CLOSE(devvp, ronly ? FREAD : FREAD|FWRITE, cred, p);
if (ump) {
free(ump->um_fs, M_UFSMNT);
free(ump, M_UFSMNT);
if (ump) {
free(ump->um_fs, M_UFSMNT);
free(ump, M_UFSMNT);