376 (void) vnodetopath(vroot, fvp, fdinfo.pr_path,
377 sizeof (fdinfo.pr_path), credp);
378
379 if (VOP_GETATTR(fvp, &vattr, 0, credp, NULL) != 0) {
380 /*
381 * Try to write at least a subset of information
382 */
383 fdinfo.pr_major = 0;
384 fdinfo.pr_minor = 0;
385 fdinfo.pr_ino = 0;
386 fdinfo.pr_mode = 0;
387 fdinfo.pr_uid = (uid_t)-1;
388 fdinfo.pr_gid = (gid_t)-1;
389 fdinfo.pr_rmajor = 0;
390 fdinfo.pr_rminor = 0;
391 fdinfo.pr_size = -1;
392
393 error = elfnote(vp, &offset, NT_FDINFO,
394 sizeof (fdinfo), &fdinfo, rlimit, credp);
395 VN_RELE(fvp);
396 VN_RELE(vroot);
397 if (error)
398 goto done;
399 continue;
400 }
401
402 if (fvp->v_type == VSOCK)
403 fdinfo.pr_fileflags |= sock_getfasync(fvp);
404
405 VN_RELE(fvp);
406
407 /*
408 * This logic mirrors fstat(), which we cannot use
409 * directly, as it calls copyout().
410 */
411 fdinfo.pr_major = getmajor(vattr.va_fsid);
412 fdinfo.pr_minor = getminor(vattr.va_fsid);
413 fdinfo.pr_ino = (ino64_t)vattr.va_nodeid;
414 fdinfo.pr_mode = VTTOIF(vattr.va_type) | vattr.va_mode;
415 fdinfo.pr_uid = vattr.va_uid;
416 fdinfo.pr_gid = vattr.va_gid;
417 fdinfo.pr_rmajor = getmajor(vattr.va_rdev);
418 fdinfo.pr_rminor = getminor(vattr.va_rdev);
|
376 (void) vnodetopath(vroot, fvp, fdinfo.pr_path,
377 sizeof (fdinfo.pr_path), credp);
378
379 if (VOP_GETATTR(fvp, &vattr, 0, credp, NULL) != 0) {
380 /*
381 * Try to write at least a subset of information
382 */
383 fdinfo.pr_major = 0;
384 fdinfo.pr_minor = 0;
385 fdinfo.pr_ino = 0;
386 fdinfo.pr_mode = 0;
387 fdinfo.pr_uid = (uid_t)-1;
388 fdinfo.pr_gid = (gid_t)-1;
389 fdinfo.pr_rmajor = 0;
390 fdinfo.pr_rminor = 0;
391 fdinfo.pr_size = -1;
392
393 error = elfnote(vp, &offset, NT_FDINFO,
394 sizeof (fdinfo), &fdinfo, rlimit, credp);
395 VN_RELE(fvp);
396 if (error) {
397 VN_RELE(vroot);
398 goto done;
399 }
400 continue;
401 }
402
403 if (fvp->v_type == VSOCK)
404 fdinfo.pr_fileflags |= sock_getfasync(fvp);
405
406 VN_RELE(fvp);
407
408 /*
409 * This logic mirrors fstat(), which we cannot use
410 * directly, as it calls copyout().
411 */
412 fdinfo.pr_major = getmajor(vattr.va_fsid);
413 fdinfo.pr_minor = getminor(vattr.va_fsid);
414 fdinfo.pr_ino = (ino64_t)vattr.va_nodeid;
415 fdinfo.pr_mode = VTTOIF(vattr.va_type) | vattr.va_mode;
416 fdinfo.pr_uid = vattr.va_uid;
417 fdinfo.pr_gid = vattr.va_gid;
418 fdinfo.pr_rmajor = getmajor(vattr.va_rdev);
419 fdinfo.pr_rminor = getminor(vattr.va_rdev);
|