From: "Michael S. Tsirkin" <mst@redhat.com> To: linux-kernel@vger.kernel.org Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>, linuxppc-dev@lists.ozlabs.org Subject: [PATCH v3 07/11] powerpc: uaccess s/might_sleep/might_fault/ Date: Fri, 24 May 2013 17:18:20 +0300 [thread overview] Message-ID: <1369404522-12927-7-git-send-email-mst@redhat.com> (raw) In-Reply-To: <cover.1368702323.git.mst@redhat.com> The only reason uaccess routines might sleep is if they fault. Make this explicit. Arnd Bergmann suggested that the following code if (!is_kernel_addr((unsigned long)__pu_addr)) might_fault(); can be further simplified by adding a version of might_fault that includes the kernel addr check. Will be considered as a further optimization in future. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- arch/powerpc/include/asm/uaccess.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 4db4959..9485b43 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -178,7 +178,7 @@ do { \ long __pu_err; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ if (!is_kernel_addr((unsigned long)__pu_addr)) \ - might_sleep(); \ + might_fault(); \ __chk_user_ptr(ptr); \ __put_user_size((x), __pu_addr, (size), __pu_err); \ __pu_err; \ @@ -188,7 +188,7 @@ do { \ ({ \ long __pu_err = -EFAULT; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ - might_sleep(); \ + might_fault(); \ if (access_ok(VERIFY_WRITE, __pu_addr, size)) \ __put_user_size((x), __pu_addr, (size), __pu_err); \ __pu_err; \ @@ -268,7 +268,7 @@ do { \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ __chk_user_ptr(ptr); \ if (!is_kernel_addr((unsigned long)__gu_addr)) \ - might_sleep(); \ + might_fault(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -282,7 +282,7 @@ do { \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ __chk_user_ptr(ptr); \ if (!is_kernel_addr((unsigned long)__gu_addr)) \ - might_sleep(); \ + might_fault(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -294,7 +294,7 @@ do { \ long __gu_err = -EFAULT; \ unsigned long __gu_val = 0; \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ - might_sleep(); \ + might_fault(); \ if (access_ok(VERIFY_READ, __gu_addr, (size))) \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ @@ -419,14 +419,14 @@ static inline unsigned long __copy_to_user_inatomic(void __user *to, static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long size) { - might_sleep(); + might_fault(); return __copy_from_user_inatomic(to, from, size); } static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long size) { - might_sleep(); + might_fault(); return __copy_to_user_inatomic(to, from, size); } @@ -434,7 +434,7 @@ extern unsigned long __clear_user(void __user *addr, unsigned long size); static inline unsigned long clear_user(void __user *addr, unsigned long size) { - might_sleep(); + might_fault(); if (likely(access_ok(VERIFY_WRITE, addr, size))) return __clear_user(addr, size); if ((unsigned long)addr < TASK_SIZE) { -- MST
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com> To: linux-kernel@vger.kernel.org Cc: Paul Mackerras <paulus@samba.org>, linuxppc-dev@lists.ozlabs.org Subject: [PATCH v3 07/11] powerpc: uaccess s/might_sleep/might_fault/ Date: Fri, 24 May 2013 17:18:20 +0300 [thread overview] Message-ID: <1369404522-12927-7-git-send-email-mst@redhat.com> (raw) In-Reply-To: <cover.1368702323.git.mst@redhat.com> The only reason uaccess routines might sleep is if they fault. Make this explicit. Arnd Bergmann suggested that the following code if (!is_kernel_addr((unsigned long)__pu_addr)) might_fault(); can be further simplified by adding a version of might_fault that includes the kernel addr check. Will be considered as a further optimization in future. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- arch/powerpc/include/asm/uaccess.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 4db4959..9485b43 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -178,7 +178,7 @@ do { \ long __pu_err; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ if (!is_kernel_addr((unsigned long)__pu_addr)) \ - might_sleep(); \ + might_fault(); \ __chk_user_ptr(ptr); \ __put_user_size((x), __pu_addr, (size), __pu_err); \ __pu_err; \ @@ -188,7 +188,7 @@ do { \ ({ \ long __pu_err = -EFAULT; \ __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ - might_sleep(); \ + might_fault(); \ if (access_ok(VERIFY_WRITE, __pu_addr, size)) \ __put_user_size((x), __pu_addr, (size), __pu_err); \ __pu_err; \ @@ -268,7 +268,7 @@ do { \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ __chk_user_ptr(ptr); \ if (!is_kernel_addr((unsigned long)__gu_addr)) \ - might_sleep(); \ + might_fault(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -282,7 +282,7 @@ do { \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ __chk_user_ptr(ptr); \ if (!is_kernel_addr((unsigned long)__gu_addr)) \ - might_sleep(); \ + might_fault(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -294,7 +294,7 @@ do { \ long __gu_err = -EFAULT; \ unsigned long __gu_val = 0; \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ - might_sleep(); \ + might_fault(); \ if (access_ok(VERIFY_READ, __gu_addr, (size))) \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ @@ -419,14 +419,14 @@ static inline unsigned long __copy_to_user_inatomic(void __user *to, static inline unsigned long __copy_from_user(void *to, const void __user *from, unsigned long size) { - might_sleep(); + might_fault(); return __copy_from_user_inatomic(to, from, size); } static inline unsigned long __copy_to_user(void __user *to, const void *from, unsigned long size) { - might_sleep(); + might_fault(); return __copy_to_user_inatomic(to, from, size); } @@ -434,7 +434,7 @@ extern unsigned long __clear_user(void __user *addr, unsigned long size); static inline unsigned long clear_user(void __user *addr, unsigned long size) { - might_sleep(); + might_fault(); if (likely(access_ok(VERIFY_WRITE, addr, size))) return __clear_user(addr, size); if ((unsigned long)addr < TASK_SIZE) { -- MST
next prev parent reply other threads:[~2013-05-24 14:19 UTC|newest] Thread overview: 228+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-05-16 11:07 [PATCH v2 00/10] uaccess: better might_sleep/might_fault behavior Michael S. Tsirkin 2013-05-16 11:07 ` Michael S. Tsirkin 2013-05-16 11:07 ` Michael S. Tsirkin 2013-05-16 11:07 ` Michael S. Tsirkin 2013-05-16 11:07 ` Michael S. Tsirkin 2013-05-16 11:07 ` Michael S. Tsirkin 2013-05-16 11:10 ` [PATCH v2 01/10] asm-generic: uaccess s/might_sleep/might_fault/ Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` [PATCH v2 02/10] arm64: " Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 13:29 ` Catalin Marinas 2013-05-16 11:10 ` [PATCH v2 03/10] frv: " Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:10 ` Michael S. Tsirkin 2013-05-16 11:11 ` [PATCH v2 04/10] m32r: " Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` [PATCH v2 05/10] microblaze: " Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:11 ` Michael S. Tsirkin 2013-05-16 11:12 ` [PATCH v2 06/10] mn10300: " Michael S. Tsirkin 2013-05-16 11:12 ` Michael S. Tsirkin 2013-05-16 11:12 ` Michael S. Tsirkin 2013-05-16 11:12 ` Michael S. Tsirkin 2013-05-16 11:12 ` Michael S. Tsirkin 2013-05-16 11:12 ` Michael S. Tsirkin 2013-05-16 11:15 ` [PATCH v2 07/10] powerpc: " Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-22 13:59 ` Arnd Bergmann 2013-05-22 13:59 ` Arnd Bergmann 2013-05-22 13:59 ` Arnd Bergmann 2013-05-22 13:59 ` Arnd Bergmann 2013-05-22 14:30 ` Michael S. Tsirkin 2013-05-22 14:30 ` Michael S. Tsirkin 2013-05-22 14:30 ` Michael S. Tsirkin 2013-05-22 14:30 ` Michael S. Tsirkin 2013-05-22 14:30 ` Michael S. Tsirkin 2013-05-24 13:00 ` Michael S. Tsirkin 2013-05-24 13:00 ` Michael S. Tsirkin 2013-05-24 13:00 ` Michael S. Tsirkin 2013-05-24 13:00 ` Michael S. Tsirkin 2013-05-24 13:00 ` Michael S. Tsirkin 2013-05-24 13:11 ` Michael S. Tsirkin 2013-05-24 13:11 ` Michael S. Tsirkin 2013-05-24 13:11 ` Michael S. Tsirkin 2013-05-24 13:11 ` Michael S. Tsirkin 2013-05-24 13:11 ` Michael S. Tsirkin 2013-05-24 13:30 ` Arnd Bergmann 2013-05-24 13:30 ` Arnd Bergmann 2013-05-24 13:30 ` Arnd Bergmann 2013-05-24 13:30 ` Arnd Bergmann 2013-05-24 13:30 ` Arnd Bergmann 2013-05-16 11:15 ` [PATCH v2 08/10] tile: " Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 13:33 ` Chris Metcalf 2013-05-16 11:15 ` [PATCH v2 09/10] x86: " Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:15 ` Michael S. Tsirkin 2013-05-16 11:16 ` [PATCH v2 10/10] kernel: might_fault does not imply might_sleep Michael S. Tsirkin 2013-05-16 11:16 ` Michael S. Tsirkin 2013-05-16 11:16 ` Michael S. Tsirkin 2013-05-16 11:16 ` Michael S. Tsirkin 2013-05-16 11:16 ` Michael S. Tsirkin 2013-05-16 11:16 ` Michael S. Tsirkin 2013-05-16 18:40 ` Peter Zijlstra 2013-05-16 18:40 ` Peter Zijlstra 2013-05-16 18:40 ` Peter Zijlstra 2013-05-16 18:40 ` Peter Zijlstra 2013-05-16 18:40 ` Peter Zijlstra 2013-05-19 9:35 ` Michael S. Tsirkin 2013-05-19 9:35 ` Michael S. Tsirkin 2013-05-19 9:35 ` Michael S. Tsirkin 2013-05-19 9:35 ` Michael S. Tsirkin 2013-05-19 9:35 ` Michael S. Tsirkin 2013-05-19 12:34 ` Steven Rostedt 2013-05-19 12:34 ` Steven Rostedt 2013-05-19 12:34 ` Steven Rostedt 2013-05-19 12:34 ` Steven Rostedt 2013-05-19 12:34 ` Steven Rostedt 2013-05-19 13:34 ` Michael S. Tsirkin 2013-05-19 13:34 ` Michael S. Tsirkin 2013-05-19 13:34 ` Michael S. Tsirkin 2013-05-19 13:34 ` Michael S. Tsirkin 2013-05-19 13:34 ` Michael S. Tsirkin 2013-05-19 16:06 ` Steven Rostedt 2013-05-19 16:06 ` Steven Rostedt 2013-05-19 16:06 ` Steven Rostedt 2013-05-19 16:06 ` Steven Rostedt 2013-05-19 16:06 ` Steven Rostedt 2013-05-19 16:40 ` Michael S. Tsirkin 2013-05-19 16:40 ` Michael S. Tsirkin 2013-05-19 16:40 ` Michael S. Tsirkin 2013-05-19 16:40 ` Michael S. Tsirkin 2013-05-19 16:40 ` Michael S. Tsirkin 2013-05-19 20:23 ` Steven Rostedt 2013-05-19 20:23 ` Steven Rostedt 2013-05-19 20:23 ` Steven Rostedt 2013-05-19 20:23 ` Steven Rostedt 2013-05-19 20:23 ` Steven Rostedt 2013-05-19 20:35 ` Michael S. Tsirkin 2013-05-19 20:35 ` Michael S. Tsirkin 2013-05-19 20:35 ` Michael S. Tsirkin 2013-05-19 20:35 ` Michael S. Tsirkin 2013-05-19 20:35 ` Michael S. Tsirkin 2013-05-21 11:18 ` Peter Zijlstra 2013-05-21 11:18 ` Peter Zijlstra 2013-05-21 11:18 ` Peter Zijlstra 2013-05-21 11:18 ` Peter Zijlstra 2013-05-21 11:21 ` Peter Zijlstra 2013-05-21 11:21 ` Peter Zijlstra 2013-05-21 11:21 ` Peter Zijlstra 2013-05-21 11:21 ` Peter Zijlstra 2013-05-21 11:57 ` Peter Zijlstra 2013-05-21 11:57 ` Peter Zijlstra 2013-05-21 11:57 ` Peter Zijlstra 2013-05-21 11:57 ` Peter Zijlstra 2013-05-21 13:28 ` Michael S. Tsirkin 2013-05-21 13:28 ` Michael S. Tsirkin 2013-05-22 9:47 ` Michael S. Tsirkin 2013-05-22 9:47 ` Michael S. Tsirkin 2013-05-22 9:47 ` Michael S. Tsirkin 2013-05-22 9:47 ` Michael S. Tsirkin 2013-05-22 9:47 ` Michael S. Tsirkin 2013-05-22 10:16 ` Peter Zijlstra 2013-05-22 10:16 ` Peter Zijlstra 2013-05-22 10:16 ` Peter Zijlstra 2013-05-22 10:16 ` Peter Zijlstra 2013-05-22 20:38 ` Michael S. Tsirkin 2013-05-22 20:38 ` Michael S. Tsirkin 2013-05-22 20:38 ` Michael S. Tsirkin 2013-05-22 20:38 ` Michael S. Tsirkin 2013-05-22 20:38 ` Michael S. Tsirkin 2013-05-22 20:36 ` Michael S. Tsirkin 2013-05-22 20:36 ` Michael S. Tsirkin 2013-05-22 20:36 ` Michael S. Tsirkin 2013-05-22 20:36 ` Michael S. Tsirkin 2013-05-22 20:36 ` Michael S. Tsirkin 2013-05-22 9:25 ` [PATCH v2 00/10] uaccess: better might_sleep/might_fault behavior Arnd Bergmann 2013-05-22 9:25 ` Arnd Bergmann 2013-05-22 9:25 ` Arnd Bergmann 2013-05-22 9:25 ` Arnd Bergmann 2013-05-22 9:58 ` Michael S. Tsirkin 2013-05-22 9:58 ` Michael S. Tsirkin 2013-05-22 9:58 ` Michael S. Tsirkin 2013-05-22 9:58 ` Michael S. Tsirkin 2013-05-22 9:58 ` Michael S. Tsirkin 2013-05-22 10:19 ` Peter Zijlstra 2013-05-22 10:19 ` Peter Zijlstra 2013-05-22 10:19 ` Peter Zijlstra 2013-05-22 10:19 ` Peter Zijlstra 2013-05-22 11:07 ` Michael S. Tsirkin 2013-05-22 11:07 ` Michael S. Tsirkin 2013-05-22 11:07 ` Michael S. Tsirkin 2013-05-22 11:07 ` Michael S. Tsirkin 2013-05-22 11:07 ` Michael S. Tsirkin 2013-05-22 11:27 ` Peter Zijlstra 2013-05-22 11:27 ` Peter Zijlstra 2013-05-22 11:27 ` Peter Zijlstra 2013-05-22 11:27 ` Peter Zijlstra 2013-05-22 11:27 ` Peter Zijlstra 2013-05-22 13:41 ` Russell King - ARM Linux 2013-05-22 13:41 ` Russell King - ARM Linux 2013-05-22 13:41 ` Russell King - ARM Linux 2013-05-22 13:41 ` Russell King - ARM Linux 2013-05-22 14:04 ` Arnd Bergmann 2013-05-22 14:04 ` Arnd Bergmann 2013-05-22 14:04 ` Arnd Bergmann 2013-05-22 14:04 ` Arnd Bergmann 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-22 14:44 ` Michael S. Tsirkin 2013-05-24 14:17 ` [PATCH v3 01/11] asm-generic: uaccess s/might_sleep/might_fault/ Michael S. Tsirkin 2013-05-24 14:17 ` [PATCH v3 02/11] arm64: " Michael S. Tsirkin 2013-05-24 14:17 ` Michael S. Tsirkin 2013-05-24 14:17 ` [PATCH v3 03/11] frv: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 04/11] m32r: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 05/11] microblaze: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 06/11] mn10300: " Michael S. Tsirkin 2013-05-24 14:18 ` Michael S. Tsirkin [this message] 2013-05-24 14:18 ` [PATCH v3 07/11] powerpc: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 08/11] tile: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 09/11] x86: " Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 10/11] kernel: drop voluntary schedule from might_fault Michael S. Tsirkin 2013-05-24 14:18 ` Michael S. Tsirkin 2013-05-24 14:18 ` [PATCH v3 11/11] kernel: uaccess in atomic with pagefault_disable Michael S. Tsirkin 2013-05-24 14:18 ` Michael S. Tsirkin
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=1369404522-12927-7-git-send-email-mst@redhat.com \ --to=mst@redhat.com \ --cc=benh@kernel.crashing.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=paulus@samba.org \ /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.