quota: fixup *_write_file_info() to return proper error code
authorYangtao Li <frank.li@vivo.com>
Mon, 27 Feb 2023 12:02:15 +0000 (20:02 +0800)
committerJan Kara <jack@suse.cz>
Mon, 20 Mar 2023 16:27:42 +0000 (17:27 +0100)
For v1_write_file_info function, when quota_write() returns 0,
it should be considered an EIO error. And for v2_write_file_info(),
fix to proper error return code instead of raw number.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230227120216.31306-1-frank.li@vivo.com>

fs/quota/quota_v1.c
fs/quota/quota_v2.c

index cd92e5f..a0db3f1 100644 (file)
@@ -206,7 +206,7 @@ static int v1_write_file_info(struct super_block *sb, int type)
              sizeof(struct v1_disk_dqblk), v1_dqoff(0));
        if (ret == sizeof(struct v1_disk_dqblk))
                ret = 0;
-       else if (ret > 0)
+       else if (ret >= 0)
                ret = -EIO;
 out:
        up_write(&dqopt->dqio_sem);
index b1467f3..ae99e7b 100644 (file)
@@ -212,7 +212,7 @@ static int v2_write_file_info(struct super_block *sb, int type)
        up_write(&dqopt->dqio_sem);
        if (size != sizeof(struct v2_disk_dqinfo)) {
                quota_error(sb, "Can't write info structure");
-               return -1;
+               return size < 0 ? size : -EIO;
        }
        return 0;
 }