This ports the following barebox commit:

| commit 219b954a11e82afbbd7b6ef13d8c5ba94a5b0ff3
| Author: Andrey Smirnov <andrew.smir...@gmail.com>
| Date:   Wed Mar 6 23:49:21 2019 -0800
|
|     state: Fix lseek error check in state_backend_bucket_direct_read()
|
|     Don't use 'int' to store lseek()'s return value to avoid problems with
|     large seek offsets. While at it, make sure to populate return error
|     code from 'errno'.
|
|     Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
|     Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>

Signed-off-by: Ulrich Ölmann <u.oelm...@pengutronix.de>
---
 src/barebox-state/backend_bucket_direct.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/barebox-state/backend_bucket_direct.c 
b/src/barebox-state/backend_bucket_direct.c
index dc00de0647a1..efa13ce0948a 100644
--- a/src/barebox-state/backend_bucket_direct.c
+++ b/src/barebox-state/backend_bucket_direct.c
@@ -56,10 +56,9 @@ static int state_backend_bucket_direct_read(struct 
state_backend_storage_bucket
        void *buf;
        int ret;
 
-       ret = lseek(direct->fd, direct->offset, SEEK_SET);
-       if (ret < 0) {
-               dev_err(direct->dev, "Failed to seek file, %d\n", ret);
-               return ret;
+       if (lseek(direct->fd, direct->offset, SEEK_SET) != direct->offset) {
+               dev_err(direct->dev, "Failed to seek file, %d\n", -errno);
+               return -errno;
        }
        ret = read_full(direct->fd, &meta, sizeof(meta));
        if (ret < 0) {
@@ -72,10 +71,11 @@ static int state_backend_bucket_direct_read(struct 
state_backend_storage_bucket
                if (meta.magic != ~0 && !!meta.magic)
                        bucket->wrong_magic = 1;
                read_len = direct->max_size;
-               ret = lseek(direct->fd, direct->offset, SEEK_SET);
-               if (ret < 0) {
-                       dev_err(direct->dev, "Failed to seek file, %d\n", ret);
-                       return ret;
+               if (lseek(direct->fd, direct->offset, SEEK_SET) !=
+                   direct->offset) {
+                       dev_err(direct->dev, "Failed to seek file, %d\n",
+                               -errno);
+                       return -errno;
                }
        }
 
-- 
2.23.0


_______________________________________________
OSS-Tools mailing list
OSS-Tools@pengutronix.de

Reply via email to