Print this page
5780 Truncated coredumps
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>


 359                 fdinfo.pr_fileflags <<= 16;
 360                 fdinfo.pr_fileflags |= fp->f_flag;
 361                 if ((fdinfo.pr_fileflags & (FSEARCH | FEXEC)) == 0)
 362                         fdinfo.pr_fileflags += FOPEN;
 363                 fdinfo.pr_offset = fp->f_offset;
 364 
 365 
 366                 fvp = fp->f_vnode;
 367                 VN_HOLD(fvp);
 368                 UF_EXIT(ufp);
 369                 mutex_exit(&fip->fi_lock);
 370 
 371                 /*
 372                  * There are some vnodes that have no corresponding
 373                  * path.  Its reasonable for this to fail, in which
 374                  * case the path will remain an empty string.
 375                  */
 376                 (void) vnodetopath(vroot, fvp, fdinfo.pr_path,
 377                     sizeof (fdinfo.pr_path), credp);
 378 
 379                 error = VOP_GETATTR(fvp, &vattr, 0, credp, NULL);
 380                 if (error != 0) {
 381                         VN_RELE(fvp);
 382                         VN_RELE(vroot);
 383                         goto done;
 384                 }
 385 
 386                 if (fvp->v_type == VSOCK)
 387                         fdinfo.pr_fileflags |= sock_getfasync(fvp);
 388 
 389                 VN_RELE(fvp);
 390 
 391                 /*
 392                  * This logic mirrors fstat(), which we cannot use
 393                  * directly, as it calls copyout().
 394                  */
 395                 fdinfo.pr_major = getmajor(vattr.va_fsid);
 396                 fdinfo.pr_minor = getminor(vattr.va_fsid);
 397                 fdinfo.pr_ino = (ino64_t)vattr.va_nodeid;
 398                 fdinfo.pr_mode = VTTOIF(vattr.va_type) | vattr.va_mode;
 399                 fdinfo.pr_uid = vattr.va_uid;
 400                 fdinfo.pr_gid = vattr.va_gid;
 401                 fdinfo.pr_rmajor = getmajor(vattr.va_rdev);
 402                 fdinfo.pr_rminor = getminor(vattr.va_rdev);
 403                 fdinfo.pr_size = (off64_t)vattr.va_size;




 359                 fdinfo.pr_fileflags <<= 16;
 360                 fdinfo.pr_fileflags |= fp->f_flag;
 361                 if ((fdinfo.pr_fileflags & (FSEARCH | FEXEC)) == 0)
 362                         fdinfo.pr_fileflags += FOPEN;
 363                 fdinfo.pr_offset = fp->f_offset;
 364 
 365 
 366                 fvp = fp->f_vnode;
 367                 VN_HOLD(fvp);
 368                 UF_EXIT(ufp);
 369                 mutex_exit(&fip->fi_lock);
 370 
 371                 /*
 372                  * There are some vnodes that have no corresponding
 373                  * path.  Its reasonable for this to fail, in which
 374                  * case the path will remain an empty string.
 375                  */
 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                         VN_RELE(fvp);
 381                         VN_RELE(vroot);
 382                         continue;
 383                 }
 384 
 385                 if (fvp->v_type == VSOCK)
 386                         fdinfo.pr_fileflags |= sock_getfasync(fvp);
 387 
 388                 VN_RELE(fvp);
 389 
 390                 /*
 391                  * This logic mirrors fstat(), which we cannot use
 392                  * directly, as it calls copyout().
 393                  */
 394                 fdinfo.pr_major = getmajor(vattr.va_fsid);
 395                 fdinfo.pr_minor = getminor(vattr.va_fsid);
 396                 fdinfo.pr_ino = (ino64_t)vattr.va_nodeid;
 397                 fdinfo.pr_mode = VTTOIF(vattr.va_type) | vattr.va_mode;
 398                 fdinfo.pr_uid = vattr.va_uid;
 399                 fdinfo.pr_gid = vattr.va_gid;
 400                 fdinfo.pr_rmajor = getmajor(vattr.va_rdev);
 401                 fdinfo.pr_rminor = getminor(vattr.va_rdev);
 402                 fdinfo.pr_size = (off64_t)vattr.va_size;