diff options
author | pr14459 <none@none> | 2007-06-19 21:05:50 -0700 |
---|---|---|
committer | pr14459 <none@none> | 2007-06-19 21:05:50 -0700 |
commit | bfb244bafad217a1871c5c203fc94f71751eb28c (patch) | |
tree | b4c9e5eb7fd325e50b213f313a4b1587b475ac1c /usr/src/uts/common/syscall/sendfile.c | |
parent | 239e91abc172c1397b1e94869c5d0e8ab67bfc22 (diff) | |
download | illumos-gate-bfb244bafad217a1871c5c203fc94f71751eb28c.tar.gz |
6563145 assertion failed: pp->p_vnode == vp, file: ../../common/vm/seg_map.c, line: 727
Diffstat (limited to 'usr/src/uts/common/syscall/sendfile.c')
-rw-r--r-- | usr/src/uts/common/syscall/sendfile.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/usr/src/uts/common/syscall/sendfile.c b/usr/src/uts/common/syscall/sendfile.c index 84a3b5cfc6..c9c14df59a 100644 --- a/usr/src/uts/common/syscall/sendfile.c +++ b/usr/src/uts/common/syscall/sendfile.c @@ -289,7 +289,7 @@ sendvec_chunk64(file_t *fp, u_offset_t *fileoff, struct ksendfilevec64 *sfv, * locked; but since we got it from an open file the * contents will be valid during the time of access. */ - if (VN_CMP(vp, readvp)) { + if (vn_compare(vp, readvp)) { releasef(sfv->sfv_fd); return (EINVAL); } @@ -637,7 +637,7 @@ sendvec_small_chunk(file_t *fp, u_offset_t *fileoff, struct sendfilevec *sfv, * contents will be valid during the time of access. */ - if (VN_CMP(vp, readvp)) { + if (vn_compare(vp, readvp)) { releasef(sfv->sfv_fd); freemsg(head); return (EINVAL); @@ -903,6 +903,7 @@ sendvec_chunk(file_t *fp, u_offset_t *fileoff, struct sendfilevec *sfv, int segmapit = 0; file_t *ffp; vnode_t *readvp; + struct vnode *realvp; size_t size; caddr_t ptr; @@ -915,6 +916,8 @@ sendvec_chunk(file_t *fp, u_offset_t *fileoff, struct sendfilevec *sfv, } readvp = ffp->f_vnode; + if (VOP_REALVP(readvp, &realvp) == 0) + readvp = realvp; if (readvp->v_type != VREG) { releasef(sfv->sfv_fd); return (EINVAL); @@ -926,7 +929,7 @@ sendvec_chunk(file_t *fp, u_offset_t *fileoff, struct sendfilevec *sfv, * locked; but since we got it from an open file the * contents will be valid during the time of access. */ - if (VN_CMP(vp, readvp)) { + if (vn_compare(vp, readvp)) { releasef(sfv->sfv_fd); return (EINVAL); } |