Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1294123

Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it

From Catalin Marinas <catalin.marinas@arm.com>
Newsgroups linux.kernel
Subject Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it
Date 2015-12-17 19:30 +0100
Message-ID <qGLto-32N-17@gated-at.bofh.it> (permalink)
References <qG5DP-1iE-3@gated-at.bofh.it> <qG5DQ-1iE-17@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Wed, Dec 16, 2015 at 12:42:38AM +0300, Yury Norov wrote:
> +/* Using non-compat syscalls where necessary */
> +#define compat_sys_fadvise64_64        sys_fadvise64_64
> +#define compat_sys_fallocate           sys_fallocate
> +#define compat_sys_ftruncate64         sys_ftruncate

I initially thought this should be sys_ftruncate64 (or a wrapper to pass
small == 0) but we rely on sys_openat to set O_LARGEFILE.

arch/arm has ftruncate and ftruncate64, but it looks like we route both
via sys_ftruncate(). The difference is the "small" argument which
imposes a limit on the length without O_LARGEFILE, so we may have a bug
here.

> +#define compat_sys_lookup_dcookie      sys_lookup_dcookie
> +#define compat_sys_pread64             sys_pread64
> +#define compat_sys_pwrite64            sys_pwrite64
> +#define compat_sys_readahead           sys_readahead
> +#define compat_sys_shmat               sys_shmat

I wonder whether we need wrappers (actually, not only for these but
sys_read etc.). These functions take either a pointer or a size_t
argument which are 32-bit with ILP32 but treated as 64-bit by an LP64
kernel. Can we guarantee that user space zeros the top 32-bit of the
arguments passed here?

With compat/AArch32, this is guaranteed by the kernel since EL0 won't be
able to touch the top part but here I'm not entirely sure. As long as
user space used Wn registers for 32-bit types, we are probably fine (the
architecture guarantees the top 32-bit zeroing following a MOV, LDR etc.
instruction into a Wn register). We just need to mention this in the ABI
document (ilp32.txt).

> +#define compat_sys_sigaltstack         sys_sigaltstack

I think Arnd is right here in using the compat function. The stack_t
would differ between LP64 and ILP32. compat_sys_sigaltstack() uses
compat_user_stack_pointer() but this should work correctly as it checks
pt_regs for the right mode.

> +#define compat_sys_sync_file_range     sys_sync_file_range
> +#define compat_sys_truncate64          sys_truncate
> +#define sys_llseek                     sys_lseek

I think this makes sense since we have 64-bit registers.

> +
> +#define compat_sys_open_by_handle_at   sys_open_by_handle_at
> +#define compat_sys_openat              sys_openat

So using sys_openat() forces O_LARGEFILE and we don't have a problem
with (f)truncate. We may have an issue with AArch32 compat though.

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[RFC3 PATCH v6 00/20] ILP32 for ARM64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
  [PATCH v6 10/20] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 10/20] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Arnd Bergmann <arnd@arndb.de> - 2015-12-16 17:00 +0100
      Re: [PATCH v6 10/20] arm64:ilp32 use the native LP64 'start_thread'  for ILP32 threads Yury Norov <ynorov@caviumnetworks.com> - 2015-12-18 15:00 +0100
  [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-16 17:10 +0100
    Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate  table (in entry.S) to use it Catalin Marinas <catalin.marinas@arm.com> - 2015-12-17 19:30 +0100
      Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-17 21:20 +0100
        Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate  table (in entry.S) to use it Andrew Pinski <pinskia@gmail.com> - 2015-12-17 21:20 +0100
          Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-17 22:00 +0100
          Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate  table (in entry.S) to use it Catalin Marinas <catalin.marinas@arm.com> - 2015-12-18 12:50 +0100
            Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-18 14:00 +0100
              Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate  table (in entry.S) to use it Catalin Marinas <catalin.marinas@arm.com> - 2015-12-21 19:40 +0100
                Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-21 23:30 +0100
              Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it "Dr. Philipp Tomsich" <philipp.tomsich@theobroma-systems.com> - 2015-12-21 19:50 +0100
                Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-21 23:20 +0100
    Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-21 23:40 +0100
      Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate  table (in entry.S) to use it Yury Norov <ynorov@caviumnetworks.com> - 2015-12-23 19:40 +0100
        Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Arnd Bergmann <arnd@arndb.de> - 2015-12-23 22:50 +0100
  [PATCH v6 02/20] arm64: ensure the kernel is compiled for LP64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
  [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Andreas Schwab <schwab@suse.de> - 2015-12-17 15:40 +0100
      Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to  ilp32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-18 15:00 +0100
    Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to  ilp32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-22 13:30 +0100
      Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Arnd Bergmann <arnd@arndb.de> - 2015-12-22 22:50 +0100
        Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to  ilp32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-23 14:40 +0100
          Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Arnd Bergmann <arnd@arndb.de> - 2015-12-23 21:50 +0100
            Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to  ilp32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-30 18:30 +0100
              Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Arnd Bergmann <arnd@arndb.de> - 2015-12-30 23:40 +0100
      Re: [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to  ilp32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-23 05:30 +0100
  [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,  thread} and TIF_32BIT_AARCH64 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-17 12:50 +0100
      Re: [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,  thread} and TIF_32BIT_AARCH64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-18 15:20 +0100
        Re: [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,  thread} and TIF_32BIT_AARCH64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-18 15:50 +0100
          Re: [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,  thread} and TIF_32BIT_AARCH64 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-21 18:50 +0100
  [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use  CONFIG_AARCH32_EL0 instead Yury Norov <ynorov@caviumnetworks.com> - 2015-12-23 15:20 +0100
    > diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile Bamvor Jian Zhang <bamvor.zhangjian@linaro.org> - 2015-12-28 09:50 +0100
      Re: [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use  CONFIG_AARCH32_EL0 instead "Zhangjian (Bamvor)" <bamvor.zhangjian@huawei.com> - 2015-12-28 10:10 +0100
        Re: [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use  CONFIG_AARCH32_EL0 instead Yury Norov <ynorov@caviumnetworks.com> - 2015-12-29 13:40 +0100
          [PATCH] arm64: compat: fix wrong dependency Bamvor Jian Zhang <bamvor.zhangjian@linaro.org> - 2015-12-29 16:10 +0100
        Re: [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use  CONFIG_AARCH32_EL0 instead Yury Norov <ynorov@caviumnetworks.com> - 2015-12-29 14:20 +0100
  [PATCH v6 01/20] arm64: ilp32: add documentation on the ILP32 ABI for ARM64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
  [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Arnd Bergmann <arnd@arndb.de> - 2015-12-16 17:00 +0100
      Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-16 18:00 +0100
        Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-16 18:20 +0100
          Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Arnd Bergmann <arnd@arndb.de> - 2015-12-16 20:20 +0100
            Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-17 12:00 +0100
              Re: [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Arnd Bergmann <arnd@arndb.de> - 2015-12-17 15:00 +0100
  [PATCH v6 07/20] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 07/20] arm64: introduce is_a32_task and is_a32_thread  (for AArch32 compat) Catalin Marinas <catalin.marinas@arm.com> - 2015-12-17 12:40 +0100
  [PATCH v6 05/20] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
  [PATCH v6 11/20] arm64:ilp32: support core dump generation for ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 11/20] arm64:ilp32: support core dump generation for  ILP32 Catalin Marinas <catalin.marinas@arm.com> - 2015-12-17 15:10 +0100
  [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code to separated file Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 22:50 +0100
    Re: [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code to separated file Arnd Bergmann <arnd@arndb.de> - 2015-12-16 17:10 +0100
      Re: [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code  to separated file Yury Norov <ynorov@caviumnetworks.com> - 2015-12-18 14:50 +0100
        Re: [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code to separated file Arnd Bergmann <arnd@arndb.de> - 2015-12-18 15:20 +0100
    Re: [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code  to separated file Catalin Marinas <catalin.marinas@arm.com> - 2015-12-22 18:20 +0100
  [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers for sigframe Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 23:00 +0100
    Re: [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers  for sigframe Catalin Marinas <catalin.marinas@arm.com> - 2015-12-22 18:20 +0100
  [PATCH v6 18/20] arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 23:00 +0100
  [PATCH v6 19/20] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 23:00 +0100
  [PATCH v6 20/20] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 23:00 +0100
  [PATCH v6 16/20] arm64: signal32: move ilp32 and aarch32 common code to separated file Yury Norov <ynorov@caviumnetworks.com> - 2015-12-15 23:00 +0100
    Re: [PATCH v6 16/20] arm64: signal32: move ilp32 and aarch32 common  code to separated file Catalin Marinas <catalin.marinas@arm.com> - 2015-12-22 15:30 +0100
  Re: [RFC3 PATCH v6 00/20] ILP32 for ARM64 Arnd Bergmann <arnd@arndb.de> - 2015-12-16 17:30 +0100

csiph-web