Magellan Linux

Annotation of /trunk/kernel-alx/patches-5.4/0315-5.4.216-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3637 - (hide annotations) (download)
Mon Oct 24 12:40:44 2022 UTC (18 months, 3 weeks ago) by niro
File size: 32636 byte(s)
-add missing
1 niro 3637 diff --git a/Makefile b/Makefile
2     index 0c501d2c6a3b0..3d9d7ef6f8bf1 100644
3     --- a/Makefile
4     +++ b/Makefile
5     @@ -1,7 +1,7 @@
6     # SPDX-License-Identifier: GPL-2.0
7     VERSION = 5
8     PATCHLEVEL = 4
9     -SUBLEVEL = 215
10     +SUBLEVEL = 216
11     EXTRAVERSION =
12     NAME = Kleptomaniac Octopus
13    
14     diff --git a/arch/arm/boot/dts/am335x-baltos.dtsi b/arch/arm/boot/dts/am335x-baltos.dtsi
15     index ed235f263e293..ee84155844adb 100644
16     --- a/arch/arm/boot/dts/am335x-baltos.dtsi
17     +++ b/arch/arm/boot/dts/am335x-baltos.dtsi
18     @@ -381,7 +381,7 @@
19     &mmc2 {
20     status = "okay";
21     vmmc-supply = <&wl12xx_vmmc>;
22     - ti,non-removable;
23     + non-removable;
24     bus-width = <4>;
25     cap-power-off-card;
26     pinctrl-names = "default";
27     diff --git a/arch/arm/boot/dts/am335x-boneblack-common.dtsi b/arch/arm/boot/dts/am335x-boneblack-common.dtsi
28     index 91f93bc89716d..dd932220a8bf7 100644
29     --- a/arch/arm/boot/dts/am335x-boneblack-common.dtsi
30     +++ b/arch/arm/boot/dts/am335x-boneblack-common.dtsi
31     @@ -22,6 +22,7 @@
32     pinctrl-0 = <&emmc_pins>;
33     bus-width = <8>;
34     status = "okay";
35     + non-removable;
36     };
37    
38     &am33xx_pinmux {
39     diff --git a/arch/arm/boot/dts/am335x-boneblack-wireless.dts b/arch/arm/boot/dts/am335x-boneblack-wireless.dts
40     index 3124d94c0b3cc..e07dd79795868 100644
41     --- a/arch/arm/boot/dts/am335x-boneblack-wireless.dts
42     +++ b/arch/arm/boot/dts/am335x-boneblack-wireless.dts
43     @@ -75,7 +75,6 @@
44     bus-width = <4>;
45     non-removable;
46     cap-power-off-card;
47     - ti,needs-special-hs-handling;
48     keep-power-in-suspend;
49     pinctrl-names = "default";
50     pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
51     diff --git a/arch/arm/boot/dts/am335x-boneblue.dts b/arch/arm/boot/dts/am335x-boneblue.dts
52     index 2f6652ef9a157..30b62de86b5b1 100644
53     --- a/arch/arm/boot/dts/am335x-boneblue.dts
54     +++ b/arch/arm/boot/dts/am335x-boneblue.dts
55     @@ -389,7 +389,6 @@
56     bus-width = <4>;
57     non-removable;
58     cap-power-off-card;
59     - ti,needs-special-hs-handling;
60     keep-power-in-suspend;
61     pinctrl-names = "default";
62     pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
63     diff --git a/arch/arm/boot/dts/am335x-bonegreen-wireless.dts b/arch/arm/boot/dts/am335x-bonegreen-wireless.dts
64     index 4092cd193b8a6..609c8db687ec6 100644
65     --- a/arch/arm/boot/dts/am335x-bonegreen-wireless.dts
66     +++ b/arch/arm/boot/dts/am335x-bonegreen-wireless.dts
67     @@ -75,7 +75,6 @@
68     bus-width = <4>;
69     non-removable;
70     cap-power-off-card;
71     - ti,needs-special-hs-handling;
72     keep-power-in-suspend;
73     pinctrl-names = "default";
74     pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
75     diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
76     index a00145705c9be..af25b42e85f4d 100644
77     --- a/arch/arm/boot/dts/am335x-evm.dts
78     +++ b/arch/arm/boot/dts/am335x-evm.dts
79     @@ -782,8 +782,7 @@
80     bus-width = <4>;
81     pinctrl-names = "default";
82     pinctrl-0 = <&mmc3_pins &wlan_pins>;
83     - ti,non-removable;
84     - ti,needs-special-hs-handling;
85     + non-removable;
86     cap-power-off-card;
87     keep-power-in-suspend;
88    
89     diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
90     index e28a5b82fdf30..7805b0618a4fb 100644
91     --- a/arch/arm/boot/dts/am335x-evmsk.dts
92     +++ b/arch/arm/boot/dts/am335x-evmsk.dts
93     @@ -700,7 +700,7 @@
94     &mmc2 {
95     status = "okay";
96     vmmc-supply = <&wl12xx_vmmc>;
97     - ti,non-removable;
98     + non-removable;
99     bus-width = <4>;
100     cap-power-off-card;
101     keep-power-in-suspend;
102     diff --git a/arch/arm/boot/dts/am335x-lxm.dts b/arch/arm/boot/dts/am335x-lxm.dts
103     index a8005e975ea24..c3bfd8ed5f884 100644
104     --- a/arch/arm/boot/dts/am335x-lxm.dts
105     +++ b/arch/arm/boot/dts/am335x-lxm.dts
106     @@ -361,7 +361,7 @@
107     pinctrl-0 = <&emmc_pins>;
108     vmmc-supply = <&vmmcsd_fixed>;
109     bus-width = <8>;
110     - ti,non-removable;
111     + non-removable;
112     status = "okay";
113     };
114    
115     diff --git a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
116     index 671d4a5da9c43..7749122dad71d 100644
117     --- a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
118     +++ b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
119     @@ -176,7 +176,7 @@
120     vmmc-supply = <&vmmcsd_fixed>;
121     bus-width = <8>;
122     pinctrl-0 = <&mmc1_pins_default>;
123     - ti,non-removable;
124     + non-removable;
125     status = "okay";
126     };
127    
128     diff --git a/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts b/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
129     index 783d411f2cefe..66a5c09ff388a 100644
130     --- a/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
131     +++ b/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
132     @@ -473,7 +473,7 @@
133     vmmc-supply = <&vmmcsd_fixed>;
134     bus-width = <8>;
135     pinctrl-0 = <&mmc2_pins_default>;
136     - ti,non-removable;
137     + non-removable;
138     status = "okay";
139     };
140    
141     diff --git a/arch/arm/boot/dts/am335x-pepper.dts b/arch/arm/boot/dts/am335x-pepper.dts
142     index e7764ecdf65f8..03852eff2b3ce 100644
143     --- a/arch/arm/boot/dts/am335x-pepper.dts
144     +++ b/arch/arm/boot/dts/am335x-pepper.dts
145     @@ -341,7 +341,7 @@
146     pinctrl-0 = <&emmc_pins>;
147     vmmc-supply = <&ldo3_reg>;
148     bus-width = <8>;
149     - ti,non-removable;
150     + non-removable;
151     };
152    
153     &mmc3 {
154     @@ -351,7 +351,7 @@
155     pinctrl-0 = <&wireless_pins>;
156     vmmmc-supply = <&v3v3c_reg>;
157     bus-width = <4>;
158     - ti,non-removable;
159     + non-removable;
160     dmas = <&edma_xbar 12 0 1
161     &edma_xbar 13 0 2>;
162     dma-names = "tx", "rx";
163     diff --git a/arch/arm/boot/dts/am335x-phycore-som.dtsi b/arch/arm/boot/dts/am335x-phycore-som.dtsi
164     index 3d0672b53d779..7e46b4c027094 100644
165     --- a/arch/arm/boot/dts/am335x-phycore-som.dtsi
166     +++ b/arch/arm/boot/dts/am335x-phycore-som.dtsi
167     @@ -69,7 +69,7 @@
168     pinctrl-0 = <&emmc_pins>;
169     vmmc-supply = <&vmmc_reg>;
170     bus-width = <8>;
171     - ti,non-removable;
172     + non-removable;
173     status = "disabled";
174     };
175    
176     diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
177     index 7a9eb2b0d45b0..cacd564b4d28b 100644
178     --- a/arch/arm/boot/dts/am33xx-l4.dtsi
179     +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
180     @@ -1333,12 +1333,9 @@
181     ranges = <0x0 0x60000 0x1000>;
182    
183     mmc1: mmc@0 {
184     - compatible = "ti,omap4-hsmmc";
185     - ti,dual-volt;
186     + compatible = "ti,am335-sdhci";
187     ti,needs-special-reset;
188     - ti,needs-special-hs-handling;
189     - dmas = <&edma_xbar 24 0 0
190     - &edma_xbar 25 0 0>;
191     + dmas = <&edma 24 0>, <&edma 25 0>;
192     dma-names = "tx", "rx";
193     interrupts = <64>;
194     reg = <0x0 0x1000>;
195     @@ -1827,7 +1824,7 @@
196     ranges = <0x0 0xd8000 0x1000>;
197    
198     mmc2: mmc@0 {
199     - compatible = "ti,omap4-hsmmc";
200     + compatible = "ti,am335-sdhci";
201     ti,needs-special-reset;
202     dmas = <&edma 2 0
203     &edma 3 0>;
204     diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
205     index 77fa7c0f21046..efe36f395bdd0 100644
206     --- a/arch/arm/boot/dts/am33xx.dtsi
207     +++ b/arch/arm/boot/dts/am33xx.dtsi
208     @@ -259,10 +259,11 @@
209     ranges = <0x0 0x47810000 0x1000>;
210    
211     mmc3: mmc@0 {
212     - compatible = "ti,omap4-hsmmc";
213     + compatible = "ti,am335-sdhci";
214     ti,needs-special-reset;
215     interrupts = <29>;
216     reg = <0x0 0x1000>;
217     + status = "disabled";
218     };
219     };
220    
221     diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
222     index 14bbc438055fd..c5b67993743d6 100644
223     --- a/arch/arm/boot/dts/am4372.dtsi
224     +++ b/arch/arm/boot/dts/am4372.dtsi
225     @@ -250,10 +250,11 @@
226     ranges = <0x0 0x47810000 0x1000>;
227    
228     mmc3: mmc@0 {
229     - compatible = "ti,omap4-hsmmc";
230     + compatible = "ti,am437-sdhci";
231     ti,needs-special-reset;
232     interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
233     reg = <0x0 0x1000>;
234     + status = "disabled";
235     };
236     };
237    
238     diff --git a/arch/arm/boot/dts/am437x-cm-t43.dts b/arch/arm/boot/dts/am437x-cm-t43.dts
239     index 063113a5da2d4..a6b4fca8626ac 100644
240     --- a/arch/arm/boot/dts/am437x-cm-t43.dts
241     +++ b/arch/arm/boot/dts/am437x-cm-t43.dts
242     @@ -291,7 +291,7 @@
243     pinctrl-0 = <&emmc_pins>;
244     vmmc-supply = <&vmmc_3v3>;
245     bus-width = <8>;
246     - ti,non-removable;
247     + non-removable;
248     };
249    
250     &spi0 {
251     diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
252     index 126965a34841e..448853701d3d1 100644
253     --- a/arch/arm/boot/dts/am437x-gp-evm.dts
254     +++ b/arch/arm/boot/dts/am437x-gp-evm.dts
255     @@ -872,7 +872,7 @@
256     pinctrl-names = "default", "sleep";
257     pinctrl-0 = <&emmc_pins_default>;
258     pinctrl-1 = <&emmc_pins_sleep>;
259     - ti,non-removable;
260     + non-removable;
261     };
262    
263     &mmc3 {
264     @@ -889,7 +889,7 @@
265     pinctrl-1 = <&mmc3_pins_sleep>;
266     cap-power-off-card;
267     keep-power-in-suspend;
268     - ti,non-removable;
269     + non-removable;
270    
271     #address-cells = <1>;
272     #size-cells = <0>;
273     diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
274     index 64fdd5079d49b..8c9e7e723fc97 100644
275     --- a/arch/arm/boot/dts/am437x-l4.dtsi
276     +++ b/arch/arm/boot/dts/am437x-l4.dtsi
277     @@ -1104,9 +1104,8 @@
278     ranges = <0x0 0x60000 0x1000>;
279    
280     mmc1: mmc@0 {
281     - compatible = "ti,omap4-hsmmc";
282     + compatible = "ti,am437-sdhci";
283     reg = <0x0 0x1000>;
284     - ti,dual-volt;
285     ti,needs-special-reset;
286     dmas = <&edma 24 0>,
287     <&edma 25 0>;
288     @@ -1641,7 +1640,7 @@
289     ranges = <0x0 0xd8000 0x1000>;
290    
291     mmc2: mmc@0 {
292     - compatible = "ti,omap4-hsmmc";
293     + compatible = "ti,am437-sdhci";
294     reg = <0x0 0x1000>;
295     ti,needs-special-reset;
296     dmas = <&edma 2 0>,
297     diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
298     index 74eaa6a3b258c..292153c6cb5d3 100644
299     --- a/arch/arm/boot/dts/am437x-sk-evm.dts
300     +++ b/arch/arm/boot/dts/am437x-sk-evm.dts
301     @@ -694,7 +694,7 @@
302     pinctrl-1 = <&mmc3_pins_sleep>;
303     cap-power-off-card;
304     keep-power-in-suspend;
305     - ti,non-removable;
306     + non-removable;
307    
308     #address-cells = <1>;
309     #size-cells = <0>;
310     diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts
311     index 94d2ff9836d00..e6c5a99e07416 100644
312     --- a/arch/arm/boot/dts/integratorap.dts
313     +++ b/arch/arm/boot/dts/integratorap.dts
314     @@ -155,6 +155,7 @@
315    
316     pci: pciv3@62000000 {
317     compatible = "arm,integrator-ap-pci", "v3,v360epc-pci";
318     + device_type = "pci";
319     #interrupt-cells = <1>;
320     #size-cells = <2>;
321     #address-cells = <3>;
322     diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
323     index fc37e075f3e15..fbb1676aa33f1 100644
324     --- a/drivers/ata/libata-core.c
325     +++ b/drivers/ata/libata-core.c
326     @@ -4542,6 +4542,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
327     { "PIONEER DVD-RW DVR-212D", NULL, ATA_HORKAGE_NOSETXFER },
328     { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER },
329    
330     + /* These specific Pioneer models have LPM issues */
331     + { "PIONEER BD-RW BDR-207M", NULL, ATA_HORKAGE_NOLPM },
332     + { "PIONEER BD-RW BDR-205", NULL, ATA_HORKAGE_NOLPM },
333     +
334     /* Crucial BX100 SSD 500GB has broken LPM support */
335     { "CT500BX100SSD1", NULL, ATA_HORKAGE_NOLPM },
336    
337     diff --git a/drivers/clk/bcm/clk-iproc-pll.c b/drivers/clk/bcm/clk-iproc-pll.c
338     index 274441e2ddb28..8f0619f362e3b 100644
339     --- a/drivers/clk/bcm/clk-iproc-pll.c
340     +++ b/drivers/clk/bcm/clk-iproc-pll.c
341     @@ -736,6 +736,7 @@ void iproc_pll_clk_setup(struct device_node *node,
342     const char *parent_name;
343     struct iproc_clk *iclk_array;
344     struct clk_hw_onecell_data *clk_data;
345     + const char *clk_name;
346    
347     if (WARN_ON(!pll_ctrl) || WARN_ON(!clk_ctrl))
348     return;
349     @@ -783,7 +784,12 @@ void iproc_pll_clk_setup(struct device_node *node,
350     iclk = &iclk_array[0];
351     iclk->pll = pll;
352    
353     - init.name = node->name;
354     + ret = of_property_read_string_index(node, "clock-output-names",
355     + 0, &clk_name);
356     + if (WARN_ON(ret))
357     + goto err_pll_register;
358     +
359     + init.name = clk_name;
360     init.ops = &iproc_pll_ops;
361     init.flags = 0;
362     parent_name = of_clk_get_parent_name(node, 0);
363     @@ -803,13 +809,11 @@ void iproc_pll_clk_setup(struct device_node *node,
364     goto err_pll_register;
365    
366     clk_data->hws[0] = &iclk->hw;
367     + parent_name = clk_name;
368    
369     /* now initialize and register all leaf clocks */
370     for (i = 1; i < num_clks; i++) {
371     - const char *clk_name;
372     -
373     memset(&init, 0, sizeof(init));
374     - parent_name = node->name;
375    
376     ret = of_property_read_string_index(node, "clock-output-names",
377     i, &clk_name);
378     diff --git a/drivers/clk/imx/clk-imx6sx.c b/drivers/clk/imx/clk-imx6sx.c
379     index c4685c01929a4..579b638b09b86 100644
380     --- a/drivers/clk/imx/clk-imx6sx.c
381     +++ b/drivers/clk/imx/clk-imx6sx.c
382     @@ -287,13 +287,13 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
383     hws[IMX6SX_CLK_SSI3_SEL] = imx_clk_hw_mux("ssi3_sel", base + 0x1c, 14, 2, ssi_sels, ARRAY_SIZE(ssi_sels));
384     hws[IMX6SX_CLK_SSI2_SEL] = imx_clk_hw_mux("ssi2_sel", base + 0x1c, 12, 2, ssi_sels, ARRAY_SIZE(ssi_sels));
385     hws[IMX6SX_CLK_SSI1_SEL] = imx_clk_hw_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels));
386     - hws[IMX6SX_CLK_QSPI1_SEL] = imx_clk_hw_mux_flags("qspi1_sel", base + 0x1c, 7, 3, qspi1_sels, ARRAY_SIZE(qspi1_sels), CLK_SET_RATE_PARENT);
387     + hws[IMX6SX_CLK_QSPI1_SEL] = imx_clk_hw_mux("qspi1_sel", base + 0x1c, 7, 3, qspi1_sels, ARRAY_SIZE(qspi1_sels));
388     hws[IMX6SX_CLK_PERCLK_SEL] = imx_clk_hw_mux("perclk_sel", base + 0x1c, 6, 1, perclk_sels, ARRAY_SIZE(perclk_sels));
389     hws[IMX6SX_CLK_VID_SEL] = imx_clk_hw_mux("vid_sel", base + 0x20, 21, 3, vid_sels, ARRAY_SIZE(vid_sels));
390     hws[IMX6SX_CLK_ESAI_SEL] = imx_clk_hw_mux("esai_sel", base + 0x20, 19, 2, audio_sels, ARRAY_SIZE(audio_sels));
391     hws[IMX6SX_CLK_CAN_SEL] = imx_clk_hw_mux("can_sel", base + 0x20, 8, 2, can_sels, ARRAY_SIZE(can_sels));
392     hws[IMX6SX_CLK_UART_SEL] = imx_clk_hw_mux("uart_sel", base + 0x24, 6, 1, uart_sels, ARRAY_SIZE(uart_sels));
393     - hws[IMX6SX_CLK_QSPI2_SEL] = imx_clk_hw_mux_flags("qspi2_sel", base + 0x2c, 15, 3, qspi2_sels, ARRAY_SIZE(qspi2_sels), CLK_SET_RATE_PARENT);
394     + hws[IMX6SX_CLK_QSPI2_SEL] = imx_clk_hw_mux("qspi2_sel", base + 0x2c, 15, 3, qspi2_sels, ARRAY_SIZE(qspi2_sels));
395     hws[IMX6SX_CLK_SPDIF_SEL] = imx_clk_hw_mux("spdif_sel", base + 0x30, 20, 2, audio_sels, ARRAY_SIZE(audio_sels));
396     hws[IMX6SX_CLK_AUDIO_SEL] = imx_clk_hw_mux("audio_sel", base + 0x30, 7, 2, audio_sels, ARRAY_SIZE(audio_sels));
397     hws[IMX6SX_CLK_ENET_PRE_SEL] = imx_clk_hw_mux("enet_pre_sel", base + 0x34, 15, 3, enet_pre_sels, ARRAY_SIZE(enet_pre_sels));
398     diff --git a/drivers/clk/ingenic/tcu.c b/drivers/clk/ingenic/tcu.c
399     index 926696fba3f42..d8739871e114b 100644
400     --- a/drivers/clk/ingenic/tcu.c
401     +++ b/drivers/clk/ingenic/tcu.c
402     @@ -100,15 +100,11 @@ static bool ingenic_tcu_enable_regs(struct clk_hw *hw)
403     bool enabled = false;
404    
405     /*
406     - * If the SoC has no global TCU clock, we must ungate the channel's
407     - * clock to be able to access its registers.
408     - * If we have a TCU clock, it will be enabled automatically as it has
409     - * been attached to the regmap.
410     + * According to the programming manual, a timer channel's registers can
411     + * only be accessed when the channel's stop bit is clear.
412     */
413     - if (!tcu->clk) {
414     - enabled = !!ingenic_tcu_is_enabled(hw);
415     - regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit));
416     - }
417     + enabled = !!ingenic_tcu_is_enabled(hw);
418     + regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit));
419    
420     return enabled;
421     }
422     @@ -119,8 +115,7 @@ static void ingenic_tcu_disable_regs(struct clk_hw *hw)
423     const struct ingenic_tcu_clk_info *info = tcu_clk->info;
424     struct ingenic_tcu *tcu = tcu_clk->tcu;
425    
426     - if (!tcu->clk)
427     - regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit));
428     + regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit));
429     }
430    
431     static u8 ingenic_tcu_get_parent(struct clk_hw *hw)
432     diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
433     index c6a51d1c7ec9e..df606a5675663 100644
434     --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
435     +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
436     @@ -1823,12 +1823,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_remove);
437     int analogix_dp_suspend(struct analogix_dp_device *dp)
438     {
439     clk_disable_unprepare(dp->clock);
440     -
441     - if (dp->plat_data->panel) {
442     - if (drm_panel_unprepare(dp->plat_data->panel))
443     - DRM_ERROR("failed to turnoff the panel\n");
444     - }
445     -
446     return 0;
447     }
448     EXPORT_SYMBOL_GPL(analogix_dp_suspend);
449     @@ -1843,13 +1837,6 @@ int analogix_dp_resume(struct analogix_dp_device *dp)
450     return ret;
451     }
452    
453     - if (dp->plat_data->panel) {
454     - if (drm_panel_prepare(dp->plat_data->panel)) {
455     - DRM_ERROR("failed to setup the panel\n");
456     - return -EBUSY;
457     - }
458     - }
459     -
460     return 0;
461     }
462     EXPORT_SYMBOL_GPL(analogix_dp_resume);
463     diff --git a/drivers/input/touchscreen/melfas_mip4.c b/drivers/input/touchscreen/melfas_mip4.c
464     index 247c3aaba2d8f..0588b8f04dac6 100644
465     --- a/drivers/input/touchscreen/melfas_mip4.c
466     +++ b/drivers/input/touchscreen/melfas_mip4.c
467     @@ -1453,7 +1453,7 @@ static int mip4_probe(struct i2c_client *client, const struct i2c_device_id *id)
468     "ce", GPIOD_OUT_LOW);
469     if (IS_ERR(ts->gpio_ce)) {
470     error = PTR_ERR(ts->gpio_ce);
471     - if (error != EPROBE_DEFER)
472     + if (error != -EPROBE_DEFER)
473     dev_err(&client->dev,
474     "Failed to get gpio: %d\n", error);
475     return error;
476     diff --git a/drivers/media/dvb-core/dvb_vb2.c b/drivers/media/dvb-core/dvb_vb2.c
477     index 6974f17315294..1331f2c2237e6 100644
478     --- a/drivers/media/dvb-core/dvb_vb2.c
479     +++ b/drivers/media/dvb-core/dvb_vb2.c
480     @@ -358,6 +358,12 @@ int dvb_vb2_reqbufs(struct dvb_vb2_ctx *ctx, struct dmx_requestbuffers *req)
481    
482     int dvb_vb2_querybuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
483     {
484     + struct vb2_queue *q = &ctx->vb_q;
485     +
486     + if (b->index >= q->num_buffers) {
487     + dprintk(1, "[%s] buffer index out of range\n", ctx->name);
488     + return -EINVAL;
489     + }
490     vb2_core_querybuf(&ctx->vb_q, b->index, b);
491     dprintk(3, "[%s] index=%d\n", ctx->name, b->index);
492     return 0;
493     @@ -382,8 +388,13 @@ int dvb_vb2_expbuf(struct dvb_vb2_ctx *ctx, struct dmx_exportbuffer *exp)
494    
495     int dvb_vb2_qbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
496     {
497     + struct vb2_queue *q = &ctx->vb_q;
498     int ret;
499    
500     + if (b->index >= q->num_buffers) {
501     + dprintk(1, "[%s] buffer index out of range\n", ctx->name);
502     + return -EINVAL;
503     + }
504     ret = vb2_core_qbuf(&ctx->vb_q, b->index, b, NULL);
505     if (ret) {
506     dprintk(1, "[%s] index=%d errno=%d\n", ctx->name,
507     diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
508     index 5c81dc7371db7..1552d1f09c5c4 100644
509     --- a/drivers/mmc/host/moxart-mmc.c
510     +++ b/drivers/mmc/host/moxart-mmc.c
511     @@ -111,8 +111,8 @@
512     #define CLK_DIV_MASK 0x7f
513    
514     /* REG_BUS_WIDTH */
515     -#define BUS_WIDTH_8 BIT(2)
516     -#define BUS_WIDTH_4 BIT(1)
517     +#define BUS_WIDTH_4_SUPPORT BIT(3)
518     +#define BUS_WIDTH_4 BIT(2)
519     #define BUS_WIDTH_1 BIT(0)
520    
521     #define MMC_VDD_360 23
522     @@ -527,9 +527,6 @@ static void moxart_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
523     case MMC_BUS_WIDTH_4:
524     writel(BUS_WIDTH_4, host->base + REG_BUS_WIDTH);
525     break;
526     - case MMC_BUS_WIDTH_8:
527     - writel(BUS_WIDTH_8, host->base + REG_BUS_WIDTH);
528     - break;
529     default:
530     writel(BUS_WIDTH_1, host->base + REG_BUS_WIDTH);
531     break;
532     @@ -646,16 +643,8 @@ static int moxart_probe(struct platform_device *pdev)
533     dmaengine_slave_config(host->dma_chan_rx, &cfg);
534     }
535    
536     - switch ((readl(host->base + REG_BUS_WIDTH) >> 3) & 3) {
537     - case 1:
538     + if (readl(host->base + REG_BUS_WIDTH) & BUS_WIDTH_4_SUPPORT)
539     mmc->caps |= MMC_CAP_4_BIT_DATA;
540     - break;
541     - case 2:
542     - mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA;
543     - break;
544     - default:
545     - break;
546     - }
547    
548     writel(0, host->base + REG_INTERRUPT_MASK);
549    
550     diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
551     index 0eec05d905eb0..4a3baa7e01424 100644
552     --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
553     +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c
554     @@ -700,10 +700,10 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)
555    
556     void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
557     {
558     - static struct dentry *mvpp2_root;
559     - struct dentry *mvpp2_dir;
560     + struct dentry *mvpp2_dir, *mvpp2_root;
561     int ret, i;
562    
563     + mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
564     if (!mvpp2_root)
565     mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
566    
567     diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
568     index cee90e505d175..6f82436ff72f7 100644
569     --- a/drivers/net/usb/qmi_wwan.c
570     +++ b/drivers/net/usb/qmi_wwan.c
571     @@ -1354,6 +1354,7 @@ static const struct usb_device_id products[] = {
572     {QMI_FIXED_INTF(0x413c, 0x81b3, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
573     {QMI_FIXED_INTF(0x413c, 0x81b6, 8)}, /* Dell Wireless 5811e */
574     {QMI_FIXED_INTF(0x413c, 0x81b6, 10)}, /* Dell Wireless 5811e */
575     + {QMI_FIXED_INTF(0x413c, 0x81c2, 8)}, /* Dell Wireless 5811e */
576     {QMI_FIXED_INTF(0x413c, 0x81cc, 8)}, /* Dell Wireless 5816e */
577     {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */
578     {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */
579     diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
580     index 7a8324d2a9686..7af8c3a8f3f17 100644
581     --- a/drivers/net/usb/usbnet.c
582     +++ b/drivers/net/usb/usbnet.c
583     @@ -1585,6 +1585,7 @@ void usbnet_disconnect (struct usb_interface *intf)
584     struct usbnet *dev;
585     struct usb_device *xdev;
586     struct net_device *net;
587     + struct urb *urb;
588    
589     dev = usb_get_intfdata(intf);
590     usb_set_intfdata(intf, NULL);
591     @@ -1601,7 +1602,11 @@ void usbnet_disconnect (struct usb_interface *intf)
592     net = dev->net;
593     unregister_netdev (net);
594    
595     - usb_scuttle_anchored_urbs(&dev->deferred);
596     + while ((urb = usb_get_from_anchor(&dev->deferred))) {
597     + dev_kfree_skb(urb->context);
598     + kfree(urb->sg);
599     + usb_free_urb(urb);
600     + }
601    
602     if (dev->driver_info->unbind)
603     dev->driver_info->unbind (dev, intf);
604     diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
605     index d2ea6ca37c41f..f1717f34b2f3e 100644
606     --- a/drivers/nvme/host/core.c
607     +++ b/drivers/nvme/host/core.c
608     @@ -2018,18 +2018,21 @@ static int nvme_pr_preempt(struct block_device *bdev, u64 old, u64 new,
609     enum pr_type type, bool abort)
610     {
611     u32 cdw10 = nvme_pr_type(type) << 8 | (abort ? 2 : 1);
612     +
613     return nvme_pr_command(bdev, cdw10, old, new, nvme_cmd_resv_acquire);
614     }
615    
616     static int nvme_pr_clear(struct block_device *bdev, u64 key)
617     {
618     - u32 cdw10 = 1 | (key ? 1 << 3 : 0);
619     - return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_register);
620     + u32 cdw10 = 1 | (key ? 0 : 1 << 3);
621     +
622     + return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release);
623     }
624    
625     static int nvme_pr_release(struct block_device *bdev, u64 key, enum pr_type type)
626     {
627     - u32 cdw10 = nvme_pr_type(type) << 8 | (key ? 1 << 3 : 0);
628     + u32 cdw10 = nvme_pr_type(type) << 8 | (key ? 0 : 1 << 3);
629     +
630     return nvme_pr_command(bdev, cdw10, key, 0, nvme_cmd_resv_release);
631     }
632    
633     diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
634     index 1b0d50f363493..33139c7817c20 100644
635     --- a/drivers/soc/sunxi/sunxi_sram.c
636     +++ b/drivers/soc/sunxi/sunxi_sram.c
637     @@ -78,8 +78,8 @@ static struct sunxi_sram_desc sun4i_a10_sram_d = {
638    
639     static struct sunxi_sram_desc sun50i_a64_sram_c = {
640     .data = SUNXI_SRAM_DATA("C", 0x4, 24, 1,
641     - SUNXI_SRAM_MAP(0, 1, "cpu"),
642     - SUNXI_SRAM_MAP(1, 0, "de2")),
643     + SUNXI_SRAM_MAP(1, 0, "cpu"),
644     + SUNXI_SRAM_MAP(0, 1, "de2")),
645     };
646    
647     static const struct of_device_id sunxi_sram_dt_ids[] = {
648     @@ -254,6 +254,7 @@ int sunxi_sram_claim(struct device *dev)
649     writel(val | ((device << sram_data->offset) & mask),
650     base + sram_data->reg);
651    
652     + sram_desc->claimed = true;
653     spin_unlock(&sram_lock);
654    
655     return 0;
656     @@ -318,12 +319,11 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = {
657     .writeable_reg = sunxi_sram_regmap_accessible_reg,
658     };
659    
660     -static int sunxi_sram_probe(struct platform_device *pdev)
661     +static int __init sunxi_sram_probe(struct platform_device *pdev)
662     {
663     - struct resource *res;
664     - struct dentry *d;
665     struct regmap *emac_clock;
666     const struct sunxi_sramc_variant *variant;
667     + struct device *dev = &pdev->dev;
668    
669     sram_dev = &pdev->dev;
670    
671     @@ -331,18 +331,10 @@ static int sunxi_sram_probe(struct platform_device *pdev)
672     if (!variant)
673     return -EINVAL;
674    
675     - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
676     - base = devm_ioremap_resource(&pdev->dev, res);
677     + base = devm_platform_ioremap_resource(pdev, 0);
678     if (IS_ERR(base))
679     return PTR_ERR(base);
680    
681     - of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
682     -
683     - d = debugfs_create_file("sram", S_IRUGO, NULL, NULL,
684     - &sunxi_sram_fops);
685     - if (!d)
686     - return -ENOMEM;
687     -
688     if (variant->has_emac_clock) {
689     emac_clock = devm_regmap_init_mmio(&pdev->dev, base,
690     &sunxi_sram_emac_clock_regmap);
691     @@ -351,6 +343,10 @@ static int sunxi_sram_probe(struct platform_device *pdev)
692     return PTR_ERR(emac_clock);
693     }
694    
695     + of_platform_populate(dev->of_node, NULL, NULL, dev);
696     +
697     + debugfs_create_file("sram", 0444, NULL, NULL, &sunxi_sram_fops);
698     +
699     return 0;
700     }
701    
702     @@ -396,9 +392,8 @@ static struct platform_driver sunxi_sram_driver = {
703     .name = "sunxi-sram",
704     .of_match_table = sunxi_sram_dt_match,
705     },
706     - .probe = sunxi_sram_probe,
707     };
708     -module_platform_driver(sunxi_sram_driver);
709     +builtin_platform_driver_probe(sunxi_sram_driver, sunxi_sram_probe);
710    
711     MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
712     MODULE_DESCRIPTION("Allwinner sunXi SRAM Controller Driver");
713     diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
714     index 0b37c8e550e7d..92e9bd006622d 100644
715     --- a/drivers/usb/storage/unusual_uas.h
716     +++ b/drivers/usb/storage/unusual_uas.h
717     @@ -52,6 +52,13 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x9999,
718     USB_SC_DEVICE, USB_PR_DEVICE, NULL,
719     US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME),
720    
721     +/* Reported-by: Hongling Zeng <zenghongling@kylinos.cn> */
722     +UNUSUAL_DEV(0x090c, 0x2000, 0x0000, 0x9999,
723     + "Hiksemi",
724     + "External HDD",
725     + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
726     + US_FL_IGNORE_UAS),
727     +
728     /*
729     * Apricorn USB3 dongle sometimes returns "USBSUSBSUSBS" in response to SCSI
730     * commands in UAS mode. Observed with the 1.28 firmware; are there others?
731     @@ -76,6 +83,13 @@ UNUSUAL_DEV(0x0bc2, 0x331a, 0x0000, 0x9999,
732     USB_SC_DEVICE, USB_PR_DEVICE, NULL,
733     US_FL_NO_REPORT_LUNS),
734    
735     +/* Reported-by: Hongling Zeng <zenghongling@kylinos.cn> */
736     +UNUSUAL_DEV(0x0bda, 0x9210, 0x0000, 0x9999,
737     + "Hiksemi",
738     + "External HDD",
739     + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
740     + US_FL_IGNORE_UAS),
741     +
742     /* Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> */
743     UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
744     "Initio Corporation",
745     @@ -118,6 +132,13 @@ UNUSUAL_DEV(0x154b, 0xf00d, 0x0000, 0x9999,
746     USB_SC_DEVICE, USB_PR_DEVICE, NULL,
747     US_FL_NO_ATA_1X),
748    
749     +/* Reported-by: Hongling Zeng <zenghongling@kylinos.cn> */
750     +UNUSUAL_DEV(0x17ef, 0x3899, 0x0000, 0x9999,
751     + "Thinkplus",
752     + "External HDD",
753     + USB_SC_DEVICE, USB_PR_DEVICE, NULL,
754     + US_FL_IGNORE_UAS),
755     +
756     /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
757     UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999,
758     "VIA",
759     diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
760     index 7dc3bc604f781..8f33382a00ead 100644
761     --- a/fs/ntfs/super.c
762     +++ b/fs/ntfs/super.c
763     @@ -2092,7 +2092,8 @@ get_ctx_vol_failed:
764     // TODO: Initialize security.
765     /* Get the extended system files' directory inode. */
766     vol->extend_ino = ntfs_iget(sb, FILE_Extend);
767     - if (IS_ERR(vol->extend_ino) || is_bad_inode(vol->extend_ino)) {
768     + if (IS_ERR(vol->extend_ino) || is_bad_inode(vol->extend_ino) ||
769     + !S_ISDIR(vol->extend_ino->i_mode)) {
770     if (!IS_ERR(vol->extend_ino))
771     iput(vol->extend_ino);
772     ntfs_error(sb, "Failed to load $Extend.");
773     diff --git a/mm/madvise.c b/mm/madvise.c
774     index 1107e99e498b2..ac8d68c488b50 100644
775     --- a/mm/madvise.c
776     +++ b/mm/madvise.c
777     @@ -428,8 +428,11 @@ regular_page:
778     continue;
779     }
780    
781     - /* Do not interfere with other mappings of this page */
782     - if (page_mapcount(page) != 1)
783     + /*
784     + * Do not interfere with other mappings of this page and
785     + * non-LRU page.
786     + */
787     + if (!PageLRU(page) || page_mapcount(page) != 1)
788     continue;
789    
790     VM_BUG_ON_PAGE(PageTransCompound(page), page);
791     diff --git a/mm/migrate.c b/mm/migrate.c
792     index 6948d6ec0fd03..034b0662fd3bb 100644
793     --- a/mm/migrate.c
794     +++ b/mm/migrate.c
795     @@ -2343,13 +2343,14 @@ next:
796     migrate->dst[migrate->npages] = 0;
797     migrate->src[migrate->npages++] = mpfn;
798     }
799     - arch_leave_lazy_mmu_mode();
800     - pte_unmap_unlock(ptep - 1, ptl);
801    
802     /* Only flush the TLB if we actually modified any entries */
803     if (unmapped)
804     flush_tlb_range(walk->vma, start, end);
805    
806     + arch_leave_lazy_mmu_mode();
807     + pte_unmap_unlock(ptep - 1, ptl);
808     +
809     return 0;
810     }
811    
812     diff --git a/mm/page_alloc.c b/mm/page_alloc.c
813     index f08ce248af2a9..c30a8bac5c130 100644
814     --- a/mm/page_alloc.c
815     +++ b/mm/page_alloc.c
816     @@ -4123,6 +4123,30 @@ void fs_reclaim_release(gfp_t gfp_mask)
817     EXPORT_SYMBOL_GPL(fs_reclaim_release);
818     #endif
819    
820     +/*
821     + * Zonelists may change due to hotplug during allocation. Detect when zonelists
822     + * have been rebuilt so allocation retries. Reader side does not lock and
823     + * retries the allocation if zonelist changes. Writer side is protected by the
824     + * embedded spin_lock.
825     + */
826     +static DEFINE_SEQLOCK(zonelist_update_seq);
827     +
828     +static unsigned int zonelist_iter_begin(void)
829     +{
830     + if (IS_ENABLED(CONFIG_MEMORY_HOTREMOVE))
831     + return read_seqbegin(&zonelist_update_seq);
832     +
833     + return 0;
834     +}
835     +
836     +static unsigned int check_retry_zonelist(unsigned int seq)
837     +{
838     + if (IS_ENABLED(CONFIG_MEMORY_HOTREMOVE))
839     + return read_seqretry(&zonelist_update_seq, seq);
840     +
841     + return seq;
842     +}
843     +
844     /* Perform direct synchronous page reclaim */
845     static int
846     __perform_reclaim(gfp_t gfp_mask, unsigned int order,
847     @@ -4430,6 +4454,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
848     int compaction_retries;
849     int no_progress_loops;
850     unsigned int cpuset_mems_cookie;
851     + unsigned int zonelist_iter_cookie;
852     int reserve_flags;
853    
854     /*
855     @@ -4440,11 +4465,12 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
856     (__GFP_ATOMIC|__GFP_DIRECT_RECLAIM)))
857     gfp_mask &= ~__GFP_ATOMIC;
858    
859     -retry_cpuset:
860     +restart:
861     compaction_retries = 0;
862     no_progress_loops = 0;
863     compact_priority = DEF_COMPACT_PRIORITY;
864     cpuset_mems_cookie = read_mems_allowed_begin();
865     + zonelist_iter_cookie = zonelist_iter_begin();
866    
867     /*
868     * The fast path uses conservative alloc_flags to succeed only until
869     @@ -4617,9 +4643,13 @@ retry:
870     goto retry;
871    
872    
873     - /* Deal with possible cpuset update races before we start OOM killing */
874     - if (check_retry_cpuset(cpuset_mems_cookie, ac))
875     - goto retry_cpuset;
876     + /*
877     + * Deal with possible cpuset update races or zonelist updates to avoid
878     + * a unnecessary OOM kill.
879     + */
880     + if (check_retry_cpuset(cpuset_mems_cookie, ac) ||
881     + check_retry_zonelist(zonelist_iter_cookie))
882     + goto restart;
883    
884     /* Reclaim has failed us, start killing things */
885     page = __alloc_pages_may_oom(gfp_mask, order, ac, &did_some_progress);
886     @@ -4639,9 +4669,13 @@ retry:
887     }
888    
889     nopage:
890     - /* Deal with possible cpuset update races before we fail */
891     - if (check_retry_cpuset(cpuset_mems_cookie, ac))
892     - goto retry_cpuset;
893     + /*
894     + * Deal with possible cpuset update races or zonelist updates to avoid
895     + * a unnecessary OOM kill.
896     + */
897     + if (check_retry_cpuset(cpuset_mems_cookie, ac) ||
898     + check_retry_zonelist(zonelist_iter_cookie))
899     + goto restart;
900    
901     /*
902     * Make sure that __GFP_NOFAIL request doesn't leak out and make sure
903     @@ -4945,6 +4979,18 @@ refill:
904     /* reset page count bias and offset to start of new frag */
905     nc->pagecnt_bias = PAGE_FRAG_CACHE_MAX_SIZE + 1;
906     offset = size - fragsz;
907     + if (unlikely(offset < 0)) {
908     + /*
909     + * The caller is trying to allocate a fragment
910     + * with fragsz > PAGE_SIZE but the cache isn't big
911     + * enough to satisfy the request, this may
912     + * happen in low memory conditions.
913     + * We don't release the cache page because
914     + * it could make memory pressure worse
915     + * so we simply return NULL here.
916     + */
917     + return NULL;
918     + }
919     }
920    
921     nc->pagecnt_bias--;
922     @@ -5770,9 +5816,8 @@ static void __build_all_zonelists(void *data)
923     int nid;
924     int __maybe_unused cpu;
925     pg_data_t *self = data;
926     - static DEFINE_SPINLOCK(lock);
927    
928     - spin_lock(&lock);
929     + write_seqlock(&zonelist_update_seq);
930    
931     #ifdef CONFIG_NUMA
932     memset(node_load, 0, sizeof(node_load));
933     @@ -5805,7 +5850,7 @@ static void __build_all_zonelists(void *data)
934     #endif
935     }
936    
937     - spin_unlock(&lock);
938     + write_sequnlock(&zonelist_update_seq);
939     }
940    
941     static noinline void __init
942     diff --git a/tools/testing/selftests/net/reuseport_bpf.c b/tools/testing/selftests/net/reuseport_bpf.c
943     index b5277106df1fd..b0cc082fbb84f 100644
944     --- a/tools/testing/selftests/net/reuseport_bpf.c
945     +++ b/tools/testing/selftests/net/reuseport_bpf.c
946     @@ -330,7 +330,7 @@ static void test_extra_filter(const struct test_params p)
947     if (bind(fd1, addr, sockaddr_size()))
948     error(1, errno, "failed to bind recv socket 1");
949    
950     - if (!bind(fd2, addr, sockaddr_size()) && errno != EADDRINUSE)
951     + if (!bind(fd2, addr, sockaddr_size()) || errno != EADDRINUSE)
952     error(1, errno, "bind socket 2 should fail with EADDRINUSE");
953    
954     free(addr);