From faebac477764b3c2b0df530672cb32028b1b8720 Mon Sep 17 00:00:00 2001 From: waterwin Date: Sun, 28 Aug 2022 19:40:44 +0800 Subject: [PATCH] hmdfs: llseek bugfix ohos inclusion category: bugfix issue: #I5OCGX CVE: NA ---------------------------------------------- return wrong value when calling llseek after reading or writing Signed-off-by: waterwin --- fs/hmdfs/file_local.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/fs/hmdfs/file_local.c b/fs/hmdfs/file_local.c index 47f39e392ce8..20a997236ac9 100644 --- a/fs/hmdfs/file_local.c +++ b/fs/hmdfs/file_local.c @@ -154,16 +154,15 @@ int hmdfs_fsync_local(struct file *file, loff_t start, loff_t end, int datasync) loff_t hmdfs_file_llseek_local(struct file *file, loff_t offset, int whence) { - int err = 0; - struct file *lower_file = NULL; + loff_t ret; + struct file *lower_file; - err = generic_file_llseek(file, offset, whence); - if (err < 0) - goto out; lower_file = hmdfs_f(file)->lower_file; - err = generic_file_llseek(lower_file, offset, whence); -out: - return err; + lower_file->f_pos = file->f_pos; + ret = vfs_llseek(lower_file, offset, whence); + file->f_pos = lower_file->f_pos; + + return ret; } int hmdfs_file_mmap_local(struct file *file, struct vm_area_struct *vma) -- Gitee