diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2017-02-23 22:28:41 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-03-02 08:38:29 +0100 |
commit | 711bb18961e2c8b8f2fb5ae13a2399740e71a974 (patch) | |
tree | bd9cdabfdf3460c1fa4faee9f9e1e0771c468ae2 /fs/fs.c | |
parent | fc6ce94cdae01776b995496ec7286e46705108e9 (diff) | |
download | barebox-711bb18961e2c8b8f2fb5ae13a2399740e71a974.tar.gz barebox-711bb18961e2c8b8f2fb5ae13a2399740e71a974.tar.xz |
lseek: ensure errno is set on failure and return -1
All error paths before calling the driver's lseek callback return -1 and
set errno. Do the same if the callback returns an error.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs/fs.c')
-rw-r--r-- | fs/fs.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -926,7 +926,13 @@ loff_t lseek(int fildes, loff_t offset, int whence) goto out; } - return fsdrv->lseek(&f->fsdev->dev, f, pos); + pos = fsdrv->lseek(&f->fsdev->dev, f, pos); + if (pos < 0) { + errno = -pos; + return -1; + } + + return pos; out: if (ret) |