diff mbox

[1/1] board/arcturus/ppc-ucp1020 new gcc-6.x Linux kernel build fix

Message ID 20170713163817.7114-1-oleks@arcturusnetworks.com
State Accepted
Headers show

Commit Message

Oleksandr G Zhadan July 13, 2017, 4:38 p.m. UTC
Add the Linux-3.18 patch "powerpc/ptrace: Fix out of bounds array access warning" to the board/arcturus/ppc-ucp1020 BSP

" gcc-6 correctly warns about a out of bounds access

arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
        offsetof(struct thread_fp_state, fpr[32][0]));
                        ^

check the end of array instead of beginning of next element to fix this"

Signed-off-by: Oleksandr Zhadan <oleks@arcturusnetworks.com>
---
 ...ce-Fix-out-of-bounds-array-access-warning.patch | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch

Comments

Thomas Petazzoni July 13, 2017, 5:30 p.m. UTC | #1
Hello,

On Thu, 13 Jul 2017 12:38:17 -0400, Oleksandr Zhadan wrote:
> Add the Linux-3.18 patch "powerpc/ptrace: Fix out of bounds array access warning" to the board/arcturus/ppc-ucp1020 BSP
> 
> " gcc-6 correctly warns about a out of bounds access
> 
> arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
>         offsetof(struct thread_fp_state, fpr[32][0]));
>                         ^
> 
> check the end of array instead of beginning of next element to fix this"
> 
> Signed-off-by: Oleksandr Zhadan <oleks@arcturusnetworks.com>

Do you have a good reason to stick with the 4.1 Linux kernel in this
defconfig, instead of upgrading to a newer kernel version that has
commit 1e407ee3b21f981140491d5b8a36422979ca246f ? For example, using
Linux 4.9 would solve this.

Best regards,

Thomas
Oleksandr G Zhadan July 13, 2017, 7:21 p.m. UTC | #2
Hello,
On 07/13/2017 01:30 PM, Thomas Petazzoni wrote:
> Hello,
>
> On Thu, 13 Jul 2017 12:38:17 -0400, Oleksandr Zhadan wrote:
>> Add the Linux-3.18 patch "powerpc/ptrace: Fix out of bounds array access warning" to the board/arcturus/ppc-ucp1020 BSP
>>
>> " gcc-6 correctly warns about a out of bounds access
>>
>> arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
>>          offsetof(struct thread_fp_state, fpr[32][0]));
>>                          ^
>>
>> check the end of array instead of beginning of next element to fix this"
>>
>> Signed-off-by: Oleksandr Zhadan <oleks@arcturusnetworks.com>
> Do you have a good reason to stick with the 4.1 Linux kernel in this
> defconfig, instead of upgrading to a newer kernel version that has
> commit 1e407ee3b21f981140491d5b8a36422979ca246f ? For example, using
> Linux 4.9 would solve this.

Yes, uprating to newer kernel is on our list. And we know that it is a 
fix there.
But, It will take some time to re-test all ours and our existing 
customers apps. And as usually we do not have that time now ;-).
For now we would like to fix uCP1020 buildroot build in any way: or by 
downgrading GCC or with that Linux-3.18 patch.
Please apply any of the patches and when we will be ready we will send 
another, new "kernel patch".

Thank you,

Oleks

>
> Best regards,
>
> Thomas
Thomas Petazzoni July 14, 2017, 7:22 a.m. UTC | #3
Hello,

On Thu, 13 Jul 2017 15:21:08 -0400, Oleksandr G Zhadan wrote:

> Yes, uprating to newer kernel is on our list. And we know that it is a 
> fix there.
> But, It will take some time to re-test all ours and our existing 
> customers apps. And as usually we do not have that time now ;-).
> For now we would like to fix uCP1020 buildroot build in any way: or by 
> downgrading GCC or with that Linux-3.18 patch.
> Please apply any of the patches and when we will be ready we will send 
> another, new "kernel patch".

OK. As long as upgrading to a newer kernel is on your list, I'm fine
with having this patch as a temporary solution.

Thanks!

Thomas
Oleksandr G Zhadan July 14, 2017, 12:59 p.m. UTC | #4
Hello,

Thank you Thomas !
Now will wait for your decision on other path: [Buildroot][PATCH v4 1/1]
configs/arcturus_ucls1012a: new defconfig

Kind Regards,

Oleks

On 07/14/2017 03:22 AM, Thomas Petazzoni wrote:
> Hello,
>
> On Thu, 13 Jul 2017 15:21:08 -0400, Oleksandr G Zhadan wrote:
>
>> Yes, uprating to newer kernel is on our list. And we know that it is a
>> fix there.
>> But, It will take some time to re-test all ours and our existing
>> customers apps. And as usually we do not have that time now ;-).
>> For now we would like to fix uCP1020 buildroot build in any way: or by
>> downgrading GCC or with that Linux-3.18 patch.
>> Please apply any of the patches and when we will be ready we will send
>> another, new "kernel patch".
> OK. As long as upgrading to a newer kernel is on your list, I'm fine
> with having this patch as a temporary solution.
>
> Thanks!
>
> Thomas
Thomas Petazzoni July 15, 2017, 8:16 a.m. UTC | #5
Hello,

On Thu, 13 Jul 2017 12:38:17 -0400, Oleksandr Zhadan wrote:
> Add the Linux-3.18 patch "powerpc/ptrace: Fix out of bounds array access warning" to the board/arcturus/ppc-ucp1020 BSP
> 
> " gcc-6 correctly warns about a out of bounds access
> 
> arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
>         offsetof(struct thread_fp_state, fpr[32][0]));
>                         ^
> 
> check the end of array instead of beginning of next element to fix this"
> 
> Signed-off-by: Oleksandr Zhadan <oleks@arcturusnetworks.com>
> ---
>  ...ce-Fix-out-of-bounds-array-access-warning.patch | 52 ++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
>  create mode 100644 board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch

Applied to master, after tweaking the commit log. Thanks!

Thomas
diff mbox

Patch

diff --git a/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch b/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch
new file mode 100644
index 000000000..29d2b71fa
--- /dev/null
+++ b/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch
@@ -0,0 +1,52 @@ 
+From 35b7ce4f8f290794d3b89db7461e8c568b5defa1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Apr 2016 09:19:17 -0700
+Subject: powerpc/ptrace: Fix out of bounds array access warning
+
+commit 1e407ee3b21f981140491d5b8a36422979ca246f upstream.
+
+gcc-6 correctly warns about a out of bounds access
+
+arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
+        offsetof(struct thread_fp_state, fpr[32][0]));
+                        ^
+
+check the end of array instead of beginning of next element to fix this
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: Segher Boessenkool <segher@kernel.crashing.org>
+Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Acked-by: Olof Johansson <olof@lixom.net>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kernel/ptrace.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
+index f21897b..93f200f 100644
+--- a/arch/powerpc/kernel/ptrace.c
++++ b/arch/powerpc/kernel/ptrace.c
+@@ -376,7 +376,7 @@ static int fpr_get(struct task_struct *target, const struct user_regset *regset,
+ 
+ #else
+ 	BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) !=
+-		     offsetof(struct thread_fp_state, fpr[32][0]));
++		     offsetof(struct thread_fp_state, fpr[32]));
+ 
+ 	return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
+ 				   &target->thread.fp_state, 0, -1);
+@@ -404,7 +404,7 @@ static int fpr_set(struct task_struct *target, const struct user_regset *regset,
+ 	return 0;
+ #else
+ 	BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) !=
+-		     offsetof(struct thread_fp_state, fpr[32][0]));
++		     offsetof(struct thread_fp_state, fpr[32]));
+ 
+ 	return user_regset_copyin(&pos, &count, &kbuf, &ubuf,
+ 				  &target->thread.fp_state, 0, -1);
+-- 
+cgit v1.1