summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2017-02-23 22:28:41 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2017-03-02 08:38:29 +0100
commit711bb18961e2c8b8f2fb5ae13a2399740e71a974 (patch)
treebd9cdabfdf3460c1fa4faee9f9e1e0771c468ae2 /fs
parentfc6ce94cdae01776b995496ec7286e46705108e9 (diff)
downloadbarebox-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')
-rw-r--r--fs/fs.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/fs.c b/fs/fs.c
index 2b4659cfbb..e7b6965914 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -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)