Gentoo Archives: gentoo-commits

From: Mike Pagano <mpagano@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/linux-patches:5.4 commit in: /
Date: Sun, 11 Jul 2021 14:44:25
Message-Id: 1626014650.726b480df7252ebab605a27c2c06a8fdaf272f23.mpagano@gentoo
1 commit: 726b480df7252ebab605a27c2c06a8fdaf272f23
2 Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jul 11 14:44:10 2021 +0000
4 Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
5 CommitDate: Sun Jul 11 14:44:10 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=726b480d
7
8 Linux patch 5.4.131
9
10 Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
11
12 0000_README | 4 ++
13 1130_linux-5.4.131.patch | 158 +++++++++++++++++++++++++++++++++++++++++++++++
14 2 files changed, 162 insertions(+)
15
16 diff --git a/0000_README b/0000_README
17 index 016d1fd..85ef088 100644
18 --- a/0000_README
19 +++ b/0000_README
20 @@ -563,6 +563,10 @@ Patch: 1129_linux-5.4.130.patch
21 From: http://www.kernel.org
22 Desc: Linux 5.4.130
23
24 +Patch: 1130_linux-5.4.131.patch
25 +From: http://www.kernel.org
26 +Desc: Linux 5.4.131
27 +
28 Patch: 1500_XATTR_USER_PREFIX.patch
29 From: https://bugs.gentoo.org/show_bug.cgi?id=470644
30 Desc: Support for namespace user.pax.* on tmpfs.
31
32 diff --git a/1130_linux-5.4.131.patch b/1130_linux-5.4.131.patch
33 new file mode 100644
34 index 0000000..25a9563
35 --- /dev/null
36 +++ b/1130_linux-5.4.131.patch
37 @@ -0,0 +1,158 @@
38 +diff --git a/Makefile b/Makefile
39 +index 4256dd594d18c..5e8716dbbadca 100644
40 +--- a/Makefile
41 ++++ b/Makefile
42 +@@ -1,7 +1,7 @@
43 + # SPDX-License-Identifier: GPL-2.0
44 + VERSION = 5
45 + PATCHLEVEL = 4
46 +-SUBLEVEL = 130
47 ++SUBLEVEL = 131
48 + EXTRAVERSION =
49 + NAME = Kleptomaniac Octopus
50 +
51 +diff --git a/arch/s390/include/asm/stacktrace.h b/arch/s390/include/asm/stacktrace.h
52 +index 3679d224fd3c5..6836532f8d1a6 100644
53 +--- a/arch/s390/include/asm/stacktrace.h
54 ++++ b/arch/s390/include/asm/stacktrace.h
55 +@@ -79,12 +79,16 @@ struct stack_frame {
56 + CALL_ARGS_4(arg1, arg2, arg3, arg4); \
57 + register unsigned long r4 asm("6") = (unsigned long)(arg5)
58 +
59 +-#define CALL_FMT_0 "=&d" (r2) :
60 +-#define CALL_FMT_1 "+&d" (r2) :
61 +-#define CALL_FMT_2 CALL_FMT_1 "d" (r3),
62 +-#define CALL_FMT_3 CALL_FMT_2 "d" (r4),
63 +-#define CALL_FMT_4 CALL_FMT_3 "d" (r5),
64 +-#define CALL_FMT_5 CALL_FMT_4 "d" (r6),
65 ++/*
66 ++ * To keep this simple mark register 2-6 as being changed (volatile)
67 ++ * by the called function, even though register 6 is saved/nonvolatile.
68 ++ */
69 ++#define CALL_FMT_0 "=&d" (r2)
70 ++#define CALL_FMT_1 "+&d" (r2)
71 ++#define CALL_FMT_2 CALL_FMT_1, "+&d" (r3)
72 ++#define CALL_FMT_3 CALL_FMT_2, "+&d" (r4)
73 ++#define CALL_FMT_4 CALL_FMT_3, "+&d" (r5)
74 ++#define CALL_FMT_5 CALL_FMT_4, "+&d" (r6)
75 +
76 + #define CALL_CLOBBER_5 "0", "1", "14", "cc", "memory"
77 + #define CALL_CLOBBER_4 CALL_CLOBBER_5
78 +@@ -105,7 +109,7 @@ struct stack_frame {
79 + " brasl 14,%[_fn]\n" \
80 + " la 15,0(%[_prev])\n" \
81 + : [_prev] "=&a" (prev), CALL_FMT_##nr \
82 +- [_stack] "a" (stack), \
83 ++ : [_stack] "a" (stack), \
84 + [_bc] "i" (offsetof(struct stack_frame, back_chain)), \
85 + [_fn] "X" (fn) : CALL_CLOBBER_##nr); \
86 + r2; \
87 +diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
88 +index 074cd170912aa..7341d22ed04f1 100644
89 +--- a/arch/x86/kvm/svm.c
90 ++++ b/arch/x86/kvm/svm.c
91 +@@ -1794,9 +1794,25 @@ static void sev_asid_free(struct kvm *kvm)
92 + __sev_asid_free(sev->asid);
93 + }
94 +
95 +-static void sev_unbind_asid(struct kvm *kvm, unsigned int handle)
96 ++static void sev_decommission(unsigned int handle)
97 + {
98 + struct sev_data_decommission *decommission;
99 ++
100 ++ if (!handle)
101 ++ return;
102 ++
103 ++ decommission = kzalloc(sizeof(*decommission), GFP_KERNEL);
104 ++ if (!decommission)
105 ++ return;
106 ++
107 ++ decommission->handle = handle;
108 ++ sev_guest_decommission(decommission, NULL);
109 ++
110 ++ kfree(decommission);
111 ++}
112 ++
113 ++static void sev_unbind_asid(struct kvm *kvm, unsigned int handle)
114 ++{
115 + struct sev_data_deactivate *data;
116 +
117 + if (!handle)
118 +@@ -1814,15 +1830,7 @@ static void sev_unbind_asid(struct kvm *kvm, unsigned int handle)
119 + sev_guest_df_flush(NULL);
120 + kfree(data);
121 +
122 +- decommission = kzalloc(sizeof(*decommission), GFP_KERNEL);
123 +- if (!decommission)
124 +- return;
125 +-
126 +- /* decommission handle */
127 +- decommission->handle = handle;
128 +- sev_guest_decommission(decommission, NULL);
129 +-
130 +- kfree(decommission);
131 ++ sev_decommission(handle);
132 + }
133 +
134 + static struct page **sev_pin_memory(struct kvm *kvm, unsigned long uaddr,
135 +@@ -1960,6 +1968,7 @@ static void sev_vm_destroy(struct kvm *kvm)
136 + list_for_each_safe(pos, q, head) {
137 + __unregister_enc_region_locked(kvm,
138 + list_entry(pos, struct enc_region, list));
139 ++ cond_resched();
140 + }
141 + }
142 +
143 +@@ -6475,8 +6484,10 @@ static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
144 +
145 + /* Bind ASID to this guest */
146 + ret = sev_bind_asid(kvm, start->handle, error);
147 +- if (ret)
148 ++ if (ret) {
149 ++ sev_decommission(start->handle);
150 + goto e_free_session;
151 ++ }
152 +
153 + /* return handle to userspace */
154 + params.handle = start->handle;
155 +diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
156 +index 9cc77f0397797..de825df4abf6a 100644
157 +--- a/drivers/xen/events/events_base.c
158 ++++ b/drivers/xen/events/events_base.c
159 +@@ -525,6 +525,9 @@ static void xen_irq_lateeoi_locked(struct irq_info *info, bool spurious)
160 + }
161 +
162 + info->eoi_time = 0;
163 ++
164 ++ /* is_active hasn't been reset yet, do it now. */
165 ++ smp_store_release(&info->is_active, 0);
166 + do_unmask(info, EVT_MASK_REASON_EOI_PENDING);
167 + }
168 +
169 +@@ -1781,10 +1784,22 @@ static void lateeoi_ack_dynirq(struct irq_data *data)
170 + struct irq_info *info = info_for_irq(data->irq);
171 + evtchn_port_t evtchn = info ? info->evtchn : 0;
172 +
173 +- if (VALID_EVTCHN(evtchn)) {
174 +- do_mask(info, EVT_MASK_REASON_EOI_PENDING);
175 +- ack_dynirq(data);
176 +- }
177 ++ if (!VALID_EVTCHN(evtchn))
178 ++ return;
179 ++
180 ++ do_mask(info, EVT_MASK_REASON_EOI_PENDING);
181 ++
182 ++ if (unlikely(irqd_is_setaffinity_pending(data)) &&
183 ++ likely(!irqd_irq_disabled(data))) {
184 ++ do_mask(info, EVT_MASK_REASON_TEMPORARY);
185 ++
186 ++ clear_evtchn(evtchn);
187 ++
188 ++ irq_move_masked_irq(data);
189 ++
190 ++ do_unmask(info, EVT_MASK_REASON_TEMPORARY);
191 ++ } else
192 ++ clear_evtchn(evtchn);
193 + }
194 +
195 + static void lateeoi_mask_ack_dynirq(struct irq_data *data)