If llseek fails, then we return immediately, potentially leaving the
wrong address space configured for this process, and without resetting
the processes saved limits.
Fix this by creating a common exit point for osi_rdwr, and using it.
Change-Id: Ifff8cb0155f92a4130d21828d5ee2d2a55c09195
Reviewed-on: http://gerrit.openafs.org/1155
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
/* seek to the desired position. Return -1 on error. */
if (filp->f_op->llseek) {
if (filp->f_op->llseek(filp, (loff_t) uiop->uio_offset, 0) != uiop->uio_offset)
- return -1;
+ code = -1;
+ goto out;
} else
filp->f_pos = uiop->uio_offset;
code = 0;
}
+out:
if (uiop->uio_seg == AFS_UIOSYS)
TO_KERNEL_SPACE();