- vslock(uap->where, copysize);
- error = (*server)(uap->op, uap->where, ©size, uap->arg, &needed);
- vsunlock(uap->where, locked, B_WRITE);
- if (error)
- goto release;
- error = copyout((caddr_t)©size,
- (caddr_t)uap->size, sizeof (copysize));
-
+ if (server != kinfo_vnode) /* XXX */
+ vslock(uap->where, bufsize);
+ locked = bufsize;
+ error = (*server)(uap->op, uap->where, &bufsize, uap->arg, &needed);
+ if (server != kinfo_vnode) /* XXX */
+ vsunlock(uap->where, locked, B_WRITE);
+ if (error == 0)
+ error = copyout((caddr_t)&bufsize,
+ (caddr_t)uap->size, sizeof (bufsize));