Skip to content

Commit 5cc1111

Browse files
committed
fix unsafe read of Y in assembly kernel
1 parent 8d5a9c2 commit 5cc1111

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

kernel/x86_64/zsymv_L_sse2.S

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -452,11 +452,6 @@
452452

453453
MOVDDUP(4 * SIZE, A1, a1)
454454

455-
movsd 0 * SIZE(YY), yy1
456-
movhpd 1 * SIZE(YY), yy1
457-
movsd 2 * SIZE(YY), yy2
458-
movhpd 3 * SIZE(YY), yy2
459-
460455
movapd 8 * SIZE(XX), xtemp1
461456
movapd 10 * SIZE(XX), xtemp2
462457
movapd 12 * SIZE(XX), xtemp3
@@ -475,6 +470,12 @@
475470
MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2)
476471
ALIGN_3
477472

473+
.L12_prep:
474+
movsd 0 * SIZE(YY), yy1
475+
movhpd 1 * SIZE(YY), yy1
476+
movsd 2 * SIZE(YY), yy2
477+
movhpd 3 * SIZE(YY), yy2
478+
478479
.L12:
479480
movapd xtemp1, xt1
480481
mulpd a1, xt1
@@ -608,8 +609,6 @@
608609

609610
movlpd yy2, 6 * SIZE(YY)
610611
movhpd yy2, 7 * SIZE(YY)
611-
movsd 10 * SIZE(YY), yy2
612-
movhpd 11 * SIZE(YY), yy2
613612

614613
movapd xtemp2, xt1
615614
movapd 18 * SIZE(XX), xtemp2
@@ -621,16 +620,15 @@
621620

622621
movlpd yy1, 4 * SIZE(YY)
623622
movhpd yy1, 5 * SIZE(YY)
624-
movsd 8 * SIZE(YY), yy1
625-
movhpd 9 * SIZE(YY), yy1
626623

627624
subq $-16 * SIZE, XX
628625
addq $ 8 * SIZE, YY
629626
addq $ 8 * SIZE, A1
630627
addq $ 8 * SIZE, A2
631628

632629
decq I
633-
jg .L12
630+
jg .L12_prep
631+
jmp .L15
634632
ALIGN_3
635633

636634
.L14:
@@ -641,7 +639,6 @@
641639
jle .L16
642640

643641
MOVDDUP(6 * SIZE - (4 * SIZE), A2, a2)
644-
jmp .L15_pastcheck
645642

646643
.L15:
647644
movq M, I
@@ -650,6 +647,11 @@
650647
testq $2, I
651648
jle .L16
652649

650+
movsd 0 * SIZE(YY), yy1
651+
movhpd 1 * SIZE(YY), yy1
652+
movsd 2 * SIZE(YY), yy2
653+
movhpd 3 * SIZE(YY), yy2
654+
653655
.L15_pastcheck:
654656
movapd xtemp1, xt1
655657
mulpd a1, xt1
@@ -705,8 +707,6 @@
705707

706708
movlpd yy2, 2 * SIZE(YY)
707709
movhpd yy2, 3 * SIZE(YY)
708-
movsd 6 * SIZE(YY), yy2
709-
movhpd 7 * SIZE(YY), yy2
710710

711711
movapd xtemp2, xt1
712712
movapd 10 * SIZE(XX), xtemp2
@@ -717,8 +717,6 @@
717717

718718
movlpd yy1, 0 * SIZE(YY)
719719
movhpd yy1, 1 * SIZE(YY)
720-
movsd 4 * SIZE(YY), yy1
721-
movhpd 5 * SIZE(YY), yy1
722720

723721
addq $4 * SIZE, YY
724722
addq $4 * SIZE, A1
@@ -731,6 +729,9 @@
731729

732730
MOVDDUP(1 * SIZE, A1, a2)
733731

732+
movsd 0 * SIZE(YY), yy1
733+
movhpd 1 * SIZE(YY), yy1
734+
734735
movapd xtemp1, xt1
735736
mulpd a1, xt1
736737
mulpd atemp1, a1

0 commit comments

Comments
 (0)