9
0
Fork 0

lseek: return -1 instead of -errno

The patch making errno a positive value has another bug:
lseek was switched to return -errno instead of -1. This does not
work since we can lseek we can address the whole 4G address space,
have of which has a negative offset when interpreted as a signed
integer. Let lseek return -1 on failure again instead.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2012-05-18 11:14:58 +02:00
parent c46a841049
commit 831be2ecee
3 changed files with 5 additions and 5 deletions

View File

@ -48,7 +48,7 @@ static int file_crc(char* filename, ulong start, ulong size, ulong *crc,
if (start > 0) {
ret = lseek(fd, start, SEEK_SET);
if (ret < 0) {
if (ret == -1) {
perror("lseek");
goto out;
}

View File

@ -122,10 +122,10 @@ static int open_and_lseek(const char *filename, int mode, off_t pos)
return fd;
ret = lseek(fd, pos, SEEK_SET);
if (ret < 0) {
if (ret == -1) {
perror("lseek");
close(fd);
return ret;
return -errno;
}
return fd;

View File

@ -732,13 +732,13 @@ off_t lseek(int fildes, off_t offset, int whence)
goto out;
}
ret = fsdrv->lseek(dev, f, pos);
return fsdrv->lseek(dev, f, pos);
out:
if (ret)
errno = -ret;
return ret;
return -1;
}
EXPORT_SYMBOL(lseek);