2020-06-10 11:51:36

by Jiri Slaby

[permalink] [raw]
Subject: [PATCH] syscalls: fix offset type of ksys_ftruncate

After the commit below, truncate on i586 uses ksys_ftruncate. But
ksys_ftruncate truncates the offset to unsigned long. So switch the type
of offset to loff_t which is what the lower do_sys_ftruncate expects.

Signed-off-by: Jiri Slaby <[email protected]>
Fixes: 121b32a58a3a (x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments)
Cc: Brian Gerst <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Dominik Brodowski <[email protected]>
---
include/linux/syscalls.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 63ffa6dc9da3..e97ca179d0dc 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -1370,7 +1370,7 @@ static inline long ksys_lchown(const char __user *filename, uid_t user,

extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);

-static inline long ksys_ftruncate(unsigned int fd, unsigned long length)
+static inline long ksys_ftruncate(unsigned int fd, loff_t length)
{
return do_sys_ftruncate(fd, length, 1);
}
--
2.27.0


2020-06-10 12:37:28

by Brian Gerst

[permalink] [raw]
Subject: Re: [PATCH] syscalls: fix offset type of ksys_ftruncate

On Wed, Jun 10, 2020 at 7:48 AM Jiri Slaby <[email protected]> wrote:
>
> After the commit below, truncate on i586 uses ksys_ftruncate. But
> ksys_ftruncate truncates the offset to unsigned long. So switch the type
> of offset to loff_t which is what the lower do_sys_ftruncate expects.
>
> Signed-off-by: Jiri Slaby <[email protected]>
> Fixes: 121b32a58a3a (x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments)
> Cc: Brian Gerst <[email protected]>
> Cc: Thomas Gleixner <[email protected]>
> Cc: Dominik Brodowski <[email protected]>
> ---
> include/linux/syscalls.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
> index 63ffa6dc9da3..e97ca179d0dc 100644
> --- a/include/linux/syscalls.h
> +++ b/include/linux/syscalls.h
> @@ -1370,7 +1370,7 @@ static inline long ksys_lchown(const char __user *filename, uid_t user,
>
> extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
>
> -static inline long ksys_ftruncate(unsigned int fd, unsigned long length)
> +static inline long ksys_ftruncate(unsigned int fd, loff_t length)
> {
> return do_sys_ftruncate(fd, length, 1);
> }

Reviewed-by: Brian Gerst <[email protected]>

Subject: [tip: x86/urgent] syscalls: Fix offset type of ksys_ftruncate()

The following commit has been merged into the x86/urgent branch of tip:

Commit-ID: 8e742aa79780b13cd300a42198c1a4cea9c89905
Gitweb: https://git.kernel.org/tip/8e742aa79780b13cd300a42198c1a4cea9c89905
Author: Jiri Slaby <[email protected]>
AuthorDate: Wed, 10 Jun 2020 13:48:51 +02:00
Committer: Thomas Gleixner <[email protected]>
CommitterDate: Mon, 15 Jun 2020 11:16:27 +02:00

syscalls: Fix offset type of ksys_ftruncate()

After the commit below, truncate() on x86 32bit uses ksys_ftruncate(). But
ksys_ftruncate() truncates the offset to unsigned long.

Switch the type of offset to loff_t which is what do_sys_ftruncate()
expects.

Fixes: 121b32a58a3a (x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments)
Signed-off-by: Jiri Slaby <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Brian Gerst <[email protected]>
Cc: [email protected]
Link: https://lkml.kernel.org/r/[email protected]
---
include/linux/syscalls.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 7c354c2..b951a87 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -1360,7 +1360,7 @@ static inline long ksys_lchown(const char __user *filename, uid_t user,

extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);

-static inline long ksys_ftruncate(unsigned int fd, unsigned long length)
+static inline long ksys_ftruncate(unsigned int fd, loff_t length)
{
return do_sys_ftruncate(fd, length, 1);
}