Magellan Linux

Contents of /trunk/kernel-alx/patches-4.9/0239-4.9.140-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3292 - (show annotations) (download)
Tue Mar 12 10:43:03 2019 UTC (5 years, 2 months ago) by niro
File size: 5874 byte(s)
-linux-4.9.140
1 diff --git a/Makefile b/Makefile
2 index a6959d96316d..a9aed2326233 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -1,6 +1,6 @@
6 VERSION = 4
7 PATCHLEVEL = 9
8 -SUBLEVEL = 139
9 +SUBLEVEL = 140
10 EXTRAVERSION =
11 NAME = Roaring Lionus
12
13 diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
14 index 647a702c29dc..6221166e3fca 100644
15 --- a/arch/x86/kernel/cpu/bugs.c
16 +++ b/arch/x86/kernel/cpu/bugs.c
17 @@ -33,10 +33,12 @@ static void __init spectre_v2_select_mitigation(void);
18 static void __init ssb_select_mitigation(void);
19 static void __init l1tf_select_mitigation(void);
20
21 -/* The base value of the SPEC_CTRL MSR that always has to be preserved. */
22 -u64 x86_spec_ctrl_base;
23 +/*
24 + * Our boot-time value of the SPEC_CTRL MSR. We read it once so that any
25 + * writes to SPEC_CTRL contain whatever reserved bits have been set.
26 + */
27 +u64 __ro_after_init x86_spec_ctrl_base;
28 EXPORT_SYMBOL_GPL(x86_spec_ctrl_base);
29 -static DEFINE_MUTEX(spec_ctrl_mutex);
30
31 /*
32 * The vendor and possibly platform specific bits which can be modified in
33 @@ -320,46 +322,6 @@ static enum spectre_v2_mitigation_cmd __init spectre_v2_parse_cmdline(void)
34 return cmd;
35 }
36
37 -static bool stibp_needed(void)
38 -{
39 - if (spectre_v2_enabled == SPECTRE_V2_NONE)
40 - return false;
41 -
42 - if (!boot_cpu_has(X86_FEATURE_STIBP))
43 - return false;
44 -
45 - return true;
46 -}
47 -
48 -static void update_stibp_msr(void *info)
49 -{
50 - wrmsrl(MSR_IA32_SPEC_CTRL, x86_spec_ctrl_base);
51 -}
52 -
53 -void arch_smt_update(void)
54 -{
55 - u64 mask;
56 -
57 - if (!stibp_needed())
58 - return;
59 -
60 - mutex_lock(&spec_ctrl_mutex);
61 - mask = x86_spec_ctrl_base;
62 - if (cpu_smt_control == CPU_SMT_ENABLED)
63 - mask |= SPEC_CTRL_STIBP;
64 - else
65 - mask &= ~SPEC_CTRL_STIBP;
66 -
67 - if (mask != x86_spec_ctrl_base) {
68 - pr_info("Spectre v2 cross-process SMT mitigation: %s STIBP\n",
69 - cpu_smt_control == CPU_SMT_ENABLED ?
70 - "Enabling" : "Disabling");
71 - x86_spec_ctrl_base = mask;
72 - on_each_cpu(update_stibp_msr, NULL, 1);
73 - }
74 - mutex_unlock(&spec_ctrl_mutex);
75 -}
76 -
77 static void __init spectre_v2_select_mitigation(void)
78 {
79 enum spectre_v2_mitigation_cmd cmd = spectre_v2_parse_cmdline();
80 @@ -459,9 +421,6 @@ specv2_set_mode:
81 setup_force_cpu_cap(X86_FEATURE_USE_IBRS_FW);
82 pr_info("Enabling Restricted Speculation for firmware calls\n");
83 }
84 -
85 - /* Enable STIBP if appropriate */
86 - arch_smt_update();
87 }
88
89 #undef pr_fmt
90 @@ -854,8 +813,6 @@ static ssize_t l1tf_show_state(char *buf)
91 static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr,
92 char *buf, unsigned int bug)
93 {
94 - int ret;
95 -
96 if (!boot_cpu_has_bug(bug))
97 return sprintf(buf, "Not affected\n");
98
99 @@ -870,12 +827,10 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr
100 return sprintf(buf, "Mitigation: __user pointer sanitization\n");
101
102 case X86_BUG_SPECTRE_V2:
103 - ret = sprintf(buf, "%s%s%s%s%s\n", spectre_v2_strings[spectre_v2_enabled],
104 + return sprintf(buf, "%s%s%s%s\n", spectre_v2_strings[spectre_v2_enabled],
105 boot_cpu_has(X86_FEATURE_USE_IBPB) ? ", IBPB" : "",
106 boot_cpu_has(X86_FEATURE_USE_IBRS_FW) ? ", IBRS_FW" : "",
107 - (x86_spec_ctrl_base & SPEC_CTRL_STIBP) ? ", STIBP" : "",
108 spectre_v2_module_string());
109 - return ret;
110
111 case X86_BUG_SPEC_STORE_BYPASS:
112 return sprintf(buf, "%s\n", ssb_strings[ssb_mode]);
113 diff --git a/kernel/cpu.c b/kernel/cpu.c
114 index 8d7bace9a7b2..b5a0165b7300 100644
115 --- a/kernel/cpu.c
116 +++ b/kernel/cpu.c
117 @@ -1970,12 +1970,6 @@ static void cpuhp_online_cpu_device(unsigned int cpu)
118 kobject_uevent(&dev->kobj, KOBJ_ONLINE);
119 }
120
121 -/*
122 - * Architectures that need SMT-specific errata handling during SMT hotplug
123 - * should override this.
124 - */
125 -void __weak arch_smt_update(void) { };
126 -
127 static int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval)
128 {
129 int cpu, ret = 0;
130 @@ -2002,10 +1996,8 @@ static int cpuhp_smt_disable(enum cpuhp_smt_control ctrlval)
131 */
132 cpuhp_offline_cpu_device(cpu);
133 }
134 - if (!ret) {
135 + if (!ret)
136 cpu_smt_control = ctrlval;
137 - arch_smt_update();
138 - }
139 cpu_maps_update_done();
140 return ret;
141 }
142 @@ -2016,7 +2008,6 @@ static int cpuhp_smt_enable(void)
143
144 cpu_maps_update_begin();
145 cpu_smt_control = CPU_SMT_ENABLED;
146 - arch_smt_update();
147 for_each_present_cpu(cpu) {
148 /* Skip online CPUs and CPUs on offline nodes */
149 if (cpu_online(cpu) || !node_online(cpu_to_node(cpu)))
150 diff --git a/net/ipv6/route.c b/net/ipv6/route.c
151 index 0db120d2a4fe..b0a72677b7e5 100644
152 --- a/net/ipv6/route.c
153 +++ b/net/ipv6/route.c
154 @@ -2292,7 +2292,6 @@ static void rt6_do_redirect(struct dst_entry *dst, struct sock *sk, struct sk_bu
155 if (on_link)
156 nrt->rt6i_flags &= ~RTF_GATEWAY;
157
158 - nrt->rt6i_protocol = RTPROT_REDIRECT;
159 nrt->rt6i_gateway = *(struct in6_addr *)neigh->primary_key;
160
161 if (ip6_ins_rt(nrt))
162 @@ -2397,7 +2396,6 @@ static struct rt6_info *rt6_add_route_info(struct net *net,
163 .fc_dst_len = prefixlen,
164 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_ROUTEINFO |
165 RTF_UP | RTF_PREF(pref),
166 - .fc_protocol = RTPROT_RA,
167 .fc_nlinfo.portid = 0,
168 .fc_nlinfo.nlh = NULL,
169 .fc_nlinfo.nl_net = net,
170 @@ -2450,7 +2448,6 @@ struct rt6_info *rt6_add_dflt_router(const struct in6_addr *gwaddr,
171 .fc_ifindex = dev->ifindex,
172 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_DEFAULT |
173 RTF_UP | RTF_EXPIRES | RTF_PREF(pref),
174 - .fc_protocol = RTPROT_RA,
175 .fc_nlinfo.portid = 0,
176 .fc_nlinfo.nlh = NULL,
177 .fc_nlinfo.nl_net = dev_net(dev),
178 @@ -3247,6 +3244,14 @@ static int rt6_fill_node(struct net *net,
179 }
180 rtm->rtm_scope = RT_SCOPE_UNIVERSE;
181 rtm->rtm_protocol = rt->rt6i_protocol;
182 + if (rt->rt6i_flags & RTF_DYNAMIC)
183 + rtm->rtm_protocol = RTPROT_REDIRECT;
184 + else if (rt->rt6i_flags & RTF_ADDRCONF) {
185 + if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ROUTEINFO))
186 + rtm->rtm_protocol = RTPROT_RA;
187 + else
188 + rtm->rtm_protocol = RTPROT_KERNEL;
189 + }
190
191 if (rt->rt6i_flags & RTF_CACHE)
192 rtm->rtm_flags |= RTM_F_CLONED;