Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull iov_iter fix from Al Viro:
"Fix for a nfsd regression caused by the iov_iter stuff this window"

* tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
nfsd_splice_actor(): handle compound pages

+7 -3
+7 -3
fs/nfsd/vfs.c
··· 845 845 struct splice_desc *sd) 846 846 { 847 847 struct svc_rqst *rqstp = sd->u.data; 848 + struct page *page = buf->page; // may be a compound one 849 + unsigned offset = buf->offset; 848 850 849 - svc_rqst_replace_page(rqstp, buf->page); 850 - if (rqstp->rq_res.page_len == 0) 851 - rqstp->rq_res.page_base = buf->offset; 851 + page += offset / PAGE_SIZE; 852 + for (int i = sd->len; i > 0; i -= PAGE_SIZE) 853 + svc_rqst_replace_page(rqstp, page++); 854 + if (rqstp->rq_res.page_len == 0) // first call 855 + rqstp->rq_res.page_base = offset % PAGE_SIZE; 852 856 rqstp->rq_res.page_len += sd->len; 853 857 return sd->len; 854 858 }