From: Greg Kroah-Hartman Date: Fri, 11 Oct 2013 22:15:20 +0000 (-0700) Subject: remove powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch X-Git-Tag: v3.0.100~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=05722f989b735305f4a39a5ce13693d364fd2a08;p=thirdparty%2Fkernel%2Fstable-queue.git remove powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch --- diff --git a/queue-3.0/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch b/queue-3.0/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch deleted file mode 100644 index 77c3e1c5a64..00000000000 --- a/queue-3.0/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 8f21bd0090052e740944f9397e2be5ac7957ded7 Mon Sep 17 00:00:00 2001 -From: "Paul E. McKenney" -Date: Tue, 1 Oct 2013 17:11:35 +1000 -Subject: powerpc: Restore registers on error exit from csum_partial_copy_generic() - -From: "Paul E. McKenney" - -commit 8f21bd0090052e740944f9397e2be5ac7957ded7 upstream. - -The csum_partial_copy_generic() function saves the PowerPC non-volatile -r14, r15, and r16 registers for the main checksum-and-copy loop. -Unfortunately, it fails to restore them upon error exit from this loop, -which results in silent corruption of these registers in the presumably -rare event of an access exception within that loop. - -This commit therefore restores these register on error exit from the loop. - -Signed-off-by: Paul E. McKenney -Signed-off-by: Anton Blanchard -Signed-off-by: Benjamin Herrenschmidt -Signed-off-by: Greg Kroah-Hartman - ---- - arch/powerpc/lib/checksum_64.S | 54 ++++++++++++++++++++++++++++++----------- - 1 file changed, 40 insertions(+), 14 deletions(-) - ---- a/arch/powerpc/lib/checksum_64.S -+++ b/arch/powerpc/lib/checksum_64.S -@@ -229,19 +229,35 @@ _GLOBAL(csum_partial) - blr - - -- .macro source -+ .macro srcnr - 100: - .section __ex_table,"a" - .align 3 -- .llong 100b,.Lsrc_error -+ .llong 100b,.Lsrc_error_nr - .previous - .endm - -- .macro dest -+ .macro source -+150: -+ .section __ex_table,"a" -+ .align 3 -+ .llong 150b,.Lsrc_error -+ .previous -+ .endm -+ -+ .macro dstnr - 200: - .section __ex_table,"a" - .align 3 -- .llong 200b,.Ldest_error -+ .llong 200b,.Ldest_error_nr -+ .previous -+ .endm -+ -+ .macro dest -+250: -+ .section __ex_table,"a" -+ .align 3 -+ .llong 250b,.Ldest_error - .previous - .endm - -@@ -277,11 +293,11 @@ _GLOBAL(csum_partial_copy_generic) - mtctr r6 - - 1: --source; lhz r6,0(r3) /* align to doubleword */ -+srcnr; lhz r6,0(r3) /* align to doubleword */ - subi r5,r5,2 - addi r3,r3,2 - adde r0,r0,r6 --dest; sth r6,0(r4) -+dstnr; sth r6,0(r4) - addi r4,r4,2 - bdnz 1b - -@@ -395,10 +411,10 @@ dest; std r16,56(r4) - - mtctr r6 - 3: --source; ld r6,0(r3) -+srcnr; ld r6,0(r3) - addi r3,r3,8 - adde r0,r0,r6 --dest; std r6,0(r4) -+dstnr; std r6,0(r4) - addi r4,r4,8 - bdnz 3b - -@@ -408,10 +424,10 @@ dest; std r6,0(r4) - srdi. r6,r5,2 - beq .Lcopy_tail_halfword - --source; lwz r6,0(r3) -+srcnr; lwz r6,0(r3) - addi r3,r3,4 - adde r0,r0,r6 --dest; stw r6,0(r4) -+dstnr; stw r6,0(r4) - addi r4,r4,4 - subi r5,r5,4 - -@@ -419,10 +435,10 @@ dest; stw r6,0(r4) - srdi. r6,r5,1 - beq .Lcopy_tail_byte - --source; lhz r6,0(r3) -+srcnr; lhz r6,0(r3) - addi r3,r3,2 - adde r0,r0,r6 --dest; sth r6,0(r4) -+dstnr; sth r6,0(r4) - addi r4,r4,2 - subi r5,r5,2 - -@@ -430,10 +446,10 @@ dest; sth r6,0(r4) - andi. r6,r5,1 - beq .Lcopy_finish - --source; lbz r6,0(r3) -+srcnr; lbz r6,0(r3) - sldi r9,r6,8 /* Pad the byte out to 16 bits */ - adde r0,r0,r9 --dest; stb r6,0(r4) -+dstnr; stb r6,0(r4) - - .Lcopy_finish: - addze r0,r0 /* add in final carry */ -@@ -443,6 +459,11 @@ dest; stb r6,0(r4) - blr - - .Lsrc_error: -+ ld r14,STK_REG(R14)(r1) -+ ld r15,STK_REG(R15)(r1) -+ ld r16,STK_REG(R16)(r1) -+ addi r1,r1,STACKFRAMESIZE -+.Lsrc_error_nr: - cmpdi 0,r7,0 - beqlr - li r6,-EFAULT -@@ -450,6 +471,11 @@ dest; stb r6,0(r4) - blr - - .Ldest_error: -+ ld r14,STK_REG(R14)(r1) -+ ld r15,STK_REG(R15)(r1) -+ ld r16,STK_REG(R16)(r1) -+ addi r1,r1,STACKFRAMESIZE -+.Ldest_error_nr: - cmpdi 0,r8,0 - beqlr - li r6,-EFAULT diff --git a/queue-3.0/series b/queue-3.0/series index a82cf84d0da..537ac7ea2fb 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -19,7 +19,6 @@ asoc-88pm860x-array-overflow-in-snd_soc_put_volsw_2r_st.patch powerpc-iommu-use-gfp_kernel-instead-of-gfp_atomic-in-iommu_init_table.patch powerpc-vio-fix-modalias_show-return-values.patch powerpc-fix-parameter-clobber-in-csum_partial_copy_generic.patch -powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch esp_scsi-fix-tag-state-corruption-when-autosensing.patch sparc64-fix-itlb-handler-of-null-page.patch sparc64-remove-rwsem-export-leftovers.patch diff --git a/queue-3.4/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch b/queue-3.4/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch deleted file mode 100644 index 77c3e1c5a64..00000000000 --- a/queue-3.4/powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 8f21bd0090052e740944f9397e2be5ac7957ded7 Mon Sep 17 00:00:00 2001 -From: "Paul E. McKenney" -Date: Tue, 1 Oct 2013 17:11:35 +1000 -Subject: powerpc: Restore registers on error exit from csum_partial_copy_generic() - -From: "Paul E. McKenney" - -commit 8f21bd0090052e740944f9397e2be5ac7957ded7 upstream. - -The csum_partial_copy_generic() function saves the PowerPC non-volatile -r14, r15, and r16 registers for the main checksum-and-copy loop. -Unfortunately, it fails to restore them upon error exit from this loop, -which results in silent corruption of these registers in the presumably -rare event of an access exception within that loop. - -This commit therefore restores these register on error exit from the loop. - -Signed-off-by: Paul E. McKenney -Signed-off-by: Anton Blanchard -Signed-off-by: Benjamin Herrenschmidt -Signed-off-by: Greg Kroah-Hartman - ---- - arch/powerpc/lib/checksum_64.S | 54 ++++++++++++++++++++++++++++++----------- - 1 file changed, 40 insertions(+), 14 deletions(-) - ---- a/arch/powerpc/lib/checksum_64.S -+++ b/arch/powerpc/lib/checksum_64.S -@@ -229,19 +229,35 @@ _GLOBAL(csum_partial) - blr - - -- .macro source -+ .macro srcnr - 100: - .section __ex_table,"a" - .align 3 -- .llong 100b,.Lsrc_error -+ .llong 100b,.Lsrc_error_nr - .previous - .endm - -- .macro dest -+ .macro source -+150: -+ .section __ex_table,"a" -+ .align 3 -+ .llong 150b,.Lsrc_error -+ .previous -+ .endm -+ -+ .macro dstnr - 200: - .section __ex_table,"a" - .align 3 -- .llong 200b,.Ldest_error -+ .llong 200b,.Ldest_error_nr -+ .previous -+ .endm -+ -+ .macro dest -+250: -+ .section __ex_table,"a" -+ .align 3 -+ .llong 250b,.Ldest_error - .previous - .endm - -@@ -277,11 +293,11 @@ _GLOBAL(csum_partial_copy_generic) - mtctr r6 - - 1: --source; lhz r6,0(r3) /* align to doubleword */ -+srcnr; lhz r6,0(r3) /* align to doubleword */ - subi r5,r5,2 - addi r3,r3,2 - adde r0,r0,r6 --dest; sth r6,0(r4) -+dstnr; sth r6,0(r4) - addi r4,r4,2 - bdnz 1b - -@@ -395,10 +411,10 @@ dest; std r16,56(r4) - - mtctr r6 - 3: --source; ld r6,0(r3) -+srcnr; ld r6,0(r3) - addi r3,r3,8 - adde r0,r0,r6 --dest; std r6,0(r4) -+dstnr; std r6,0(r4) - addi r4,r4,8 - bdnz 3b - -@@ -408,10 +424,10 @@ dest; std r6,0(r4) - srdi. r6,r5,2 - beq .Lcopy_tail_halfword - --source; lwz r6,0(r3) -+srcnr; lwz r6,0(r3) - addi r3,r3,4 - adde r0,r0,r6 --dest; stw r6,0(r4) -+dstnr; stw r6,0(r4) - addi r4,r4,4 - subi r5,r5,4 - -@@ -419,10 +435,10 @@ dest; stw r6,0(r4) - srdi. r6,r5,1 - beq .Lcopy_tail_byte - --source; lhz r6,0(r3) -+srcnr; lhz r6,0(r3) - addi r3,r3,2 - adde r0,r0,r6 --dest; sth r6,0(r4) -+dstnr; sth r6,0(r4) - addi r4,r4,2 - subi r5,r5,2 - -@@ -430,10 +446,10 @@ dest; sth r6,0(r4) - andi. r6,r5,1 - beq .Lcopy_finish - --source; lbz r6,0(r3) -+srcnr; lbz r6,0(r3) - sldi r9,r6,8 /* Pad the byte out to 16 bits */ - adde r0,r0,r9 --dest; stb r6,0(r4) -+dstnr; stb r6,0(r4) - - .Lcopy_finish: - addze r0,r0 /* add in final carry */ -@@ -443,6 +459,11 @@ dest; stb r6,0(r4) - blr - - .Lsrc_error: -+ ld r14,STK_REG(R14)(r1) -+ ld r15,STK_REG(R15)(r1) -+ ld r16,STK_REG(R16)(r1) -+ addi r1,r1,STACKFRAMESIZE -+.Lsrc_error_nr: - cmpdi 0,r7,0 - beqlr - li r6,-EFAULT -@@ -450,6 +471,11 @@ dest; stb r6,0(r4) - blr - - .Ldest_error: -+ ld r14,STK_REG(R14)(r1) -+ ld r15,STK_REG(R15)(r1) -+ ld r16,STK_REG(R16)(r1) -+ addi r1,r1,STACKFRAMESIZE -+.Ldest_error_nr: - cmpdi 0,r8,0 - beqlr - li r6,-EFAULT diff --git a/queue-3.4/series b/queue-3.4/series index e4994e01ed8..af9fd99cad3 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -22,7 +22,6 @@ asoc-88pm860x-array-overflow-in-snd_soc_put_volsw_2r_st.patch powerpc-iommu-use-gfp_kernel-instead-of-gfp_atomic-in-iommu_init_table.patch powerpc-vio-fix-modalias_show-return-values.patch powerpc-fix-parameter-clobber-in-csum_partial_copy_generic.patch -powerpc-restore-registers-on-error-exit-from-csum_partial_copy_generic.patch bluetooth-fix-security-level-for-peripheral-role.patch bluetooth-fix-encryption-key-size-for-peripheral-role.patch esp_scsi-fix-tag-state-corruption-when-autosensing.patch