Print this page
5780 Truncated coredumps
@@ -374,15 +374,32 @@
* case the path will remain an empty string.
*/
(void) vnodetopath(vroot, fvp, fdinfo.pr_path,
sizeof (fdinfo.pr_path), credp);
- error = VOP_GETATTR(fvp, &vattr, 0, credp, NULL);
- if (error != 0) {
+ if (VOP_GETATTR(fvp, &vattr, 0, credp, NULL) != 0) {
+ /*
+ * Try to write at least a subset of information
+ */
+ fdinfo.pr_major = 0;
+ fdinfo.pr_minor = 0;
+ fdinfo.pr_ino = 0;
+ fdinfo.pr_mode = 0;
+ fdinfo.pr_uid = -1;
+ fdinfo.pr_gid = -1;
+ fdinfo.pr_rmajor = 0;
+ fdinfo.pr_rminor = 0;
+ fdinfo.pr_size = -1;
+
+ error = elfnote(vp, &offset, NT_FDINFO,
+ sizeof (fdinfo), &fdinfo,
+ rlimit, credp);
VN_RELE(fvp);
VN_RELE(vroot);
+ if (error)
goto done;
+ continue;
}
if (fvp->v_type == VSOCK)
fdinfo.pr_fileflags |= sock_getfasync(fvp);