mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-08 15:04:45 +00:00
IB/hfi1: Use kernel default llseek for ui device
The ui device llseek had a mistake with SEEK_END and did not fully follow seek semantics. Correct all this by using a kernel supplied function for fixed size devices. Cc: Al Viro <viro@ZenIV.linux.org.uk> Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
94158442eb
commit
7723d8c244
@ -1559,29 +1559,8 @@ static loff_t ui_lseek(struct file *filp, loff_t offset, int whence)
|
||||
{
|
||||
struct hfi1_devdata *dd = filp->private_data;
|
||||
|
||||
switch (whence) {
|
||||
case SEEK_SET:
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
offset += filp->f_pos;
|
||||
break;
|
||||
case SEEK_END:
|
||||
offset = ((dd->kregend - dd->kregbase) + DC8051_DATA_MEM_SIZE) -
|
||||
offset;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (offset < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (offset >= (dd->kregend - dd->kregbase) + DC8051_DATA_MEM_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
filp->f_pos = offset;
|
||||
|
||||
return filp->f_pos;
|
||||
return fixed_size_llseek(filp, offset, whence,
|
||||
(dd->kregend - dd->kregbase) + DC8051_DATA_MEM_SIZE);
|
||||
}
|
||||
|
||||
/* NOTE: assumes unsigned long is 8 bytes */
|
||||
|
Loading…
Reference in New Issue
Block a user