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 branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs

Pull vfs fixes from Al Viro:
"A couple of fixes for sendfile lockups caught by Dmitry + a fix for
ancient sysvfs symlink breakage"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
vfs: Avoid softlockups with sendfile(2)
vfs: Make sendfile(2) killable even better
fix sysvfs symlinks

+10 -9
+8
fs/splice.c
··· 809 809 */ 810 810 static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_desc *sd) 811 811 { 812 + /* 813 + * Check for signal early to make process killable when there are 814 + * always buffers available 815 + */ 816 + if (signal_pending(current)) 817 + return -ERESTARTSYS; 818 + 812 819 while (!pipe->nrbufs) { 813 820 if (!pipe->writers) 814 821 return 0; ··· 891 884 892 885 splice_from_pipe_begin(sd); 893 886 do { 887 + cond_resched(); 894 888 ret = splice_from_pipe_next(pipe, sd); 895 889 if (ret > 0) 896 890 ret = splice_from_pipe_feed(pipe, sd, actor);
+2 -9
fs/sysv/inode.c
··· 162 162 inode->i_fop = &sysv_dir_operations; 163 163 inode->i_mapping->a_ops = &sysv_aops; 164 164 } else if (S_ISLNK(inode->i_mode)) { 165 - if (inode->i_blocks) { 166 - inode->i_op = &sysv_symlink_inode_operations; 167 - inode->i_mapping->a_ops = &sysv_aops; 168 - } else { 169 - inode->i_op = &simple_symlink_inode_operations; 170 - inode->i_link = (char *)SYSV_I(inode)->i_data; 171 - nd_terminate_link(inode->i_link, inode->i_size, 172 - sizeof(SYSV_I(inode)->i_data) - 1); 173 - } 165 + inode->i_op = &sysv_symlink_inode_operations; 166 + inode->i_mapping->a_ops = &sysv_aops; 174 167 } else 175 168 init_special_inode(inode, inode->i_mode, rdev); 176 169 }