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/mszeredi/fuse

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
fuse: llseek fix race
fuse: fix llseek bug
fuse: fix fuse_retrieve

+7 -2
+2 -1
fs/fuse/dev.c
··· 1512 1512 else if (outarg->offset + num > file_size) 1513 1513 num = file_size - outarg->offset; 1514 1514 1515 - while (num) { 1515 + while (num && req->num_pages < FUSE_MAX_PAGES_PER_REQ) { 1516 1516 struct page *page; 1517 1517 unsigned int this_num; 1518 1518 ··· 1526 1526 1527 1527 num -= this_num; 1528 1528 total_len += this_num; 1529 + index++; 1529 1530 } 1530 1531 req->misc.retrieve_in.offset = outarg->offset; 1531 1532 req->misc.retrieve_in.size = total_len;
+5 -1
fs/fuse/file.c
··· 1556 1556 struct inode *inode = file->f_path.dentry->d_inode; 1557 1557 1558 1558 mutex_lock(&inode->i_mutex); 1559 - if (origin != SEEK_CUR || origin != SEEK_SET) { 1559 + if (origin != SEEK_CUR && origin != SEEK_SET) { 1560 1560 retval = fuse_update_attributes(inode, NULL, file, NULL); 1561 1561 if (retval) 1562 1562 goto exit; ··· 1567 1567 offset += i_size_read(inode); 1568 1568 break; 1569 1569 case SEEK_CUR: 1570 + if (offset == 0) { 1571 + retval = file->f_pos; 1572 + goto exit; 1573 + } 1570 1574 offset += file->f_pos; 1571 1575 break; 1572 1576 case SEEK_DATA: