mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull second set of VFS changes from Al Viro: "Assorted f_pos race fixes, making do_splice_direct() safe to call with i_mutex on parent, O_TMPFILE support, Jeff's locks.c series, ->d_hash/->d_compare calling conventions changes from Linus, misc stuff all over the place." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits) Document ->tmpfile() ext4: ->tmpfile() support vfs: export lseek_execute() to modules lseek_execute() doesn't need an inode passed to it block_dev: switch to fixed_size_llseek() cpqphp_sysfs: switch to fixed_size_llseek() tile-srom: switch to fixed_size_llseek() proc_powerpc: switch to fixed_size_llseek() ubi/cdev: switch to fixed_size_llseek() pci/proc: switch to fixed_size_llseek() isapnp: switch to fixed_size_llseek() lpfc: switch to fixed_size_llseek() locks: give the blocked_hash its own spinlock locks: add a new "lm_owner_key" lock operation locks: turn the blocked_list into a hashtable locks: convert fl_link to a hlist_node locks: avoid taking global lock if possible when waking up blocked waiters locks: protect most of the file_lock handling with i_lock locks: encapsulate the fl_link list handling locks: make "added" in __posix_lock_file a bool ...
This commit is contained in:
commit
790eac5640
98 changed files with 979 additions and 986 deletions
|
|
@ -98,32 +98,8 @@ static int ps3flash_fetch(struct ps3_storage_device *dev, u64 start_sector)
|
|||
static loff_t ps3flash_llseek(struct file *file, loff_t offset, int origin)
|
||||
{
|
||||
struct ps3_storage_device *dev = ps3flash_dev;
|
||||
loff_t res;
|
||||
|
||||
mutex_lock(&file->f_mapping->host->i_mutex);
|
||||
switch (origin) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
offset += file->f_pos;
|
||||
break;
|
||||
case 2:
|
||||
offset += dev->regions[dev->region_idx].size*dev->blk_size;
|
||||
break;
|
||||
default:
|
||||
offset = -1;
|
||||
}
|
||||
if (offset < 0) {
|
||||
res = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
file->f_pos = offset;
|
||||
res = file->f_pos;
|
||||
|
||||
out:
|
||||
mutex_unlock(&file->f_mapping->host->i_mutex);
|
||||
return res;
|
||||
return generic_file_llseek_size(file, offset, origin, MAX_LFS_FILESIZE,
|
||||
dev->regions[dev->region_idx].size*dev->blk_size);
|
||||
}
|
||||
|
||||
static ssize_t ps3flash_read(char __user *userbuf, void *kernelbuf,
|
||||
|
|
|
|||
|
|
@ -273,32 +273,10 @@ static ssize_t srom_write(struct file *filp, const char __user *buf,
|
|||
}
|
||||
|
||||
/* Provide our own implementation so we can use srom->total_size. */
|
||||
loff_t srom_llseek(struct file *filp, loff_t offset, int origin)
|
||||
loff_t srom_llseek(struct file *file, loff_t offset, int origin)
|
||||
{
|
||||
struct srom_dev *srom = filp->private_data;
|
||||
|
||||
if (mutex_lock_interruptible(&srom->lock))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
switch (origin) {
|
||||
case SEEK_END:
|
||||
offset += srom->total_size;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
offset += filp->f_pos;
|
||||
break;
|
||||
}
|
||||
|
||||
if (offset < 0 || offset > srom->total_size) {
|
||||
offset = -EINVAL;
|
||||
} else {
|
||||
filp->f_pos = offset;
|
||||
filp->f_version = 0;
|
||||
}
|
||||
|
||||
mutex_unlock(&srom->lock);
|
||||
|
||||
return offset;
|
||||
struct srom_dev *srom = file->private_data;
|
||||
return fixed_size_llseek(file, offset, origin, srom->total_size);
|
||||
}
|
||||
|
||||
static ssize_t total_show(struct device *dev,
|
||||
|
|
|
|||
Loading…
Reference in a new issue