Changeset 77710 in vbox for trunk/src/VBox/Additions/linux/sharedfolders
- Timestamp:
- Mar 15, 2019 2:18:34 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 129353
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/linux/sharedfolders/regops.c
r77708 r77710 1116 1116 while (cbToCopy > 0) { 1117 1117 size_t cbThisCopy = iov_iter_single_seg_count(pSrcIter); 1118 if (cbThisCopy > cbToCopy) 1119 cbThisCopy = cbToCopy; 1120 if (pSrcIter->type & ITER_KVEC) 1121 memcpy(pbDst, (void *)pSrcIter->iov->iov_base + pSrcIter->iov_offset, cbThisCopy); 1122 else if (!copy_from_user(pbDst, pSrcIter->iov->iov_base + pSrcIter->iov_offset, cbThisCopy)) 1123 break; 1124 pbDst += cbThisCopy; 1125 cbToCopy -= cbThisCopy; 1118 if (cbThisCopy > 0) { 1119 if (cbThisCopy > cbToCopy) 1120 cbThisCopy = cbToCopy; 1121 if (pSrcIter->type & ITER_KVEC) 1122 memcpy(pbDst, (void *)pSrcIter->iov->iov_base + pSrcIter->iov_offset, cbThisCopy); 1123 else if (!copy_from_user(pbDst, pSrcIter->iov->iov_base + pSrcIter->iov_offset, cbThisCopy)) 1124 break; 1125 pbDst += cbThisCopy; 1126 cbToCopy -= cbThisCopy; 1127 } 1126 1128 iov_iter_advance(pSrcIter, cbThisCopy); 1127 1129 } … … 1149 1151 while (cbToCopy > 0) { 1150 1152 size_t cbThisCopy = iov_iter_single_seg_count(pDstIter); 1151 if (cbThisCopy > cbToCopy) 1152 cbThisCopy = cbToCopy; 1153 if (pDstIter->type & ITER_KVEC) 1154 memcpy((void *)pDstIter->iov->iov_base + pDstIter->iov_offset, pbSrc, cbThisCopy); 1155 else if (!copy_to_user(pDstIter->iov->iov_base + pDstIter->iov_offset, pbSrc, cbThisCopy)) 1156 break; 1157 pbSrc += cbThisCopy; 1158 cbToCopy -= cbThisCopy; 1153 if (cbThisCopy > 0) { 1154 if (cbThisCopy > cbToCopy) 1155 cbThisCopy = cbToCopy; 1156 if (pDstIter->type & ITER_KVEC) 1157 memcpy((void *)pDstIter->iov->iov_base + pDstIter->iov_offset, pbSrc, cbThisCopy); 1158 else if (!copy_to_user(pDstIter->iov->iov_base + pDstIter->iov_offset, pbSrc, cbThisCopy)) { 1159 break; 1160 } 1161 pbSrc += cbThisCopy; 1162 cbToCopy -= cbThisCopy; 1163 } 1159 1164 iov_iter_advance(pDstIter, cbThisCopy); 1160 1165 } … … 1251 1256 ssize_t cbSegRet; 1252 1257 if (cPages == 0) { 1258 # if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) 1259 while (!iov_iter_single_seg_count(iter)) /* Old code didn't skip empty segments which caused EFAULTs. */ 1260 iov_iter_advance(iter, 0); 1261 # endif 1253 1262 cbSegRet = iov_iter_get_pages(iter, papPages, iov_iter_count(iter), cMaxPages, &offPage0); 1254 1263 if (cbSegRet > 0) {
Note:
See TracChangeset
for help on using the changeset viewer.