From 711bb18961e2c8b8f2fb5ae13a2399740e71a974 Mon Sep 17 00:00:00 2001 From: Uwe Kleine-König Date: Thu, 23 Feb 2017 22:28:41 +0100 Subject: lseek: ensure errno is set on failure and return -1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Sascha Hauer --- fs/fs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'fs/fs.c') 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) -- cgit v1.2.3