Loading fs/ocfs2/file.c +1 −31 Original line number Diff line number Diff line Loading @@ -1419,36 +1419,6 @@ static ssize_t ocfs2_file_buffered_write(struct file *file, loff_t *ppos, return total ? total : ret; } static int ocfs2_check_iovec(const struct iovec *iov, size_t *counted, unsigned long *nr_segs) { size_t ocount; /* original count */ unsigned long seg; ocount = 0; for (seg = 0; seg < *nr_segs; seg++) { const struct iovec *iv = &iov[seg]; /* * If any segment has a negative length, or the cumulative * length ever wraps negative then return -EINVAL. */ ocount += iv->iov_len; if (unlikely((ssize_t)(ocount|iv->iov_len) < 0)) return -EINVAL; if (access_ok(VERIFY_READ, iv->iov_base, iv->iov_len)) continue; if (seg == 0) return -EFAULT; *nr_segs = seg; ocount -= iv->iov_len; /* This segment is no good */ break; } *counted = ocount; return 0; } static ssize_t ocfs2_file_aio_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, Loading @@ -1471,7 +1441,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb, if (iocb->ki_left == 0) return 0; ret = ocfs2_check_iovec(iov, &ocount, &nr_segs); ret = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); if (ret) return ret; Loading Loading
fs/ocfs2/file.c +1 −31 Original line number Diff line number Diff line Loading @@ -1419,36 +1419,6 @@ static ssize_t ocfs2_file_buffered_write(struct file *file, loff_t *ppos, return total ? total : ret; } static int ocfs2_check_iovec(const struct iovec *iov, size_t *counted, unsigned long *nr_segs) { size_t ocount; /* original count */ unsigned long seg; ocount = 0; for (seg = 0; seg < *nr_segs; seg++) { const struct iovec *iv = &iov[seg]; /* * If any segment has a negative length, or the cumulative * length ever wraps negative then return -EINVAL. */ ocount += iv->iov_len; if (unlikely((ssize_t)(ocount|iv->iov_len) < 0)) return -EINVAL; if (access_ok(VERIFY_READ, iv->iov_base, iv->iov_len)) continue; if (seg == 0) return -EFAULT; *nr_segs = seg; ocount -= iv->iov_len; /* This segment is no good */ break; } *counted = ocount; return 0; } static ssize_t ocfs2_file_aio_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, Loading @@ -1471,7 +1441,7 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb, if (iocb->ki_left == 0) return 0; ret = ocfs2_check_iovec(iov, &ocount, &nr_segs); ret = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); if (ret) return ret; Loading