From: Catalin Marinas <catalin.marinas@arm.com> To: Yury Norov <ynorov@caviumnetworks.com> Cc: arnd@arndb.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, pinskia@gmail.com, Prasun.Kapoor@caviumnetworks.com, schwab@suse.de, broonie@kernel.org, Nathan_Lynch@mentor.com, agraf@suse.de, klimov.linux@gmail.com, Andrew Pinski <Andrew.Pinski@caviumnetworks.com>, jan.dakinevich@gmail.com, Andrew Pinski <apinski@cavium.com>, ddaney.cavm@gmail.com, bamvor.zhangjian@huawei.com, philipp.tomsich@theobroma-systems.com, joseph@codesourcery.com, christoph.muellner@theobroma-systems.com Subject: Re: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Date: Thu, 17 Dec 2015 18:27:53 +0000 [thread overview] Message-ID: <20151217182753.GF25232@e104818-lin.cambridge.arm.com> (raw) In-Reply-To: <1450215766-14765-13-git-send-email-ynorov@caviumnetworks.com> 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
WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Date: Thu, 17 Dec 2015 18:27:53 +0000 [thread overview] Message-ID: <20151217182753.GF25232@e104818-lin.cambridge.arm.com> (raw) In-Reply-To: <1450215766-14765-13-git-send-email-ynorov@caviumnetworks.com> 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
next prev parent reply other threads:[~2015-12-17 18:28 UTC|newest] Thread overview: 156+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-12-15 21:42 [RFC3 PATCH v6 00/20] ILP32 for ARM64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 01/20] arm64: ilp32: add documentation on the ILP32 ABI " Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 02/20] arm64: ensure the kernel is compiled for LP64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 03/20] arm64: rename COMPAT to AARCH32_EL0 in Kconfig Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 11:23 ` Catalin Marinas 2015-12-17 11:23 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-23 14:15 ` Yury Norov 2015-12-23 14:15 ` Yury Norov 2015-12-28 8:43 ` > diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile Bamvor Jian Zhang 2015-12-28 8:43 ` Bamvor Jian Zhang 2015-12-28 9:01 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Zhangjian (Bamvor) 2015-12-28 9:01 ` Zhangjian (Bamvor) 2015-12-29 12:27 ` Yury Norov 2015-12-29 12:27 ` Yury Norov 2015-12-29 14:59 ` [PATCH] arm64: compat: fix wrong dependency Bamvor Jian Zhang 2015-12-29 14:59 ` Bamvor Jian Zhang 2015-12-29 13:12 ` [PATCH v6 04/20] arm64: change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Yury Norov 2015-12-29 13:12 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 05/20] arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 06/20] thread: move thread bits accessors to separated file Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 07/20] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 11:38 ` Catalin Marinas 2015-12-17 11:38 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64 Yury Norov 2015-12-15 21:42 ` [PATCH v6 08/20] arm64: ilp32: add is_ilp32_compat_{task, thread} " Yury Norov 2015-12-17 11:41 ` Catalin Marinas 2015-12-17 11:41 ` Catalin Marinas 2015-12-18 14:11 ` Yury Norov 2015-12-18 14:11 ` Yury Norov 2015-12-18 14:44 ` Yury Norov 2015-12-18 14:44 ` Yury Norov 2015-12-21 17:42 ` Catalin Marinas 2015-12-21 17:42 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 09/20] arm64:ilp32: share HWCAP between LP64 and ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 15:54 ` Arnd Bergmann 2015-12-16 15:54 ` Arnd Bergmann 2015-12-16 16:58 ` Catalin Marinas 2015-12-16 16:58 ` Catalin Marinas 2015-12-16 17:19 ` Catalin Marinas 2015-12-16 17:19 ` Catalin Marinas 2015-12-16 19:17 ` Arnd Bergmann 2015-12-16 19:17 ` Arnd Bergmann 2015-12-17 10:54 ` Catalin Marinas 2015-12-17 10:54 ` Catalin Marinas 2015-12-17 13:56 ` Arnd Bergmann 2015-12-17 13:56 ` Arnd Bergmann 2015-12-15 21:42 ` [PATCH v6 10/20] arm64:ilp32 use the native LP64 'start_thread' for ILP32 threads Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 15:50 ` Arnd Bergmann 2015-12-16 15:50 ` Arnd Bergmann 2015-12-18 13:57 ` Yury Norov 2015-12-18 13:57 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 11/20] arm64:ilp32: support core dump generation for ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 14:05 ` Catalin Marinas 2015-12-17 14:05 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 12/20] arm64:ilp32: add sys_ilp32.c and a separate table (in entry.S) to use it Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:07 ` Arnd Bergmann 2015-12-16 16:07 ` Arnd Bergmann 2015-12-17 18:27 ` Catalin Marinas [this message] 2015-12-17 18:27 ` Catalin Marinas 2015-12-17 20:10 ` Arnd Bergmann 2015-12-17 20:10 ` Arnd Bergmann 2015-12-17 20:14 ` Andrew Pinski 2015-12-17 20:14 ` Andrew Pinski 2015-12-17 20:50 ` Arnd Bergmann 2015-12-17 20:50 ` Arnd Bergmann 2016-01-05 15:26 ` Yury Norov 2016-01-05 15:26 ` Yury Norov 2016-01-05 21:12 ` Arnd Bergmann 2016-01-05 21:12 ` Arnd Bergmann 2016-01-06 17:10 ` Catalin Marinas 2016-01-06 17:10 ` Catalin Marinas 2016-01-07 14:13 ` Arnd Bergmann 2016-01-07 14:13 ` Arnd Bergmann 2016-01-07 15:42 ` Yury Norov 2016-01-07 15:42 ` Yury Norov 2016-01-07 17:23 ` Catalin Marinas 2016-01-07 17:23 ` Catalin Marinas 2015-12-18 11:42 ` Catalin Marinas 2015-12-18 11:42 ` Catalin Marinas 2015-12-18 12:47 ` Arnd Bergmann 2015-12-18 12:47 ` Arnd Bergmann 2015-12-21 18:31 ` Catalin Marinas 2015-12-21 18:31 ` Catalin Marinas 2015-12-21 22:19 ` Arnd Bergmann 2015-12-21 22:19 ` Arnd Bergmann 2015-12-21 18:39 ` Dr. Philipp Tomsich 2015-12-21 18:39 ` Dr. Philipp Tomsich 2015-12-21 22:13 ` Arnd Bergmann 2015-12-21 22:13 ` Arnd Bergmann 2015-12-21 22:31 ` Arnd Bergmann 2015-12-21 22:31 ` Arnd Bergmann 2015-12-23 18:31 ` Yury Norov 2015-12-23 18:31 ` Yury Norov 2015-12-23 21:48 ` Arnd Bergmann 2015-12-23 21:48 ` Arnd Bergmann 2015-12-15 21:42 ` [PATCH v6 13/20] arm64: ilp32: share aarch32 syscall wrappers to ilp32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-17 14:38 ` Andreas Schwab 2015-12-17 14:38 ` Andreas Schwab 2015-12-18 13:49 ` Yury Norov 2015-12-18 13:49 ` Yury Norov 2015-12-22 12:25 ` Catalin Marinas 2015-12-22 12:25 ` Catalin Marinas 2015-12-22 21:44 ` Arnd Bergmann 2015-12-22 21:44 ` Arnd Bergmann 2015-12-23 13:37 ` Catalin Marinas 2015-12-23 13:37 ` Catalin Marinas 2015-12-23 20:41 ` Arnd Bergmann 2015-12-23 20:41 ` Arnd Bergmann 2015-12-30 17:29 ` Yury Norov 2015-12-30 17:29 ` Yury Norov 2015-12-30 22:36 ` Arnd Bergmann 2015-12-30 22:36 ` Arnd Bergmann 2015-12-23 4:21 ` Yury Norov 2015-12-23 4:21 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 14/20] arm64: signal: wrap struct ucontext, fp and lr with struct sigframe Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 15/20] arm64: signal: move ilp32 and lp64 common code to separated file Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:08 ` Arnd Bergmann 2015-12-16 16:08 ` Arnd Bergmann 2015-12-18 13:48 ` Yury Norov 2015-12-18 13:48 ` Yury Norov 2015-12-18 14:09 ` Arnd Bergmann 2015-12-18 14:09 ` Arnd Bergmann 2015-12-22 17:11 ` Catalin Marinas 2015-12-22 17:11 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 16/20] arm64: signal32: move ilp32 and aarch32 " Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-22 14:29 ` Catalin Marinas 2015-12-22 14:29 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 17/20] arm64: ilp32: introduce ilp32-specific handlers for sigframe Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-22 17:08 ` Catalin Marinas 2015-12-22 17:08 ` Catalin Marinas 2015-12-15 21:42 ` [PATCH v6 18/20] arm64:ilp32: add vdso-ilp32 and use for signal return Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 19/20] arm64:ilp32: change COMPAT_ELF_PLATFORM to report a a subplatform for ILP32 Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-15 21:42 ` [PATCH v6 20/20] arm64:ilp32: add ARM64_ILP32 to Kconfig Yury Norov 2015-12-15 21:42 ` Yury Norov 2015-12-16 16:24 ` [RFC3 PATCH v6 00/20] ILP32 for ARM64 Arnd Bergmann 2015-12-16 16:24 ` Arnd Bergmann
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20151217182753.GF25232@e104818-lin.cambridge.arm.com \ --to=catalin.marinas@arm.com \ --cc=Andrew.Pinski@caviumnetworks.com \ --cc=Nathan_Lynch@mentor.com \ --cc=Prasun.Kapoor@caviumnetworks.com \ --cc=agraf@suse.de \ --cc=apinski@cavium.com \ --cc=arnd@arndb.de \ --cc=bamvor.zhangjian@huawei.com \ --cc=broonie@kernel.org \ --cc=christoph.muellner@theobroma-systems.com \ --cc=ddaney.cavm@gmail.com \ --cc=jan.dakinevich@gmail.com \ --cc=joseph@codesourcery.com \ --cc=klimov.linux@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=philipp.tomsich@theobroma-systems.com \ --cc=pinskia@gmail.com \ --cc=schwab@suse.de \ --cc=ynorov@caviumnetworks.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.