Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to 4.4.299 and LA.UM.9.2.r1-03700-SDMxx0.0 #11

Merged
merged 79 commits into from
Jan 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
c8f02f7
msm: adsprpc: Handle UAF in process shell memory
Jul 16, 2021
05f4010
Merge "msm: adsprpc: Handle UAF in process shell memory"
Jul 18, 2021
5c9ee54
soc: qcom: Add check to handle out of bound access
Jun 14, 2021
0e53eed
uapi: Add UAPI headers for slatecom_interface driver
I-n-o-k Aug 17, 2021
56a0f9b
Merge 0e53eed15ab18553324a86339c81708ece464eb3 on remote branch
Sep 13, 2021
4906843
msm: kgsl: Fix out of bound write in adreno_profile_submit_time
Sep 13, 2021
c4aaf36
Merge 49068436dc0b152c256677ce9ea635e5ef8a5ea8 on remote branch
Nov 1, 2021
ea55b37
nfc: fix segfault in nfc_genl_dump_devices_done
tstruk Dec 8, 2021
3125c97
parisc/agp: Annotate parisc agp init functions with __init
hdeller Nov 26, 2021
c69fa3b
i2c: rk3x: Handle a spurious start completion interrupt flag
Sep 24, 2021
c54a60c
net: netlink: af_netlink: Prevent empty skb by adding a check on len.
harshimogalapalli Nov 29, 2021
d6a8a0f
hwmon: (dell-smm) Fix warning on /proc/i8k creation error
Wer-Wolf Nov 12, 2021
6ff89cd
mac80211: send ADDBA requests using the tid/queue of the aggregation …
nbd168 Dec 2, 2021
23760c5
recordmcount.pl: look for jgnop instruction as well as bcrl on s390
jeromemarchand Dec 10, 2021
a48f6a2
dm btree remove: fix use after free in rebalance_children()
jthornber Nov 24, 2021
04a8d07
nfsd: fix use-after-free due to delegation race
Nov 29, 2021
22feeef
soc/tegra: fuse: Fix bitwise vs. logical OR warning
nathanchance Dec 10, 2021
ffe1695
igbvf: fix double free in `igbvf_probe`
FantasqueX Nov 13, 2021
2983866
USB: gadget: bRequestType is a bitfield, not a enum
gregkh Dec 14, 2021
814e040
PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error
Dec 14, 2021
9d4ded7
USB: serial: option: add Telit FN990 compositions
dnlplm Dec 10, 2021
ed5dc41
timekeeping: Really make sure wall_to_monotonic isn't positive
yuliao0214 Dec 13, 2021
8ed2f5d
net: systemport: Add global locking for descriptor lifecycle
ffainelli Dec 15, 2021
cd98c0b
net: lan78xx: Avoid unnecessary self assignment
nathanchance Sep 20, 2018
38c76c6
ARM: 8805/2: remove unneeded naked function usage
Nov 7, 2018
57871ae
Input: touchscreen - avoid bitwise vs logical OR warning
nathanchance Oct 15, 2021
3e04b9e
xen/blkfront: harden blkfront against event channel storms
jgross1 Dec 16, 2021
81900aa
xen/netfront: harden netfront against event channel storms
jgross1 Dec 16, 2021
c7eaa50
xen/console: harden hvc_xen against event channel storms
jgross1 Dec 16, 2021
0928efb
xen/netback: don't queue unlimited number of packages
jgross1 Nov 30, 2021
3d70a88
Linux 4.4.296
gregkh Dec 22, 2021
52fdb83
net: usb: lan78xx: add Allied Telesis AT29M2-AF
Dec 14, 2021
f48b93b
can: kvaser_usb: get CAN clock frequency from device
Dec 8, 2021
8684d7e
HID: holtek: fix mouse probing
bentiss Dec 20, 2021
1ced0a3
IB/qib: Fix memory leak in qib_user_sdma_queue_pkts()
JoseExposito Dec 8, 2021
8242791
qlcnic: potential dereference null pointer of rx_queue->page_ring
JiangJias Dec 17, 2021
71cea47
bonding: fix ad_actor_system option setting to default
ffmancera Dec 21, 2021
28f6499
drivers: net: smc911x: Check for error irq
JiangJias Dec 22, 2021
f20c86f
hwmon: (lm90) Fix usage of CONFIG2 register in detect function
groeck Nov 6, 2021
29533bb
ALSA: jack: Check the return value of kstrdup()
x2018 Dec 13, 2021
adf73f0
ALSA: drivers: opl3: Fix incorrect use of vp->state
ColinIanKing Dec 12, 2021
6be3251
ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling
ardbiesheuvel Dec 15, 2021
e29b328
xen/blkfront: fix bug in backported patch
jgross1 Dec 23, 2021
3d3d6f7
ax25: NPD bug when detaching AX25 device
f0rm2l1n Dec 17, 2021
b5b193d
hamradio: defer ax25 kfree after unregister_netdev
f0rm2l1n Nov 8, 2021
371a874
hamradio: improve the incomplete fix to avoid NPD
f0rm2l1n Dec 17, 2021
0bbdd62
phonet/pep: refuse to enable an unbound pipe
Dec 19, 2021
76d4299
Linux 4.4.297
gregkh Dec 29, 2021
e905622
platform/x86: apple-gmux: use resource_size() with res
Dec 14, 2021
11ade93
recordmcount.pl: fix typo in s390 mcount regex
hcahca Dec 23, 2021
7c573f3
selinux: initialize proto variable in selinux_ip_postroute_compat()
trixirt Dec 24, 2021
ce46aae
nfc: uapi: use kernel size_t to fix user-space builds
krzk Dec 26, 2021
f637d1e
uapi: fix linux/nfc.h userspace compilation errors
ldv-alt Dec 26, 2021
5721e8e
xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set.
matnyman Dec 21, 2021
f976dd7
usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear.
vpelletier Dec 18, 2021
4b76f13
scsi: vmw_pvscsi: Set residual data length conditionally
YustasSwamp Dec 20, 2021
d2cb2bf
Input: appletouch - initialize work before device registration
pskrgag Dec 31, 2021
f5cfbc0
Input: spaceball - fix parsing of movement data packets
ewhac Dec 31, 2021
15579e1
net: fix use-after-free in tw_timer_handler
Dec 28, 2021
0dc4b95
Linux 4.4.298
gregkh Jan 5, 2022
26fe3eb
bpf, test: fix ld_abs + vlan push/pop stress test
borkmann Oct 20, 2016
aa8b23d
Bluetooth: btusb: Apply QCA Rome patches for some ATH3012 models
tiwai May 21, 2018
e4a7f9c
ieee802154: atusb: fix uninit value in atusb_set_extended_addr
pskrgag Jan 4, 2022
004e7cf
mac80211: initialize variable have_higher_than_11mbit
trixirt Dec 23, 2021
486a237
i40e: Fix incorrect netdev's real number of RX/TX queues
jjagielsk Dec 17, 2021
ca4b6a6
sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc
Jan 4, 2022
56adcda
xfs: map unwritten blocks in XFS_IOC_{ALLOC,FREE}SP just like fallocate
Dec 22, 2021
0f09796
rndis_host: support Hytera digital radios
thomastoye Jan 1, 2022
172b3f5
phonet: refcount leak in pep_sock_accep
HBh25Y Dec 9, 2021
e514d2b
scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown()
lixiaokeng Dec 20, 2021
b77479c
ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate
wizhaoredhat Dec 23, 2021
09294ea
net: udp: fix alignment problem in udp4_seq_show()
yangxingwu Dec 27, 2021
57acc5e
mISDN: change function names to avoid conflicts
Dec 28, 2021
1eaf6c2
power: reset: ltc2952: Fix use of floating point literals
nathanchance Nov 5, 2021
b0ee523
Linux 4.4.299
gregkh Jan 11, 2022
8b9b5a4
Merge tag 'v4.4.299' into lineage-17.1
Flamefire Jan 23, 2022
67594ee
Merge tag 'LA.UM.9.2.r1-03700-SDMxx0.0' into lineage-17.1-update
Flamefire Jan 23, 2022
92d854c
Further reduce initial screen brightness
Flamefire Jan 23, 2022
fc9d9b3
Update WireGuard to v1.0.20211208
Flamefire Jan 23, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions Documentation/networking/bonding.txt
Original file line number Diff line number Diff line change
Expand Up @@ -191,11 +191,12 @@ ad_actor_sys_prio
ad_actor_system

In an AD system, this specifies the mac-address for the actor in
protocol packet exchanges (LACPDUs). The value cannot be NULL or
multicast. It is preferred to have the local-admin bit set for this
mac but driver does not enforce it. If the value is not given then
system defaults to using the masters' mac address as actors' system
address.
protocol packet exchanges (LACPDUs). The value cannot be a multicast
address. If the all-zeroes MAC is specified, bonding will internally
use the MAC of the bond itself. It is preferred to have the
local-admin bit set for this mac but driver does not enforce it. If
the value is not given then system defaults to using the masters'
mac address as actors' system address.

This parameter has effect only in 802.3ad mode and is available through
SysFs interface.
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
VERSION = 4
PATCHLEVEL = 4
SUBLEVEL = 295
SUBLEVEL = 299
EXTRAVERSION =
NAME = Blurry Fish Butt

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/boot/dts/qcom/msm8998-yoshino-common.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -3625,7 +3625,7 @@
linux,name = "wled";
qcom,fs-curr-ua = <24000>;
qcom,led-strings-list = [00 01 02];
somc,init-br-ua = <1200>;
somc,init-br-ua = <800>;
somc-s1,br-power-save-ua = <800>;
somc,bl-scale-enabled;
somc,area_count_table_size = <0>;
Expand Down
8 changes: 3 additions & 5 deletions arch/arm/kernel/entry-armv.S
Original file line number Diff line number Diff line change
Expand Up @@ -625,11 +625,9 @@ call_fpe:
tstne r0, #0x04000000 @ bit 26 set on both ARM and Thumb-2
reteq lr
and r8, r0, #0x00000f00 @ mask out CP number
THUMB( lsr r8, r8, #8 )
mov r7, #1
add r6, r10, #TI_USED_CP
ARM( strb r7, [r6, r8, lsr #8] ) @ set appropriate used_cp[]
THUMB( strb r7, [r6, r8] ) @ set appropriate used_cp[]
add r6, r10, r8, lsr #8 @ add used_cp[] array offset first
strb r7, [r6, #TI_USED_CP] @ set appropriate used_cp[]
#ifdef CONFIG_IWMMXT
@ Test if we need to give access to iWMMXt coprocessors
ldr r5, [r10, #TI_FLAGS]
Expand All @@ -638,7 +636,7 @@ call_fpe:
bcs iwmmxt_task_enable
#endif
ARM( add pc, pc, r8, lsr #6 )
THUMB( lsl r8, r8, #2 )
THUMB( lsr r8, r8, #6 )
THUMB( add pc, r8 )
nop

Expand Down
35 changes: 17 additions & 18 deletions arch/arm/mm/copypage-fa.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,26 +17,25 @@
/*
* Faraday optimised copy_user_page
*/
static void __naked
fa_copy_user_page(void *kto, const void *kfrom)
static void fa_copy_user_page(void *kto, const void *kfrom)
{
asm("\
stmfd sp!, {r4, lr} @ 2\n\
mov r2, %0 @ 1\n\
1: ldmia r1!, {r3, r4, ip, lr} @ 4\n\
stmia r0, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, r0, c7, c14, 1 @ 1 clean and invalidate D line\n\
add r0, r0, #16 @ 1\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
stmia r0, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, r0, c7, c14, 1 @ 1 clean and invalidate D line\n\
add r0, r0, #16 @ 1\n\
subs r2, r2, #1 @ 1\n\
int tmp;

asm volatile ("\
1: ldmia %1!, {r3, r4, ip, lr} @ 4\n\
stmia %0, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, %0, c7, c14, 1 @ 1 clean and invalidate D line\n\
add %0, %0, #16 @ 1\n\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
stmia %0, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, %0, c7, c14, 1 @ 1 clean and invalidate D line\n\
add %0, %0, #16 @ 1\n\
subs %2, %2, #1 @ 1\n\
bne 1b @ 1\n\
mcr p15, 0, r2, c7, c10, 4 @ 1 drain WB\n\
ldmfd sp!, {r4, pc} @ 3"
:
: "I" (PAGE_SIZE / 32));
mcr p15, 0, %2, c7, c10, 4 @ 1 drain WB"
: "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
: "2" (PAGE_SIZE / 32)
: "r3", "r4", "ip", "lr");
}

void fa_copy_user_highpage(struct page *to, struct page *from,
Expand Down
98 changes: 48 additions & 50 deletions arch/arm/mm/copypage-feroceon.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,58 +13,56 @@
#include <linux/init.h>
#include <linux/highmem.h>

static void __naked
feroceon_copy_user_page(void *kto, const void *kfrom)
static void feroceon_copy_user_page(void *kto, const void *kfrom)
{
asm("\
stmfd sp!, {r4-r9, lr} \n\
mov ip, %2 \n\
1: mov lr, r1 \n\
ldmia r1!, {r2 - r9} \n\
pld [lr, #32] \n\
pld [lr, #64] \n\
pld [lr, #96] \n\
pld [lr, #128] \n\
pld [lr, #160] \n\
pld [lr, #192] \n\
pld [lr, #224] \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
ldmia r1!, {r2 - r9} \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
stmia r0, {r2 - r9} \n\
subs ip, ip, #(32 * 8) \n\
mcr p15, 0, r0, c7, c14, 1 @ clean and invalidate D line\n\
add r0, r0, #32 \n\
int tmp;

asm volatile ("\
1: ldmia %1!, {r2 - r7, ip, lr} \n\
pld [%1, #0] \n\
pld [%1, #32] \n\
pld [%1, #64] \n\
pld [%1, #96] \n\
pld [%1, #128] \n\
pld [%1, #160] \n\
pld [%1, #192] \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
ldmia %1!, {r2 - r7, ip, lr} \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
stmia %0, {r2 - r7, ip, lr} \n\
subs %2, %2, #(32 * 8) \n\
mcr p15, 0, %0, c7, c14, 1 @ clean and invalidate D line\n\
add %0, %0, #32 \n\
bne 1b \n\
mcr p15, 0, ip, c7, c10, 4 @ drain WB\n\
ldmfd sp!, {r4-r9, pc}"
:
: "r" (kto), "r" (kfrom), "I" (PAGE_SIZE));
mcr p15, 0, %2, c7, c10, 4 @ drain WB"
: "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
: "2" (PAGE_SIZE)
: "r2", "r3", "r4", "r5", "r6", "r7", "ip", "lr");
}

void feroceon_copy_user_highpage(struct page *to, struct page *from,
Expand Down
19 changes: 9 additions & 10 deletions arch/arm/mm/copypage-v4mc.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,11 @@ static DEFINE_RAW_SPINLOCK(minicache_lock);
* instruction. If your processor does not supply this, you have to write your
* own copy_user_highpage that does the right thing.
*/
static void __naked
mc_copy_user_page(void *from, void *to)
static void mc_copy_user_page(void *from, void *to)
{
asm volatile(
"stmfd sp!, {r4, lr} @ 2\n\
mov r4, %2 @ 1\n\
int tmp;

asm volatile ("\
ldmia %0!, {r2, r3, ip, lr} @ 4\n\
1: mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\
stmia %1!, {r2, r3, ip, lr} @ 4\n\
Expand All @@ -55,13 +54,13 @@ mc_copy_user_page(void *from, void *to)
mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\
stmia %1!, {r2, r3, ip, lr} @ 4\n\
ldmia %0!, {r2, r3, ip, lr} @ 4\n\
subs r4, r4, #1 @ 1\n\
subs %2, %2, #1 @ 1\n\
stmia %1!, {r2, r3, ip, lr} @ 4\n\
ldmneia %0!, {r2, r3, ip, lr} @ 4\n\
bne 1b @ 1\n\
ldmfd sp!, {r4, pc} @ 3"
:
: "r" (from), "r" (to), "I" (PAGE_SIZE / 64));
bne 1b @ "
: "+&r" (from), "+&r" (to), "=&r" (tmp)
: "2" (PAGE_SIZE / 64)
: "r2", "r3", "ip", "lr");
}

void v4_mc_copy_user_highpage(struct page *to, struct page *from,
Expand Down
41 changes: 20 additions & 21 deletions arch/arm/mm/copypage-v4wb.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,29 +22,28 @@
* instruction. If your processor does not supply this, you have to write your
* own copy_user_highpage that does the right thing.
*/
static void __naked
v4wb_copy_user_page(void *kto, const void *kfrom)
static void v4wb_copy_user_page(void *kto, const void *kfrom)
{
asm("\
stmfd sp!, {r4, lr} @ 2\n\
mov r2, %2 @ 1\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
1: mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, r0, c7, c6, 1 @ 1 invalidate D line\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
subs r2, r2, #1 @ 1\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmneia r1!, {r3, r4, ip, lr} @ 4\n\
int tmp;

asm volatile ("\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
1: mcr p15, 0, %0, c7, c6, 1 @ 1 invalidate D line\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4+1\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
mcr p15, 0, %0, c7, c6, 1 @ 1 invalidate D line\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
subs %2, %2, #1 @ 1\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmneia %1!, {r3, r4, ip, lr} @ 4\n\
bne 1b @ 1\n\
mcr p15, 0, r1, c7, c10, 4 @ 1 drain WB\n\
ldmfd sp!, {r4, pc} @ 3"
:
: "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
mcr p15, 0, %1, c7, c10, 4 @ 1 drain WB"
: "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
: "2" (PAGE_SIZE / 64)
: "r3", "r4", "ip", "lr");
}

void v4wb_copy_user_highpage(struct page *to, struct page *from,
Expand Down
37 changes: 18 additions & 19 deletions arch/arm/mm/copypage-v4wt.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,26 @@
* dirty data in the cache. However, we do have to ensure that
* subsequent reads are up to date.
*/
static void __naked
v4wt_copy_user_page(void *kto, const void *kfrom)
static void v4wt_copy_user_page(void *kto, const void *kfrom)
{
asm("\
stmfd sp!, {r4, lr} @ 2\n\
mov r2, %2 @ 1\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
1: stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4+1\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmia r1!, {r3, r4, ip, lr} @ 4\n\
subs r2, r2, #1 @ 1\n\
stmia r0!, {r3, r4, ip, lr} @ 4\n\
ldmneia r1!, {r3, r4, ip, lr} @ 4\n\
int tmp;

asm volatile ("\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
1: stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4+1\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmia %1!, {r3, r4, ip, lr} @ 4\n\
subs %2, %2, #1 @ 1\n\
stmia %0!, {r3, r4, ip, lr} @ 4\n\
ldmneia %1!, {r3, r4, ip, lr} @ 4\n\
bne 1b @ 1\n\
mcr p15, 0, r2, c7, c7, 0 @ flush ID cache\n\
ldmfd sp!, {r4, pc} @ 3"
:
: "r" (kto), "r" (kfrom), "I" (PAGE_SIZE / 64));
mcr p15, 0, %2, c7, c7, 0 @ flush ID cache"
: "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
: "2" (PAGE_SIZE / 64)
: "r3", "r4", "ip", "lr");
}

void v4wt_copy_user_highpage(struct page *to, struct page *from,
Expand Down
Loading