mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
new helpers: no_seek_end_llseek{,_size}()
Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
b808b1d632
commit
b25472f9b9
13 changed files with 54 additions and 222 deletions
|
|
@ -661,32 +661,8 @@ static unsigned int usb_device_poll(struct file *file,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static loff_t usb_device_lseek(struct file *file, loff_t offset, int orig)
|
||||
{
|
||||
loff_t ret;
|
||||
|
||||
mutex_lock(&file_inode(file)->i_mutex);
|
||||
|
||||
switch (orig) {
|
||||
case 0:
|
||||
file->f_pos = offset;
|
||||
ret = file->f_pos;
|
||||
break;
|
||||
case 1:
|
||||
file->f_pos += offset;
|
||||
ret = file->f_pos;
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
mutex_unlock(&file_inode(file)->i_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
const struct file_operations usbfs_devices_fops = {
|
||||
.llseek = usb_device_lseek,
|
||||
.llseek = no_seek_end_llseek,
|
||||
.read = usb_device_read,
|
||||
.poll = usb_device_poll,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -157,30 +157,6 @@ static int connected(struct usb_dev_state *ps)
|
|||
ps->dev->state != USB_STATE_NOTATTACHED);
|
||||
}
|
||||
|
||||
static loff_t usbdev_lseek(struct file *file, loff_t offset, int orig)
|
||||
{
|
||||
loff_t ret;
|
||||
|
||||
mutex_lock(&file_inode(file)->i_mutex);
|
||||
|
||||
switch (orig) {
|
||||
case 0:
|
||||
file->f_pos = offset;
|
||||
ret = file->f_pos;
|
||||
break;
|
||||
case 1:
|
||||
file->f_pos += offset;
|
||||
ret = file->f_pos;
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
mutex_unlock(&file_inode(file)->i_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t usbdev_read(struct file *file, char __user *buf, size_t nbytes,
|
||||
loff_t *ppos)
|
||||
{
|
||||
|
|
@ -2366,7 +2342,7 @@ static unsigned int usbdev_poll(struct file *file,
|
|||
|
||||
const struct file_operations usbdev_file_operations = {
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = usbdev_lseek,
|
||||
.llseek = no_seek_end_llseek,
|
||||
.read = usbdev_read,
|
||||
.poll = usbdev_poll,
|
||||
.unlocked_ioctl = usbdev_ioctl,
|
||||
|
|
|
|||
|
|
@ -584,27 +584,8 @@ static int uhci_debug_open(struct inode *inode, struct file *file)
|
|||
|
||||
static loff_t uhci_debug_lseek(struct file *file, loff_t off, int whence)
|
||||
{
|
||||
struct uhci_debug *up;
|
||||
loff_t new = -1;
|
||||
|
||||
up = file->private_data;
|
||||
|
||||
/*
|
||||
* XXX: atomic 64bit seek access, but that needs to be fixed in the VFS
|
||||
*/
|
||||
switch (whence) {
|
||||
case 0:
|
||||
new = off;
|
||||
break;
|
||||
case 1:
|
||||
new = file->f_pos + off;
|
||||
break;
|
||||
}
|
||||
|
||||
if (new < 0 || new > up->size)
|
||||
return -EINVAL;
|
||||
|
||||
return (file->f_pos = new);
|
||||
struct uhci_debug *up = file->private_data;
|
||||
return no_seek_end_llseek_size(file, off, whence, up->size);
|
||||
}
|
||||
|
||||
static ssize_t uhci_debug_read(struct file *file, char __user *buf,
|
||||
|
|
|
|||
|
|
@ -2825,21 +2825,7 @@ sisusb_lseek(struct file *file, loff_t offset, int orig)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
switch (orig) {
|
||||
case 0:
|
||||
file->f_pos = offset;
|
||||
ret = file->f_pos;
|
||||
/* never negative, no force_successful_syscall needed */
|
||||
break;
|
||||
case 1:
|
||||
file->f_pos += offset;
|
||||
ret = file->f_pos;
|
||||
/* never negative, no force_successful_syscall needed */
|
||||
break;
|
||||
default:
|
||||
/* seeking relative to "end of file" is not supported */
|
||||
ret = -EINVAL;
|
||||
}
|
||||
ret = no_seek_end_llseek(file, offset, orig);
|
||||
|
||||
mutex_unlock(&sisusb->lock);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in a new issue