Contents of /trunk/kernel-alx-legacy/patches-4.9/0260-4.9.161-all-fixes.patch
Parent Directory | Revision Log
Revision 3608 -
(show annotations)
(download)
Fri Aug 14 07:34:29 2020 UTC (4 years, 1 month ago) by niro
File size: 94946 byte(s)
Fri Aug 14 07:34:29 2020 UTC (4 years, 1 month ago) by niro
File size: 94946 byte(s)
-added kerenl-alx-legacy pkg
1 | diff --git a/Makefile b/Makefile |
2 | index af70503df3f46..239b74a7147b5 100644 |
3 | --- a/Makefile |
4 | +++ b/Makefile |
5 | @@ -1,6 +1,6 @@ |
6 | VERSION = 4 |
7 | PATCHLEVEL = 9 |
8 | -SUBLEVEL = 160 |
9 | +SUBLEVEL = 161 |
10 | EXTRAVERSION = |
11 | NAME = Roaring Lionus |
12 | |
13 | @@ -306,11 +306,6 @@ HOSTCXX = g++ |
14 | HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89 |
15 | HOSTCXXFLAGS = -O2 |
16 | |
17 | -ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) |
18 | -HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \ |
19 | - -Wno-missing-field-initializers -fno-delete-null-pointer-checks |
20 | -endif |
21 | - |
22 | # Decide whether to build built-in, modular, or both. |
23 | # Normally, just do built-in. |
24 | |
25 | @@ -511,36 +506,17 @@ endif |
26 | |
27 | ifeq ($(cc-name),clang) |
28 | ifneq ($(CROSS_COMPILE),) |
29 | -CLANG_TARGET := -target $(notdir $(CROSS_COMPILE:%-=%)) |
30 | +CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE:%-=%)) |
31 | GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD))) |
32 | -CLANG_PREFIX := --prefix=$(GCC_TOOLCHAIN_DIR) |
33 | +CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR) |
34 | GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..) |
35 | endif |
36 | ifneq ($(GCC_TOOLCHAIN),) |
37 | -CLANG_GCC_TC := -gcc-toolchain $(GCC_TOOLCHAIN) |
38 | +CLANG_FLAGS += --gcc-toolchain=$(GCC_TOOLCHAIN) |
39 | endif |
40 | -KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC) $(CLANG_PREFIX) |
41 | -KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC) $(CLANG_PREFIX) |
42 | -KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) |
43 | -KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable) |
44 | -KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) |
45 | -KBUILD_CFLAGS += $(call cc-disable-warning, gnu) |
46 | -KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) |
47 | -# Quiet clang warning: comparison of unsigned expression < 0 is always false |
48 | -KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare) |
49 | -# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the |
50 | -# source of a reference will be _MergedGlobals and not on of the whitelisted names. |
51 | -# See modpost pattern 2 |
52 | -KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,) |
53 | -KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior) |
54 | -KBUILD_CFLAGS += $(call cc-option, -no-integrated-as) |
55 | -KBUILD_AFLAGS += $(call cc-option, -no-integrated-as) |
56 | -else |
57 | - |
58 | -# These warnings generated too much noise in a regular build. |
59 | -# Use make W=1 to enable them (see scripts/Makefile.build) |
60 | -KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) |
61 | -KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) |
62 | +CLANG_FLAGS += -no-integrated-as |
63 | +KBUILD_CFLAGS += $(CLANG_FLAGS) |
64 | +KBUILD_AFLAGS += $(CLANG_FLAGS) |
65 | endif |
66 | |
67 | |
68 | @@ -739,6 +715,26 @@ ifdef CONFIG_CC_STACKPROTECTOR |
69 | endif |
70 | KBUILD_CFLAGS += $(stackp-flag) |
71 | |
72 | +ifeq ($(cc-name),clang) |
73 | +KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,) |
74 | +KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier) |
75 | +KBUILD_CFLAGS += $(call cc-disable-warning, gnu) |
76 | +KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) |
77 | +# Quiet clang warning: comparison of unsigned expression < 0 is always false |
78 | +KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare) |
79 | +# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the |
80 | +# source of a reference will be _MergedGlobals and not on of the whitelisted names. |
81 | +# See modpost pattern 2 |
82 | +KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,) |
83 | +KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior) |
84 | +else |
85 | + |
86 | +# These warnings generated too much noise in a regular build. |
87 | +# Use make W=1 to enable them (see scripts/Makefile.extrawarn) |
88 | +KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) |
89 | +endif |
90 | + |
91 | +KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) |
92 | ifdef CONFIG_FRAME_POINTER |
93 | KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls |
94 | else |
95 | diff --git a/arch/arc/include/asm/cache.h b/arch/arc/include/asm/cache.h |
96 | index 4fd6272e6c01b..c5816a224571e 100644 |
97 | --- a/arch/arc/include/asm/cache.h |
98 | +++ b/arch/arc/include/asm/cache.h |
99 | @@ -49,6 +49,17 @@ |
100 | |
101 | #define ARCH_DMA_MINALIGN L1_CACHE_BYTES |
102 | |
103 | +/* |
104 | + * Make sure slab-allocated buffers are 64-bit aligned when atomic64_t uses |
105 | + * ARCv2 64-bit atomics (LLOCKD/SCONDD). This guarantess runtime 64-bit |
106 | + * alignment for any atomic64_t embedded in buffer. |
107 | + * Default ARCH_SLAB_MINALIGN is __alignof__(long long) which has a relaxed |
108 | + * value of 4 (and not 8) in ARC ABI. |
109 | + */ |
110 | +#if defined(CONFIG_ARC_HAS_LL64) && defined(CONFIG_ARC_HAS_LLSC) |
111 | +#define ARCH_SLAB_MINALIGN 8 |
112 | +#endif |
113 | + |
114 | extern void arc_cache_init(void); |
115 | extern char *arc_cache_mumbojumbo(int cpu_id, char *buf, int len); |
116 | extern void read_decode_cache_bcr(void); |
117 | diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S |
118 | index 8b90d25a15cca..1f945d0f40daa 100644 |
119 | --- a/arch/arc/kernel/head.S |
120 | +++ b/arch/arc/kernel/head.S |
121 | @@ -17,6 +17,7 @@ |
122 | #include <asm/entry.h> |
123 | #include <asm/arcregs.h> |
124 | #include <asm/cache.h> |
125 | +#include <asm/irqflags.h> |
126 | |
127 | .macro CPU_EARLY_SETUP |
128 | |
129 | @@ -47,6 +48,15 @@ |
130 | sr r5, [ARC_REG_DC_CTRL] |
131 | |
132 | 1: |
133 | + |
134 | +#ifdef CONFIG_ISA_ARCV2 |
135 | + ; Unaligned access is disabled at reset, so re-enable early as |
136 | + ; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access |
137 | + ; by default |
138 | + lr r5, [status32] |
139 | + bset r5, r5, STATUS_AD_BIT |
140 | + kflag r5 |
141 | +#endif |
142 | .endm |
143 | |
144 | .section .init.text, "ax",@progbits |
145 | @@ -93,9 +103,9 @@ ENTRY(stext) |
146 | #ifdef CONFIG_ARC_UBOOT_SUPPORT |
147 | ; Uboot - kernel ABI |
148 | ; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2 |
149 | - ; r1 = magic number (board identity, unused as of now |
150 | + ; r1 = magic number (always zero as of now) |
151 | ; r2 = pointer to uboot provided cmdline or external DTB in mem |
152 | - ; These are handled later in setup_arch() |
153 | + ; These are handled later in handle_uboot_args() |
154 | st r0, [@uboot_tag] |
155 | st r2, [@uboot_arg] |
156 | #endif |
157 | diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c |
158 | index 0385df77a6973..9119bea503a7c 100644 |
159 | --- a/arch/arc/kernel/setup.c |
160 | +++ b/arch/arc/kernel/setup.c |
161 | @@ -381,43 +381,80 @@ void setup_processor(void) |
162 | arc_chk_core_config(); |
163 | } |
164 | |
165 | -static inline int is_kernel(unsigned long addr) |
166 | +static inline bool uboot_arg_invalid(unsigned long addr) |
167 | { |
168 | - if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end) |
169 | - return 1; |
170 | - return 0; |
171 | + /* |
172 | + * Check that it is a untranslated address (although MMU is not enabled |
173 | + * yet, it being a high address ensures this is not by fluke) |
174 | + */ |
175 | + if (addr < PAGE_OFFSET) |
176 | + return true; |
177 | + |
178 | + /* Check that address doesn't clobber resident kernel image */ |
179 | + return addr >= (unsigned long)_stext && addr <= (unsigned long)_end; |
180 | } |
181 | |
182 | -void __init setup_arch(char **cmdline_p) |
183 | +#define IGNORE_ARGS "Ignore U-boot args: " |
184 | + |
185 | +/* uboot_tag values for U-boot - kernel ABI revision 0; see head.S */ |
186 | +#define UBOOT_TAG_NONE 0 |
187 | +#define UBOOT_TAG_CMDLINE 1 |
188 | +#define UBOOT_TAG_DTB 2 |
189 | + |
190 | +void __init handle_uboot_args(void) |
191 | { |
192 | + bool use_embedded_dtb = true; |
193 | + bool append_cmdline = false; |
194 | + |
195 | #ifdef CONFIG_ARC_UBOOT_SUPPORT |
196 | - /* make sure that uboot passed pointer to cmdline/dtb is valid */ |
197 | - if (uboot_tag && is_kernel((unsigned long)uboot_arg)) |
198 | - panic("Invalid uboot arg\n"); |
199 | + /* check that we know this tag */ |
200 | + if (uboot_tag != UBOOT_TAG_NONE && |
201 | + uboot_tag != UBOOT_TAG_CMDLINE && |
202 | + uboot_tag != UBOOT_TAG_DTB) { |
203 | + pr_warn(IGNORE_ARGS "invalid uboot tag: '%08x'\n", uboot_tag); |
204 | + goto ignore_uboot_args; |
205 | + } |
206 | + |
207 | + if (uboot_tag != UBOOT_TAG_NONE && |
208 | + uboot_arg_invalid((unsigned long)uboot_arg)) { |
209 | + pr_warn(IGNORE_ARGS "invalid uboot arg: '%px'\n", uboot_arg); |
210 | + goto ignore_uboot_args; |
211 | + } |
212 | + |
213 | + /* see if U-boot passed an external Device Tree blob */ |
214 | + if (uboot_tag == UBOOT_TAG_DTB) { |
215 | + machine_desc = setup_machine_fdt((void *)uboot_arg); |
216 | |
217 | - /* See if u-boot passed an external Device Tree blob */ |
218 | - machine_desc = setup_machine_fdt(uboot_arg); /* uboot_tag == 2 */ |
219 | - if (!machine_desc) |
220 | + /* external Device Tree blob is invalid - use embedded one */ |
221 | + use_embedded_dtb = !machine_desc; |
222 | + } |
223 | + |
224 | + if (uboot_tag == UBOOT_TAG_CMDLINE) |
225 | + append_cmdline = true; |
226 | + |
227 | +ignore_uboot_args: |
228 | #endif |
229 | - { |
230 | - /* No, so try the embedded one */ |
231 | + |
232 | + if (use_embedded_dtb) { |
233 | machine_desc = setup_machine_fdt(__dtb_start); |
234 | if (!machine_desc) |
235 | panic("Embedded DT invalid\n"); |
236 | + } |
237 | |
238 | - /* |
239 | - * If we are here, it is established that @uboot_arg didn't |
240 | - * point to DT blob. Instead if u-boot says it is cmdline, |
241 | - * append to embedded DT cmdline. |
242 | - * setup_machine_fdt() would have populated @boot_command_line |
243 | - */ |
244 | - if (uboot_tag == 1) { |
245 | - /* Ensure a whitespace between the 2 cmdlines */ |
246 | - strlcat(boot_command_line, " ", COMMAND_LINE_SIZE); |
247 | - strlcat(boot_command_line, uboot_arg, |
248 | - COMMAND_LINE_SIZE); |
249 | - } |
250 | + /* |
251 | + * NOTE: @boot_command_line is populated by setup_machine_fdt() so this |
252 | + * append processing can only happen after. |
253 | + */ |
254 | + if (append_cmdline) { |
255 | + /* Ensure a whitespace between the 2 cmdlines */ |
256 | + strlcat(boot_command_line, " ", COMMAND_LINE_SIZE); |
257 | + strlcat(boot_command_line, uboot_arg, COMMAND_LINE_SIZE); |
258 | } |
259 | +} |
260 | + |
261 | +void __init setup_arch(char **cmdline_p) |
262 | +{ |
263 | + handle_uboot_args(); |
264 | |
265 | /* Save unparsed command line copy for /proc/cmdline */ |
266 | *cmdline_p = boot_command_line; |
267 | diff --git a/arch/arm64/include/asm/arch_gicv3.h b/arch/arm64/include/asm/arch_gicv3.h |
268 | index f8ae6d6e4767e..85a15b38b6d8c 100644 |
269 | --- a/arch/arm64/include/asm/arch_gicv3.h |
270 | +++ b/arch/arm64/include/asm/arch_gicv3.h |
271 | @@ -80,18 +80,8 @@ |
272 | #include <linux/stringify.h> |
273 | #include <asm/barrier.h> |
274 | |
275 | -#define read_gicreg(r) \ |
276 | - ({ \ |
277 | - u64 reg; \ |
278 | - asm volatile("mrs_s %0, " __stringify(r) : "=r" (reg)); \ |
279 | - reg; \ |
280 | - }) |
281 | - |
282 | -#define write_gicreg(v,r) \ |
283 | - do { \ |
284 | - u64 __val = (v); \ |
285 | - asm volatile("msr_s " __stringify(r) ", %0" : : "r" (__val));\ |
286 | - } while (0) |
287 | +#define read_gicreg read_sysreg_s |
288 | +#define write_gicreg write_sysreg_s |
289 | |
290 | /* |
291 | * Low-level accessors |
292 | @@ -102,13 +92,13 @@ |
293 | |
294 | static inline void gic_write_eoir(u32 irq) |
295 | { |
296 | - asm volatile("msr_s " __stringify(ICC_EOIR1_EL1) ", %0" : : "r" ((u64)irq)); |
297 | + write_sysreg_s(irq, ICC_EOIR1_EL1); |
298 | isb(); |
299 | } |
300 | |
301 | static inline void gic_write_dir(u32 irq) |
302 | { |
303 | - asm volatile("msr_s " __stringify(ICC_DIR_EL1) ", %0" : : "r" ((u64)irq)); |
304 | + write_sysreg_s(irq, ICC_DIR_EL1); |
305 | isb(); |
306 | } |
307 | |
308 | @@ -116,7 +106,7 @@ static inline u64 gic_read_iar_common(void) |
309 | { |
310 | u64 irqstat; |
311 | |
312 | - asm volatile("mrs_s %0, " __stringify(ICC_IAR1_EL1) : "=r" (irqstat)); |
313 | + irqstat = read_sysreg_s(ICC_IAR1_EL1); |
314 | dsb(sy); |
315 | return irqstat; |
316 | } |
317 | @@ -134,10 +124,12 @@ static inline u64 gic_read_iar_cavium_thunderx(void) |
318 | |
319 | asm volatile( |
320 | "nop;nop;nop;nop\n\t" |
321 | - "nop;nop;nop;nop\n\t" |
322 | - "mrs_s %0, " __stringify(ICC_IAR1_EL1) "\n\t" |
323 | - "nop;nop;nop;nop" |
324 | - : "=r" (irqstat)); |
325 | + "nop;nop;nop;nop"); |
326 | + |
327 | + irqstat = read_sysreg_s(ICC_IAR1_EL1); |
328 | + |
329 | + asm volatile( |
330 | + "nop;nop;nop;nop"); |
331 | mb(); |
332 | |
333 | return irqstat; |
334 | @@ -145,43 +137,40 @@ static inline u64 gic_read_iar_cavium_thunderx(void) |
335 | |
336 | static inline void gic_write_pmr(u32 val) |
337 | { |
338 | - asm volatile("msr_s " __stringify(ICC_PMR_EL1) ", %0" : : "r" ((u64)val)); |
339 | + write_sysreg_s(val, ICC_PMR_EL1); |
340 | } |
341 | |
342 | static inline void gic_write_ctlr(u32 val) |
343 | { |
344 | - asm volatile("msr_s " __stringify(ICC_CTLR_EL1) ", %0" : : "r" ((u64)val)); |
345 | + write_sysreg_s(val, ICC_CTLR_EL1); |
346 | isb(); |
347 | } |
348 | |
349 | static inline void gic_write_grpen1(u32 val) |
350 | { |
351 | - asm volatile("msr_s " __stringify(ICC_GRPEN1_EL1) ", %0" : : "r" ((u64)val)); |
352 | + write_sysreg_s(val, ICC_GRPEN1_EL1); |
353 | isb(); |
354 | } |
355 | |
356 | static inline void gic_write_sgi1r(u64 val) |
357 | { |
358 | - asm volatile("msr_s " __stringify(ICC_SGI1R_EL1) ", %0" : : "r" (val)); |
359 | + write_sysreg_s(val, ICC_SGI1R_EL1); |
360 | } |
361 | |
362 | static inline u32 gic_read_sre(void) |
363 | { |
364 | - u64 val; |
365 | - |
366 | - asm volatile("mrs_s %0, " __stringify(ICC_SRE_EL1) : "=r" (val)); |
367 | - return val; |
368 | + return read_sysreg_s(ICC_SRE_EL1); |
369 | } |
370 | |
371 | static inline void gic_write_sre(u32 val) |
372 | { |
373 | - asm volatile("msr_s " __stringify(ICC_SRE_EL1) ", %0" : : "r" ((u64)val)); |
374 | + write_sysreg_s(val, ICC_SRE_EL1); |
375 | isb(); |
376 | } |
377 | |
378 | static inline void gic_write_bpr1(u32 val) |
379 | { |
380 | - asm volatile("msr_s " __stringify(ICC_BPR1_EL1) ", %0" : : "r" (val)); |
381 | + write_sysreg_s(val, ICC_BPR1_EL1); |
382 | } |
383 | |
384 | #define gic_read_typer(c) readq_relaxed(c) |
385 | diff --git a/arch/mips/configs/ath79_defconfig b/arch/mips/configs/ath79_defconfig |
386 | index 134879c1310a0..4ed369c0ec6a1 100644 |
387 | --- a/arch/mips/configs/ath79_defconfig |
388 | +++ b/arch/mips/configs/ath79_defconfig |
389 | @@ -74,6 +74,7 @@ CONFIG_SERIAL_8250_CONSOLE=y |
390 | # CONFIG_SERIAL_8250_PCI is not set |
391 | CONFIG_SERIAL_8250_NR_UARTS=1 |
392 | CONFIG_SERIAL_8250_RUNTIME_UARTS=1 |
393 | +CONFIG_SERIAL_OF_PLATFORM=y |
394 | CONFIG_SERIAL_AR933X=y |
395 | CONFIG_SERIAL_AR933X_CONSOLE=y |
396 | # CONFIG_HW_RANDOM is not set |
397 | diff --git a/arch/mips/jazz/jazzdma.c b/arch/mips/jazz/jazzdma.c |
398 | index db6f5afff4ff1..ea897912bc712 100644 |
399 | --- a/arch/mips/jazz/jazzdma.c |
400 | +++ b/arch/mips/jazz/jazzdma.c |
401 | @@ -71,14 +71,15 @@ static int __init vdma_init(void) |
402 | get_order(VDMA_PGTBL_SIZE)); |
403 | BUG_ON(!pgtbl); |
404 | dma_cache_wback_inv((unsigned long)pgtbl, VDMA_PGTBL_SIZE); |
405 | - pgtbl = (VDMA_PGTBL_ENTRY *)KSEG1ADDR(pgtbl); |
406 | + pgtbl = (VDMA_PGTBL_ENTRY *)CKSEG1ADDR((unsigned long)pgtbl); |
407 | |
408 | /* |
409 | * Clear the R4030 translation table |
410 | */ |
411 | vdma_pgtbl_init(); |
412 | |
413 | - r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE, CPHYSADDR(pgtbl)); |
414 | + r4030_write_reg32(JAZZ_R4030_TRSTBL_BASE, |
415 | + CPHYSADDR((unsigned long)pgtbl)); |
416 | r4030_write_reg32(JAZZ_R4030_TRSTBL_LIM, VDMA_PGTBL_SIZE); |
417 | r4030_write_reg32(JAZZ_R4030_TRSTBL_INV, 0); |
418 | |
419 | diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c |
420 | index e02d7b4d2b693..0780c375fe2e2 100644 |
421 | --- a/arch/parisc/kernel/ptrace.c |
422 | +++ b/arch/parisc/kernel/ptrace.c |
423 | @@ -311,15 +311,29 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
424 | |
425 | long do_syscall_trace_enter(struct pt_regs *regs) |
426 | { |
427 | - if (test_thread_flag(TIF_SYSCALL_TRACE) && |
428 | - tracehook_report_syscall_entry(regs)) { |
429 | + if (test_thread_flag(TIF_SYSCALL_TRACE)) { |
430 | + int rc = tracehook_report_syscall_entry(regs); |
431 | + |
432 | /* |
433 | - * Tracing decided this syscall should not happen or the |
434 | - * debugger stored an invalid system call number. Skip |
435 | - * the system call and the system call restart handling. |
436 | + * As tracesys_next does not set %r28 to -ENOSYS |
437 | + * when %r20 is set to -1, initialize it here. |
438 | */ |
439 | - regs->gr[20] = -1UL; |
440 | - goto out; |
441 | + regs->gr[28] = -ENOSYS; |
442 | + |
443 | + if (rc) { |
444 | + /* |
445 | + * A nonzero return code from |
446 | + * tracehook_report_syscall_entry() tells us |
447 | + * to prevent the syscall execution. Skip |
448 | + * the syscall call and the syscall restart handling. |
449 | + * |
450 | + * Note that the tracer may also just change |
451 | + * regs->gr[20] to an invalid syscall number, |
452 | + * that is handled by tracesys_next. |
453 | + */ |
454 | + regs->gr[20] = -1UL; |
455 | + return -1; |
456 | + } |
457 | } |
458 | |
459 | /* Do the secure computing check after ptrace. */ |
460 | @@ -343,7 +357,6 @@ long do_syscall_trace_enter(struct pt_regs *regs) |
461 | regs->gr[24] & 0xffffffff, |
462 | regs->gr[23] & 0xffffffff); |
463 | |
464 | -out: |
465 | /* |
466 | * Sign extend the syscall number to 64bit since it may have been |
467 | * modified by a compat ptrace call |
468 | diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile |
469 | index cda8e14bd72a3..89b163351e642 100644 |
470 | --- a/arch/x86/boot/compressed/Makefile |
471 | +++ b/arch/x86/boot/compressed/Makefile |
472 | @@ -34,6 +34,7 @@ KBUILD_CFLAGS += $(cflags-y) |
473 | KBUILD_CFLAGS += -mno-mmx -mno-sse |
474 | KBUILD_CFLAGS += $(call cc-option,-ffreestanding) |
475 | KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) |
476 | +KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member) |
477 | |
478 | KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ |
479 | GCOV_PROFILE := n |
480 | diff --git a/drivers/atm/he.c b/drivers/atm/he.c |
481 | index 31b513a23ae0c..985a5800a6376 100644 |
482 | --- a/drivers/atm/he.c |
483 | +++ b/drivers/atm/he.c |
484 | @@ -717,7 +717,7 @@ static int he_init_cs_block_rcm(struct he_dev *he_dev) |
485 | instead of '/ 512', use '>> 9' to prevent a call |
486 | to divdu3 on x86 platforms |
487 | */ |
488 | - rate_cps = (unsigned long long) (1 << exp) * (man + 512) >> 9; |
489 | + rate_cps = (unsigned long long) (1UL << exp) * (man + 512) >> 9; |
490 | |
491 | if (rate_cps < 10) |
492 | rate_cps = 10; /* 2.2.1 minimum payload rate is 10 cps */ |
493 | diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c |
494 | index be54e5331a451..50272fe81f267 100644 |
495 | --- a/drivers/char/hpet.c |
496 | +++ b/drivers/char/hpet.c |
497 | @@ -574,7 +574,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets, |
498 | } |
499 | |
500 | static int |
501 | -hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg, |
502 | +hpet_ioctl_common(struct hpet_dev *devp, unsigned int cmd, unsigned long arg, |
503 | struct hpet_info *info) |
504 | { |
505 | struct hpet_timer __iomem *timer; |
506 | diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c |
507 | index 279d1e021421b..685247c3d489f 100644 |
508 | --- a/drivers/gpu/drm/i915/i915_irq.c |
509 | +++ b/drivers/gpu/drm/i915/i915_irq.c |
510 | @@ -1985,10 +1985,10 @@ static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir) |
511 | DRM_DEBUG_DRIVER("PCH transcoder CRC error interrupt\n"); |
512 | |
513 | if (pch_iir & SDE_TRANSA_FIFO_UNDER) |
514 | - intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_A); |
515 | + intel_pch_fifo_underrun_irq_handler(dev_priv, PIPE_A); |
516 | |
517 | if (pch_iir & SDE_TRANSB_FIFO_UNDER) |
518 | - intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_B); |
519 | + intel_pch_fifo_underrun_irq_handler(dev_priv, PIPE_B); |
520 | } |
521 | |
522 | static void ivb_err_int_handler(struct drm_i915_private *dev_priv) |
523 | @@ -2022,13 +2022,13 @@ static void cpt_serr_int_handler(struct drm_i915_private *dev_priv) |
524 | DRM_ERROR("PCH poison interrupt\n"); |
525 | |
526 | if (serr_int & SERR_INT_TRANS_A_FIFO_UNDERRUN) |
527 | - intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_A); |
528 | + intel_pch_fifo_underrun_irq_handler(dev_priv, PIPE_A); |
529 | |
530 | if (serr_int & SERR_INT_TRANS_B_FIFO_UNDERRUN) |
531 | - intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_B); |
532 | + intel_pch_fifo_underrun_irq_handler(dev_priv, PIPE_B); |
533 | |
534 | if (serr_int & SERR_INT_TRANS_C_FIFO_UNDERRUN) |
535 | - intel_pch_fifo_underrun_irq_handler(dev_priv, TRANSCODER_C); |
536 | + intel_pch_fifo_underrun_irq_handler(dev_priv, PIPE_C); |
537 | |
538 | I915_WRITE(SERR_INT, serr_int); |
539 | } |
540 | diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
541 | index c185625d67f20..d915877b6ecbc 100644 |
542 | --- a/drivers/gpu/drm/i915/intel_display.c |
543 | +++ b/drivers/gpu/drm/i915/intel_display.c |
544 | @@ -1849,7 +1849,7 @@ static void lpt_enable_pch_transcoder(struct drm_i915_private *dev_priv, |
545 | |
546 | /* FDI must be feeding us bits for PCH ports */ |
547 | assert_fdi_tx_enabled(dev_priv, (enum pipe) cpu_transcoder); |
548 | - assert_fdi_rx_enabled(dev_priv, TRANSCODER_A); |
549 | + assert_fdi_rx_enabled(dev_priv, PIPE_A); |
550 | |
551 | /* Workaround: set timing override bit. */ |
552 | val = I915_READ(TRANS_CHICKEN2(PIPE_A)); |
553 | @@ -1950,7 +1950,7 @@ static void intel_enable_pipe(struct intel_crtc *crtc) |
554 | assert_sprites_disabled(dev_priv, pipe); |
555 | |
556 | if (HAS_PCH_LPT(dev_priv)) |
557 | - pch_transcoder = TRANSCODER_A; |
558 | + pch_transcoder = PIPE_A; |
559 | else |
560 | pch_transcoder = pipe; |
561 | |
562 | @@ -4636,7 +4636,7 @@ static void lpt_pch_enable(struct drm_crtc *crtc) |
563 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
564 | enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder; |
565 | |
566 | - assert_pch_transcoder_disabled(dev_priv, TRANSCODER_A); |
567 | + assert_pch_transcoder_disabled(dev_priv, PIPE_A); |
568 | |
569 | lpt_program_iclkip(crtc); |
570 | |
571 | @@ -5410,7 +5410,7 @@ static void haswell_crtc_enable(struct intel_crtc_state *pipe_config, |
572 | return; |
573 | |
574 | if (intel_crtc->config->has_pch_encoder) |
575 | - intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, |
576 | + intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, |
577 | false); |
578 | |
579 | intel_encoders_pre_pll_enable(crtc, pipe_config, old_state); |
580 | @@ -5498,7 +5498,7 @@ static void haswell_crtc_enable(struct intel_crtc_state *pipe_config, |
581 | intel_wait_for_vblank(dev, pipe); |
582 | intel_wait_for_vblank(dev, pipe); |
583 | intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true); |
584 | - intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, |
585 | + intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, |
586 | true); |
587 | } |
588 | |
589 | @@ -5597,7 +5597,7 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state, |
590 | enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder; |
591 | |
592 | if (intel_crtc->config->has_pch_encoder) |
593 | - intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, |
594 | + intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, |
595 | false); |
596 | |
597 | intel_encoders_disable(crtc, old_crtc_state, old_state); |
598 | @@ -5626,7 +5626,7 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state, |
599 | intel_encoders_post_disable(crtc, old_crtc_state, old_state); |
600 | |
601 | if (old_crtc_state->has_pch_encoder) |
602 | - intel_set_pch_fifo_underrun_reporting(dev_priv, TRANSCODER_A, |
603 | + intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, |
604 | true); |
605 | } |
606 | |
607 | diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h |
608 | index 6a9860df208f5..8aafb96015402 100644 |
609 | --- a/drivers/gpu/drm/i915/intel_drv.h |
610 | +++ b/drivers/gpu/drm/i915/intel_drv.h |
611 | @@ -1095,12 +1095,12 @@ static inline unsigned int intel_num_planes(struct intel_crtc *crtc) |
612 | bool intel_set_cpu_fifo_underrun_reporting(struct drm_i915_private *dev_priv, |
613 | enum pipe pipe, bool enable); |
614 | bool intel_set_pch_fifo_underrun_reporting(struct drm_i915_private *dev_priv, |
615 | - enum transcoder pch_transcoder, |
616 | + enum pipe pch_transcoder, |
617 | bool enable); |
618 | void intel_cpu_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv, |
619 | enum pipe pipe); |
620 | void intel_pch_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv, |
621 | - enum transcoder pch_transcoder); |
622 | + enum pipe pch_transcoder); |
623 | void intel_check_cpu_fifo_underruns(struct drm_i915_private *dev_priv); |
624 | void intel_check_pch_fifo_underruns(struct drm_i915_private *dev_priv); |
625 | |
626 | diff --git a/drivers/gpu/drm/i915/intel_fifo_underrun.c b/drivers/gpu/drm/i915/intel_fifo_underrun.c |
627 | index 2aa744081f090..b6b64a2d4b71c 100644 |
628 | --- a/drivers/gpu/drm/i915/intel_fifo_underrun.c |
629 | +++ b/drivers/gpu/drm/i915/intel_fifo_underrun.c |
630 | @@ -185,11 +185,11 @@ static void broadwell_set_fifo_underrun_reporting(struct drm_device *dev, |
631 | } |
632 | |
633 | static void ibx_set_fifo_underrun_reporting(struct drm_device *dev, |
634 | - enum transcoder pch_transcoder, |
635 | + enum pipe pch_transcoder, |
636 | bool enable) |
637 | { |
638 | struct drm_i915_private *dev_priv = to_i915(dev); |
639 | - uint32_t bit = (pch_transcoder == TRANSCODER_A) ? |
640 | + uint32_t bit = (pch_transcoder == PIPE_A) ? |
641 | SDE_TRANSA_FIFO_UNDER : SDE_TRANSB_FIFO_UNDER; |
642 | |
643 | if (enable) |
644 | @@ -201,7 +201,7 @@ static void ibx_set_fifo_underrun_reporting(struct drm_device *dev, |
645 | static void cpt_check_pch_fifo_underruns(struct intel_crtc *crtc) |
646 | { |
647 | struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); |
648 | - enum transcoder pch_transcoder = (enum transcoder) crtc->pipe; |
649 | + enum pipe pch_transcoder = crtc->pipe; |
650 | uint32_t serr_int = I915_READ(SERR_INT); |
651 | |
652 | assert_spin_locked(&dev_priv->irq_lock); |
653 | @@ -212,12 +212,12 @@ static void cpt_check_pch_fifo_underruns(struct intel_crtc *crtc) |
654 | I915_WRITE(SERR_INT, SERR_INT_TRANS_FIFO_UNDERRUN(pch_transcoder)); |
655 | POSTING_READ(SERR_INT); |
656 | |
657 | - DRM_ERROR("pch fifo underrun on pch transcoder %s\n", |
658 | - transcoder_name(pch_transcoder)); |
659 | + DRM_ERROR("pch fifo underrun on pch transcoder %c\n", |
660 | + pipe_name(pch_transcoder)); |
661 | } |
662 | |
663 | static void cpt_set_fifo_underrun_reporting(struct drm_device *dev, |
664 | - enum transcoder pch_transcoder, |
665 | + enum pipe pch_transcoder, |
666 | bool enable, bool old) |
667 | { |
668 | struct drm_i915_private *dev_priv = to_i915(dev); |
669 | @@ -235,8 +235,8 @@ static void cpt_set_fifo_underrun_reporting(struct drm_device *dev, |
670 | |
671 | if (old && I915_READ(SERR_INT) & |
672 | SERR_INT_TRANS_FIFO_UNDERRUN(pch_transcoder)) { |
673 | - DRM_ERROR("uncleared pch fifo underrun on pch transcoder %s\n", |
674 | - transcoder_name(pch_transcoder)); |
675 | + DRM_ERROR("uncleared pch fifo underrun on pch transcoder %c\n", |
676 | + pipe_name(pch_transcoder)); |
677 | } |
678 | } |
679 | } |
680 | @@ -311,7 +311,7 @@ bool intel_set_cpu_fifo_underrun_reporting(struct drm_i915_private *dev_priv, |
681 | * Returns the previous state of underrun reporting. |
682 | */ |
683 | bool intel_set_pch_fifo_underrun_reporting(struct drm_i915_private *dev_priv, |
684 | - enum transcoder pch_transcoder, |
685 | + enum pipe pch_transcoder, |
686 | bool enable) |
687 | { |
688 | struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pch_transcoder]; |
689 | @@ -384,12 +384,12 @@ void intel_cpu_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv, |
690 | * interrupt to avoid an irq storm. |
691 | */ |
692 | void intel_pch_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv, |
693 | - enum transcoder pch_transcoder) |
694 | + enum pipe pch_transcoder) |
695 | { |
696 | if (intel_set_pch_fifo_underrun_reporting(dev_priv, pch_transcoder, |
697 | false)) |
698 | - DRM_ERROR("PCH transcoder %s FIFO underrun\n", |
699 | - transcoder_name(pch_transcoder)); |
700 | + DRM_ERROR("PCH transcoder %c FIFO underrun\n", |
701 | + pipe_name(pch_transcoder)); |
702 | } |
703 | |
704 | /** |
705 | diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c |
706 | index 646359025574a..74de1ae48d4f7 100644 |
707 | --- a/drivers/infiniband/ulp/srp/ib_srp.c |
708 | +++ b/drivers/infiniband/ulp/srp/ib_srp.c |
709 | @@ -2639,7 +2639,6 @@ static int srp_reset_device(struct scsi_cmnd *scmnd) |
710 | { |
711 | struct srp_target_port *target = host_to_target(scmnd->device->host); |
712 | struct srp_rdma_ch *ch; |
713 | - int i, j; |
714 | u8 status; |
715 | |
716 | shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n"); |
717 | @@ -2651,15 +2650,6 @@ static int srp_reset_device(struct scsi_cmnd *scmnd) |
718 | if (status) |
719 | return FAILED; |
720 | |
721 | - for (i = 0; i < target->ch_count; i++) { |
722 | - ch = &target->ch[i]; |
723 | - for (j = 0; j < target->req_ring_size; ++j) { |
724 | - struct srp_request *req = &ch->req_ring[j]; |
725 | - |
726 | - srp_finish_req(ch, req, scmnd->device, DID_RESET << 16); |
727 | - } |
728 | - } |
729 | - |
730 | return SUCCESS; |
731 | } |
732 | |
733 | diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c |
734 | index 4d9b195547c5c..df2a10157720a 100644 |
735 | --- a/drivers/isdn/hardware/avm/b1.c |
736 | +++ b/drivers/isdn/hardware/avm/b1.c |
737 | @@ -423,7 +423,7 @@ void b1_parse_version(avmctrl_info *cinfo) |
738 | int i, j; |
739 | |
740 | for (j = 0; j < AVM_MAXVERSION; j++) |
741 | - cinfo->version[j] = "\0\0" + 1; |
742 | + cinfo->version[j] = ""; |
743 | for (i = 0, j = 0; |
744 | j < AVM_MAXVERSION && i < cinfo->versionlen; |
745 | j++, i += cinfo->versionbuf[i] + 1) |
746 | diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c |
747 | index 63eaa0a9f8a18..d4e0d1602c80f 100644 |
748 | --- a/drivers/isdn/i4l/isdn_tty.c |
749 | +++ b/drivers/isdn/i4l/isdn_tty.c |
750 | @@ -1455,15 +1455,19 @@ isdn_tty_set_termios(struct tty_struct *tty, struct ktermios *old_termios) |
751 | { |
752 | modem_info *info = (modem_info *) tty->driver_data; |
753 | |
754 | + mutex_lock(&modem_info_mutex); |
755 | if (!old_termios) |
756 | isdn_tty_change_speed(info); |
757 | else { |
758 | if (tty->termios.c_cflag == old_termios->c_cflag && |
759 | tty->termios.c_ispeed == old_termios->c_ispeed && |
760 | - tty->termios.c_ospeed == old_termios->c_ospeed) |
761 | + tty->termios.c_ospeed == old_termios->c_ospeed) { |
762 | + mutex_unlock(&modem_info_mutex); |
763 | return; |
764 | + } |
765 | isdn_tty_change_speed(info); |
766 | } |
767 | + mutex_unlock(&modem_info_mutex); |
768 | } |
769 | |
770 | /* |
771 | diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c |
772 | index c5b30f06218a3..44ceed7ac3c5b 100644 |
773 | --- a/drivers/leds/leds-lp5523.c |
774 | +++ b/drivers/leds/leds-lp5523.c |
775 | @@ -318,7 +318,9 @@ static int lp5523_init_program_engine(struct lp55xx_chip *chip) |
776 | |
777 | /* Let the programs run for couple of ms and check the engine status */ |
778 | usleep_range(3000, 6000); |
779 | - lp55xx_read(chip, LP5523_REG_STATUS, &status); |
780 | + ret = lp55xx_read(chip, LP5523_REG_STATUS, &status); |
781 | + if (ret) |
782 | + return ret; |
783 | status &= LP5523_ENG_STATUS_MASK; |
784 | |
785 | if (status != LP5523_ENG_STATUS_MASK) { |
786 | diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c |
787 | index 589eebfc13df9..2f212bdc187a4 100644 |
788 | --- a/drivers/mfd/ab8500-core.c |
789 | +++ b/drivers/mfd/ab8500-core.c |
790 | @@ -257,7 +257,7 @@ static int get_register_interruptible(struct ab8500 *ab8500, u8 bank, |
791 | mutex_unlock(&ab8500->lock); |
792 | dev_vdbg(ab8500->dev, "rd: addr %#x => data %#x\n", addr, ret); |
793 | |
794 | - return ret; |
795 | + return (ret < 0) ? ret : 0; |
796 | } |
797 | |
798 | static int ab8500_get_register(struct device *dev, u8 bank, |
799 | diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c |
800 | index ca38a6a141100..26ccf3f4ade9c 100644 |
801 | --- a/drivers/mfd/db8500-prcmu.c |
802 | +++ b/drivers/mfd/db8500-prcmu.c |
803 | @@ -2588,7 +2588,7 @@ static struct irq_chip prcmu_irq_chip = { |
804 | .irq_unmask = prcmu_irq_unmask, |
805 | }; |
806 | |
807 | -static __init char *fw_project_name(u32 project) |
808 | +static char *fw_project_name(u32 project) |
809 | { |
810 | switch (project) { |
811 | case PRCMU_FW_PROJECT_U8500: |
812 | @@ -2736,7 +2736,7 @@ void __init db8500_prcmu_early_init(u32 phy_base, u32 size) |
813 | INIT_WORK(&mb0_transfer.mask_work, prcmu_mask_work); |
814 | } |
815 | |
816 | -static void __init init_prcm_registers(void) |
817 | +static void init_prcm_registers(void) |
818 | { |
819 | u32 val; |
820 | |
821 | diff --git a/drivers/mfd/mc13xxx-core.c b/drivers/mfd/mc13xxx-core.c |
822 | index d7f54e492aa61..6c16f170529f5 100644 |
823 | --- a/drivers/mfd/mc13xxx-core.c |
824 | +++ b/drivers/mfd/mc13xxx-core.c |
825 | @@ -274,7 +274,9 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode, |
826 | |
827 | mc13xxx->adcflags |= MC13XXX_ADC_WORKING; |
828 | |
829 | - mc13xxx_reg_read(mc13xxx, MC13XXX_ADC0, &old_adc0); |
830 | + ret = mc13xxx_reg_read(mc13xxx, MC13XXX_ADC0, &old_adc0); |
831 | + if (ret) |
832 | + goto out; |
833 | |
834 | adc0 = MC13XXX_ADC0_ADINC1 | MC13XXX_ADC0_ADINC2; |
835 | adc1 = MC13XXX_ADC1_ADEN | MC13XXX_ADC1_ADTRIGIGN | MC13XXX_ADC1_ASC; |
836 | diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c |
837 | index e14d8b058f0c2..5d4c10f05450a 100644 |
838 | --- a/drivers/mfd/mt6397-core.c |
839 | +++ b/drivers/mfd/mt6397-core.c |
840 | @@ -306,8 +306,7 @@ static int mt6397_probe(struct platform_device *pdev) |
841 | |
842 | default: |
843 | dev_err(&pdev->dev, "unsupported chip: %d\n", id); |
844 | - ret = -ENODEV; |
845 | - break; |
846 | + return -ENODEV; |
847 | } |
848 | |
849 | if (ret) { |
850 | diff --git a/drivers/mfd/qcom_rpm.c b/drivers/mfd/qcom_rpm.c |
851 | index 52fafea06067e..8d420c37b2a61 100644 |
852 | --- a/drivers/mfd/qcom_rpm.c |
853 | +++ b/drivers/mfd/qcom_rpm.c |
854 | @@ -638,6 +638,10 @@ static int qcom_rpm_probe(struct platform_device *pdev) |
855 | return -EFAULT; |
856 | } |
857 | |
858 | + writel(fw_version[0], RPM_CTRL_REG(rpm, 0)); |
859 | + writel(fw_version[1], RPM_CTRL_REG(rpm, 1)); |
860 | + writel(fw_version[2], RPM_CTRL_REG(rpm, 2)); |
861 | + |
862 | dev_info(&pdev->dev, "RPM firmware %u.%u.%u\n", fw_version[0], |
863 | fw_version[1], |
864 | fw_version[2]); |
865 | diff --git a/drivers/mfd/ti_am335x_tscadc.c b/drivers/mfd/ti_am335x_tscadc.c |
866 | index 798f0a829637f..60286adbd6a1c 100644 |
867 | --- a/drivers/mfd/ti_am335x_tscadc.c |
868 | +++ b/drivers/mfd/ti_am335x_tscadc.c |
869 | @@ -264,8 +264,9 @@ static int ti_tscadc_probe(struct platform_device *pdev) |
870 | cell->pdata_size = sizeof(tscadc); |
871 | } |
872 | |
873 | - err = mfd_add_devices(&pdev->dev, pdev->id, tscadc->cells, |
874 | - tscadc->used_cells, NULL, 0, NULL); |
875 | + err = mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, |
876 | + tscadc->cells, tscadc->used_cells, NULL, |
877 | + 0, NULL); |
878 | if (err < 0) |
879 | goto err_disable_clk; |
880 | |
881 | diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c |
882 | index c64615dca2bd3..1d58df8565488 100644 |
883 | --- a/drivers/mfd/twl-core.c |
884 | +++ b/drivers/mfd/twl-core.c |
885 | @@ -979,7 +979,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base, |
886 | * letting it generate the right frequencies for USB, MADC, and |
887 | * other purposes. |
888 | */ |
889 | -static inline int __init protect_pm_master(void) |
890 | +static inline int protect_pm_master(void) |
891 | { |
892 | int e = 0; |
893 | |
894 | @@ -988,7 +988,7 @@ static inline int __init protect_pm_master(void) |
895 | return e; |
896 | } |
897 | |
898 | -static inline int __init unprotect_pm_master(void) |
899 | +static inline int unprotect_pm_master(void) |
900 | { |
901 | int e = 0; |
902 | |
903 | diff --git a/drivers/mfd/wm5110-tables.c b/drivers/mfd/wm5110-tables.c |
904 | index 1ee68bd440fbc..16c6e2accfaa5 100644 |
905 | --- a/drivers/mfd/wm5110-tables.c |
906 | +++ b/drivers/mfd/wm5110-tables.c |
907 | @@ -1618,6 +1618,7 @@ static const struct reg_default wm5110_reg_default[] = { |
908 | { 0x00000ECD, 0x0000 }, /* R3789 - HPLPF4_2 */ |
909 | { 0x00000EE0, 0x0000 }, /* R3808 - ASRC_ENABLE */ |
910 | { 0x00000EE2, 0x0000 }, /* R3810 - ASRC_RATE1 */ |
911 | + { 0x00000EE3, 0x4000 }, /* R3811 - ASRC_RATE2 */ |
912 | { 0x00000EF0, 0x0000 }, /* R3824 - ISRC 1 CTRL 1 */ |
913 | { 0x00000EF1, 0x0000 }, /* R3825 - ISRC 1 CTRL 2 */ |
914 | { 0x00000EF2, 0x0000 }, /* R3826 - ISRC 1 CTRL 3 */ |
915 | @@ -2869,6 +2870,7 @@ static bool wm5110_readable_register(struct device *dev, unsigned int reg) |
916 | case ARIZONA_ASRC_ENABLE: |
917 | case ARIZONA_ASRC_STATUS: |
918 | case ARIZONA_ASRC_RATE1: |
919 | + case ARIZONA_ASRC_RATE2: |
920 | case ARIZONA_ISRC_1_CTRL_1: |
921 | case ARIZONA_ISRC_1_CTRL_2: |
922 | case ARIZONA_ISRC_1_CTRL_3: |
923 | diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c |
924 | index 0b4d90ceea7a6..864f107ed48fa 100644 |
925 | --- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c |
926 | +++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c |
927 | @@ -149,12 +149,10 @@ static void hns_ae_put_handle(struct hnae_handle *handle) |
928 | struct hnae_vf_cb *vf_cb = hns_ae_get_vf_cb(handle); |
929 | int i; |
930 | |
931 | - vf_cb->mac_cb = NULL; |
932 | - |
933 | - kfree(vf_cb); |
934 | - |
935 | for (i = 0; i < handle->q_num; i++) |
936 | hns_ae_get_ring_pair(handle->qs[i])->used_by_vf = 0; |
937 | + |
938 | + kfree(vf_cb); |
939 | } |
940 | |
941 | static void hns_ae_ring_enable_all(struct hnae_handle *handle, int val) |
942 | diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
943 | index 1a92cd719e19d..ab2259c5808aa 100644 |
944 | --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
945 | +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c |
946 | @@ -777,13 +777,27 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb, |
947 | return 0; |
948 | } |
949 | #endif |
950 | + |
951 | +#define short_frame(size) ((size) <= ETH_ZLEN + ETH_FCS_LEN) |
952 | + |
953 | static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va, |
954 | netdev_features_t dev_features) |
955 | { |
956 | __wsum hw_checksum = 0; |
957 | + void *hdr; |
958 | + |
959 | + /* CQE csum doesn't cover padding octets in short ethernet |
960 | + * frames. And the pad field is appended prior to calculating |
961 | + * and appending the FCS field. |
962 | + * |
963 | + * Detecting these padded frames requires to verify and parse |
964 | + * IP headers, so we simply force all those small frames to skip |
965 | + * checksum complete. |
966 | + */ |
967 | + if (short_frame(skb->len)) |
968 | + return -EINVAL; |
969 | |
970 | - void *hdr = (u8 *)va + sizeof(struct ethhdr); |
971 | - |
972 | + hdr = (u8 *)va + sizeof(struct ethhdr); |
973 | hw_checksum = csum_unfold((__force __sum16)cqe->checksum); |
974 | |
975 | if (cqe->vlan_my_qpn & cpu_to_be32(MLX4_CQE_CVLAN_PRESENT_MASK) && |
976 | @@ -945,6 +959,11 @@ xdp_drop: |
977 | } |
978 | |
979 | if (likely(dev->features & NETIF_F_RXCSUM)) { |
980 | + /* TODO: For IP non TCP/UDP packets when csum complete is |
981 | + * not an option (not supported or any other reason) we can |
982 | + * actually check cqe IPOK status bit and report |
983 | + * CHECKSUM_UNNECESSARY rather than CHECKSUM_NONE |
984 | + */ |
985 | if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_TCP | |
986 | MLX4_CQE_STATUS_UDP)) { |
987 | if ((cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPOK)) && |
988 | diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c |
989 | index bf1c09ca73c03..b210c171a3806 100644 |
990 | --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c |
991 | +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c |
992 | @@ -91,6 +91,7 @@ static void mlx5e_update_sw_rep_counters(struct mlx5e_priv *priv) |
993 | |
994 | s->tx_packets += sq_stats->packets; |
995 | s->tx_bytes += sq_stats->bytes; |
996 | + s->tx_queue_dropped += sq_stats->dropped; |
997 | } |
998 | } |
999 | } |
1000 | diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c |
1001 | index 60e1edcbe5734..7ca1ab5c19366 100644 |
1002 | --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c |
1003 | +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c |
1004 | @@ -794,7 +794,7 @@ static int mlxsw_sp_port_vlans_add(struct mlxsw_sp_port *mlxsw_sp_port, |
1005 | static enum mlxsw_reg_sfd_rec_policy mlxsw_sp_sfd_rec_policy(bool dynamic) |
1006 | { |
1007 | return dynamic ? MLXSW_REG_SFD_REC_POLICY_DYNAMIC_ENTRY_INGRESS : |
1008 | - MLXSW_REG_SFD_REC_POLICY_STATIC_ENTRY; |
1009 | + MLXSW_REG_SFD_REC_POLICY_DYNAMIC_ENTRY_MLAG; |
1010 | } |
1011 | |
1012 | static enum mlxsw_reg_sfd_op mlxsw_sp_sfd_op(bool adding) |
1013 | @@ -806,7 +806,7 @@ static enum mlxsw_reg_sfd_op mlxsw_sp_sfd_op(bool adding) |
1014 | static int __mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port, |
1015 | const char *mac, u16 fid, bool adding, |
1016 | enum mlxsw_reg_sfd_rec_action action, |
1017 | - bool dynamic) |
1018 | + enum mlxsw_reg_sfd_rec_policy policy) |
1019 | { |
1020 | char *sfd_pl; |
1021 | u8 num_rec; |
1022 | @@ -817,8 +817,7 @@ static int __mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port, |
1023 | return -ENOMEM; |
1024 | |
1025 | mlxsw_reg_sfd_pack(sfd_pl, mlxsw_sp_sfd_op(adding), 0); |
1026 | - mlxsw_reg_sfd_uc_pack(sfd_pl, 0, mlxsw_sp_sfd_rec_policy(dynamic), |
1027 | - mac, fid, action, local_port); |
1028 | + mlxsw_reg_sfd_uc_pack(sfd_pl, 0, policy, mac, fid, action, local_port); |
1029 | num_rec = mlxsw_reg_sfd_num_rec_get(sfd_pl); |
1030 | err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sfd), sfd_pl); |
1031 | if (err) |
1032 | @@ -837,7 +836,8 @@ static int mlxsw_sp_port_fdb_uc_op(struct mlxsw_sp *mlxsw_sp, u8 local_port, |
1033 | bool dynamic) |
1034 | { |
1035 | return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, local_port, mac, fid, adding, |
1036 | - MLXSW_REG_SFD_REC_ACTION_NOP, dynamic); |
1037 | + MLXSW_REG_SFD_REC_ACTION_NOP, |
1038 | + mlxsw_sp_sfd_rec_policy(dynamic)); |
1039 | } |
1040 | |
1041 | int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid, |
1042 | @@ -845,7 +845,7 @@ int mlxsw_sp_rif_fdb_op(struct mlxsw_sp *mlxsw_sp, const char *mac, u16 fid, |
1043 | { |
1044 | return __mlxsw_sp_port_fdb_uc_op(mlxsw_sp, 0, mac, fid, adding, |
1045 | MLXSW_REG_SFD_REC_ACTION_FORWARD_IP_ROUTER, |
1046 | - false); |
1047 | + MLXSW_REG_SFD_REC_POLICY_STATIC_ENTRY); |
1048 | } |
1049 | |
1050 | static int mlxsw_sp_port_fdb_uc_lag_op(struct mlxsw_sp *mlxsw_sp, u16 lag_id, |
1051 | diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c |
1052 | index a3360cbdb30bd..5b968e6a0a7fb 100644 |
1053 | --- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c |
1054 | +++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c |
1055 | @@ -1013,6 +1013,10 @@ static void qed_ll2_post_rx_buffer_notify_fw(struct qed_hwfn *p_hwfn, |
1056 | cq_prod = qed_chain_get_prod_idx(&p_rx->rcq_chain); |
1057 | rx_prod.bd_prod = cpu_to_le16(bd_prod); |
1058 | rx_prod.cqe_prod = cpu_to_le16(cq_prod); |
1059 | + |
1060 | + /* Make sure chain element is updated before ringing the doorbell */ |
1061 | + dma_wmb(); |
1062 | + |
1063 | DIRECT_REG_WR(p_rx->set_prod_addr, *((u32 *)&rx_prod)); |
1064 | } |
1065 | |
1066 | diff --git a/drivers/net/ethernet/stmicro/stmmac/chain_mode.c b/drivers/net/ethernet/stmicro/stmmac/chain_mode.c |
1067 | index b3e669af30055..026e8e9cb9429 100644 |
1068 | --- a/drivers/net/ethernet/stmicro/stmmac/chain_mode.c |
1069 | +++ b/drivers/net/ethernet/stmicro/stmmac/chain_mode.c |
1070 | @@ -34,7 +34,7 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1071 | unsigned int entry = priv->cur_tx; |
1072 | struct dma_desc *desc = priv->dma_tx + entry; |
1073 | unsigned int nopaged_len = skb_headlen(skb); |
1074 | - unsigned int bmax; |
1075 | + unsigned int bmax, des2; |
1076 | unsigned int i = 1, len; |
1077 | |
1078 | if (priv->plat->enh_desc) |
1079 | @@ -44,11 +44,12 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1080 | |
1081 | len = nopaged_len - bmax; |
1082 | |
1083 | - desc->des2 = dma_map_single(priv->device, skb->data, |
1084 | - bmax, DMA_TO_DEVICE); |
1085 | - if (dma_mapping_error(priv->device, desc->des2)) |
1086 | + des2 = dma_map_single(priv->device, skb->data, |
1087 | + bmax, DMA_TO_DEVICE); |
1088 | + desc->des2 = cpu_to_le32(des2); |
1089 | + if (dma_mapping_error(priv->device, des2)) |
1090 | return -1; |
1091 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1092 | + priv->tx_skbuff_dma[entry].buf = des2; |
1093 | priv->tx_skbuff_dma[entry].len = bmax; |
1094 | /* do not close the descriptor and do not set own bit */ |
1095 | priv->hw->desc->prepare_tx_desc(desc, 1, bmax, csum, STMMAC_CHAIN_MODE, |
1096 | @@ -60,12 +61,13 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1097 | desc = priv->dma_tx + entry; |
1098 | |
1099 | if (len > bmax) { |
1100 | - desc->des2 = dma_map_single(priv->device, |
1101 | - (skb->data + bmax * i), |
1102 | - bmax, DMA_TO_DEVICE); |
1103 | - if (dma_mapping_error(priv->device, desc->des2)) |
1104 | + des2 = dma_map_single(priv->device, |
1105 | + (skb->data + bmax * i), |
1106 | + bmax, DMA_TO_DEVICE); |
1107 | + desc->des2 = cpu_to_le32(des2); |
1108 | + if (dma_mapping_error(priv->device, des2)) |
1109 | return -1; |
1110 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1111 | + priv->tx_skbuff_dma[entry].buf = des2; |
1112 | priv->tx_skbuff_dma[entry].len = bmax; |
1113 | priv->hw->desc->prepare_tx_desc(desc, 0, bmax, csum, |
1114 | STMMAC_CHAIN_MODE, 1, |
1115 | @@ -73,12 +75,13 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1116 | len -= bmax; |
1117 | i++; |
1118 | } else { |
1119 | - desc->des2 = dma_map_single(priv->device, |
1120 | - (skb->data + bmax * i), len, |
1121 | - DMA_TO_DEVICE); |
1122 | - if (dma_mapping_error(priv->device, desc->des2)) |
1123 | + des2 = dma_map_single(priv->device, |
1124 | + (skb->data + bmax * i), len, |
1125 | + DMA_TO_DEVICE); |
1126 | + desc->des2 = cpu_to_le32(des2); |
1127 | + if (dma_mapping_error(priv->device, des2)) |
1128 | return -1; |
1129 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1130 | + priv->tx_skbuff_dma[entry].buf = des2; |
1131 | priv->tx_skbuff_dma[entry].len = len; |
1132 | /* last descriptor can be set now */ |
1133 | priv->hw->desc->prepare_tx_desc(desc, 0, len, csum, |
1134 | @@ -119,19 +122,19 @@ static void stmmac_init_dma_chain(void *des, dma_addr_t phy_addr, |
1135 | struct dma_extended_desc *p = (struct dma_extended_desc *)des; |
1136 | for (i = 0; i < (size - 1); i++) { |
1137 | dma_phy += sizeof(struct dma_extended_desc); |
1138 | - p->basic.des3 = (unsigned int)dma_phy; |
1139 | + p->basic.des3 = cpu_to_le32((unsigned int)dma_phy); |
1140 | p++; |
1141 | } |
1142 | - p->basic.des3 = (unsigned int)phy_addr; |
1143 | + p->basic.des3 = cpu_to_le32((unsigned int)phy_addr); |
1144 | |
1145 | } else { |
1146 | struct dma_desc *p = (struct dma_desc *)des; |
1147 | for (i = 0; i < (size - 1); i++) { |
1148 | dma_phy += sizeof(struct dma_desc); |
1149 | - p->des3 = (unsigned int)dma_phy; |
1150 | + p->des3 = cpu_to_le32((unsigned int)dma_phy); |
1151 | p++; |
1152 | } |
1153 | - p->des3 = (unsigned int)phy_addr; |
1154 | + p->des3 = cpu_to_le32((unsigned int)phy_addr); |
1155 | } |
1156 | } |
1157 | |
1158 | @@ -144,10 +147,10 @@ static void stmmac_refill_desc3(void *priv_ptr, struct dma_desc *p) |
1159 | * 1588-2002 time stamping is enabled, hence reinitialize it |
1160 | * to keep explicit chaining in the descriptor. |
1161 | */ |
1162 | - p->des3 = (unsigned int)(priv->dma_rx_phy + |
1163 | - (((priv->dirty_rx) + 1) % |
1164 | - DMA_RX_SIZE) * |
1165 | - sizeof(struct dma_desc)); |
1166 | + p->des3 = cpu_to_le32((unsigned int)(priv->dma_rx_phy + |
1167 | + (((priv->dirty_rx) + 1) % |
1168 | + DMA_RX_SIZE) * |
1169 | + sizeof(struct dma_desc))); |
1170 | } |
1171 | |
1172 | static void stmmac_clean_desc3(void *priv_ptr, struct dma_desc *p) |
1173 | @@ -161,9 +164,9 @@ static void stmmac_clean_desc3(void *priv_ptr, struct dma_desc *p) |
1174 | * 1588-2002 time stamping is enabled, hence reinitialize it |
1175 | * to keep explicit chaining in the descriptor. |
1176 | */ |
1177 | - p->des3 = (unsigned int)((priv->dma_tx_phy + |
1178 | - ((priv->dirty_tx + 1) % DMA_TX_SIZE)) |
1179 | - * sizeof(struct dma_desc)); |
1180 | + p->des3 = cpu_to_le32((unsigned int)((priv->dma_tx_phy + |
1181 | + ((priv->dirty_tx + 1) % DMA_TX_SIZE)) |
1182 | + * sizeof(struct dma_desc))); |
1183 | } |
1184 | |
1185 | const struct stmmac_mode_ops chain_mode_ops = { |
1186 | diff --git a/drivers/net/ethernet/stmicro/stmmac/descs.h b/drivers/net/ethernet/stmicro/stmmac/descs.h |
1187 | index e3c86d4221095..faeeef75d7f17 100644 |
1188 | --- a/drivers/net/ethernet/stmicro/stmmac/descs.h |
1189 | +++ b/drivers/net/ethernet/stmicro/stmmac/descs.h |
1190 | @@ -87,7 +87,7 @@ |
1191 | #define TDES0_ERROR_SUMMARY BIT(15) |
1192 | #define TDES0_IP_HEADER_ERROR BIT(16) |
1193 | #define TDES0_TIME_STAMP_STATUS BIT(17) |
1194 | -#define TDES0_OWN BIT(31) |
1195 | +#define TDES0_OWN ((u32)BIT(31)) /* silence sparse */ |
1196 | /* TDES1 */ |
1197 | #define TDES1_BUFFER1_SIZE_MASK GENMASK(10, 0) |
1198 | #define TDES1_BUFFER2_SIZE_MASK GENMASK(21, 11) |
1199 | @@ -130,7 +130,7 @@ |
1200 | #define ETDES0_FIRST_SEGMENT BIT(28) |
1201 | #define ETDES0_LAST_SEGMENT BIT(29) |
1202 | #define ETDES0_INTERRUPT BIT(30) |
1203 | -#define ETDES0_OWN BIT(31) |
1204 | +#define ETDES0_OWN ((u32)BIT(31)) /* silence sparse */ |
1205 | /* TDES1 */ |
1206 | #define ETDES1_BUFFER1_SIZE_MASK GENMASK(12, 0) |
1207 | #define ETDES1_BUFFER2_SIZE_MASK GENMASK(28, 16) |
1208 | @@ -170,19 +170,19 @@ |
1209 | |
1210 | /* Basic descriptor structure for normal and alternate descriptors */ |
1211 | struct dma_desc { |
1212 | - unsigned int des0; |
1213 | - unsigned int des1; |
1214 | - unsigned int des2; |
1215 | - unsigned int des3; |
1216 | + __le32 des0; |
1217 | + __le32 des1; |
1218 | + __le32 des2; |
1219 | + __le32 des3; |
1220 | }; |
1221 | |
1222 | /* Extended descriptor structure (e.g. >= databook 3.50a) */ |
1223 | struct dma_extended_desc { |
1224 | struct dma_desc basic; /* Basic descriptors */ |
1225 | - unsigned int des4; /* Extended Status */ |
1226 | - unsigned int des5; /* Reserved */ |
1227 | - unsigned int des6; /* Tx/Rx Timestamp Low */ |
1228 | - unsigned int des7; /* Tx/Rx Timestamp High */ |
1229 | + __le32 des4; /* Extended Status */ |
1230 | + __le32 des5; /* Reserved */ |
1231 | + __le32 des6; /* Tx/Rx Timestamp Low */ |
1232 | + __le32 des7; /* Tx/Rx Timestamp High */ |
1233 | }; |
1234 | |
1235 | /* Transmit checksum insertion control */ |
1236 | diff --git a/drivers/net/ethernet/stmicro/stmmac/descs_com.h b/drivers/net/ethernet/stmicro/stmmac/descs_com.h |
1237 | index 7635a464ce41c..1d181e205d6ec 100644 |
1238 | --- a/drivers/net/ethernet/stmicro/stmmac/descs_com.h |
1239 | +++ b/drivers/net/ethernet/stmicro/stmmac/descs_com.h |
1240 | @@ -35,47 +35,50 @@ |
1241 | /* Enhanced descriptors */ |
1242 | static inline void ehn_desc_rx_set_on_ring(struct dma_desc *p, int end) |
1243 | { |
1244 | - p->des1 |= ((BUF_SIZE_8KiB - 1) << ERDES1_BUFFER2_SIZE_SHIFT) |
1245 | - & ERDES1_BUFFER2_SIZE_MASK; |
1246 | + p->des1 |= cpu_to_le32(((BUF_SIZE_8KiB - 1) |
1247 | + << ERDES1_BUFFER2_SIZE_SHIFT) |
1248 | + & ERDES1_BUFFER2_SIZE_MASK); |
1249 | |
1250 | if (end) |
1251 | - p->des1 |= ERDES1_END_RING; |
1252 | + p->des1 |= cpu_to_le32(ERDES1_END_RING); |
1253 | } |
1254 | |
1255 | static inline void enh_desc_end_tx_desc_on_ring(struct dma_desc *p, int end) |
1256 | { |
1257 | if (end) |
1258 | - p->des0 |= ETDES0_END_RING; |
1259 | + p->des0 |= cpu_to_le32(ETDES0_END_RING); |
1260 | else |
1261 | - p->des0 &= ~ETDES0_END_RING; |
1262 | + p->des0 &= cpu_to_le32(~ETDES0_END_RING); |
1263 | } |
1264 | |
1265 | static inline void enh_set_tx_desc_len_on_ring(struct dma_desc *p, int len) |
1266 | { |
1267 | if (unlikely(len > BUF_SIZE_4KiB)) { |
1268 | - p->des1 |= (((len - BUF_SIZE_4KiB) << ETDES1_BUFFER2_SIZE_SHIFT) |
1269 | + p->des1 |= cpu_to_le32((((len - BUF_SIZE_4KiB) |
1270 | + << ETDES1_BUFFER2_SIZE_SHIFT) |
1271 | & ETDES1_BUFFER2_SIZE_MASK) | (BUF_SIZE_4KiB |
1272 | - & ETDES1_BUFFER1_SIZE_MASK); |
1273 | + & ETDES1_BUFFER1_SIZE_MASK)); |
1274 | } else |
1275 | - p->des1 |= (len & ETDES1_BUFFER1_SIZE_MASK); |
1276 | + p->des1 |= cpu_to_le32((len & ETDES1_BUFFER1_SIZE_MASK)); |
1277 | } |
1278 | |
1279 | /* Normal descriptors */ |
1280 | static inline void ndesc_rx_set_on_ring(struct dma_desc *p, int end) |
1281 | { |
1282 | - p->des1 |= ((BUF_SIZE_2KiB - 1) << RDES1_BUFFER2_SIZE_SHIFT) |
1283 | - & RDES1_BUFFER2_SIZE_MASK; |
1284 | + p->des1 |= cpu_to_le32(((BUF_SIZE_2KiB - 1) |
1285 | + << RDES1_BUFFER2_SIZE_SHIFT) |
1286 | + & RDES1_BUFFER2_SIZE_MASK); |
1287 | |
1288 | if (end) |
1289 | - p->des1 |= RDES1_END_RING; |
1290 | + p->des1 |= cpu_to_le32(RDES1_END_RING); |
1291 | } |
1292 | |
1293 | static inline void ndesc_end_tx_desc_on_ring(struct dma_desc *p, int end) |
1294 | { |
1295 | if (end) |
1296 | - p->des1 |= TDES1_END_RING; |
1297 | + p->des1 |= cpu_to_le32(TDES1_END_RING); |
1298 | else |
1299 | - p->des1 &= ~TDES1_END_RING; |
1300 | + p->des1 &= cpu_to_le32(~TDES1_END_RING); |
1301 | } |
1302 | |
1303 | static inline void norm_set_tx_desc_len_on_ring(struct dma_desc *p, int len) |
1304 | @@ -83,10 +86,11 @@ static inline void norm_set_tx_desc_len_on_ring(struct dma_desc *p, int len) |
1305 | if (unlikely(len > BUF_SIZE_2KiB)) { |
1306 | unsigned int buffer1 = (BUF_SIZE_2KiB - 1) |
1307 | & TDES1_BUFFER1_SIZE_MASK; |
1308 | - p->des1 |= ((((len - buffer1) << TDES1_BUFFER2_SIZE_SHIFT) |
1309 | - & TDES1_BUFFER2_SIZE_MASK) | buffer1); |
1310 | + p->des1 |= cpu_to_le32((((len - buffer1) |
1311 | + << TDES1_BUFFER2_SIZE_SHIFT) |
1312 | + & TDES1_BUFFER2_SIZE_MASK) | buffer1); |
1313 | } else |
1314 | - p->des1 |= (len & TDES1_BUFFER1_SIZE_MASK); |
1315 | + p->des1 |= cpu_to_le32((len & TDES1_BUFFER1_SIZE_MASK)); |
1316 | } |
1317 | |
1318 | /* Specific functions used for Chain mode */ |
1319 | @@ -94,32 +98,32 @@ static inline void norm_set_tx_desc_len_on_ring(struct dma_desc *p, int len) |
1320 | /* Enhanced descriptors */ |
1321 | static inline void ehn_desc_rx_set_on_chain(struct dma_desc *p) |
1322 | { |
1323 | - p->des1 |= ERDES1_SECOND_ADDRESS_CHAINED; |
1324 | + p->des1 |= cpu_to_le32(ERDES1_SECOND_ADDRESS_CHAINED); |
1325 | } |
1326 | |
1327 | static inline void enh_desc_end_tx_desc_on_chain(struct dma_desc *p) |
1328 | { |
1329 | - p->des0 |= ETDES0_SECOND_ADDRESS_CHAINED; |
1330 | + p->des0 |= cpu_to_le32(ETDES0_SECOND_ADDRESS_CHAINED); |
1331 | } |
1332 | |
1333 | static inline void enh_set_tx_desc_len_on_chain(struct dma_desc *p, int len) |
1334 | { |
1335 | - p->des1 |= (len & ETDES1_BUFFER1_SIZE_MASK); |
1336 | + p->des1 |= cpu_to_le32(len & ETDES1_BUFFER1_SIZE_MASK); |
1337 | } |
1338 | |
1339 | /* Normal descriptors */ |
1340 | static inline void ndesc_rx_set_on_chain(struct dma_desc *p, int end) |
1341 | { |
1342 | - p->des1 |= RDES1_SECOND_ADDRESS_CHAINED; |
1343 | + p->des1 |= cpu_to_le32(RDES1_SECOND_ADDRESS_CHAINED); |
1344 | } |
1345 | |
1346 | static inline void ndesc_tx_set_on_chain(struct dma_desc *p) |
1347 | { |
1348 | - p->des1 |= TDES1_SECOND_ADDRESS_CHAINED; |
1349 | + p->des1 |= cpu_to_le32(TDES1_SECOND_ADDRESS_CHAINED); |
1350 | } |
1351 | |
1352 | static inline void norm_set_tx_desc_len_on_chain(struct dma_desc *p, int len) |
1353 | { |
1354 | - p->des1 |= len & TDES1_BUFFER1_SIZE_MASK; |
1355 | + p->des1 |= cpu_to_le32(len & TDES1_BUFFER1_SIZE_MASK); |
1356 | } |
1357 | #endif /* __DESC_COM_H__ */ |
1358 | diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c |
1359 | index f988c7573ba59..3f5056858535a 100644 |
1360 | --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c |
1361 | +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c |
1362 | @@ -23,7 +23,7 @@ static int dwmac4_wrback_get_tx_status(void *data, struct stmmac_extra_stats *x, |
1363 | unsigned int tdes3; |
1364 | int ret = tx_done; |
1365 | |
1366 | - tdes3 = p->des3; |
1367 | + tdes3 = le32_to_cpu(p->des3); |
1368 | |
1369 | /* Get tx owner first */ |
1370 | if (unlikely(tdes3 & TDES3_OWN)) |
1371 | @@ -77,9 +77,9 @@ static int dwmac4_wrback_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1372 | struct dma_desc *p) |
1373 | { |
1374 | struct net_device_stats *stats = (struct net_device_stats *)data; |
1375 | - unsigned int rdes1 = p->des1; |
1376 | - unsigned int rdes2 = p->des2; |
1377 | - unsigned int rdes3 = p->des3; |
1378 | + unsigned int rdes1 = le32_to_cpu(p->des1); |
1379 | + unsigned int rdes2 = le32_to_cpu(p->des2); |
1380 | + unsigned int rdes3 = le32_to_cpu(p->des3); |
1381 | int message_type; |
1382 | int ret = good_frame; |
1383 | |
1384 | @@ -176,47 +176,48 @@ static int dwmac4_wrback_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1385 | |
1386 | static int dwmac4_rd_get_tx_len(struct dma_desc *p) |
1387 | { |
1388 | - return (p->des2 & TDES2_BUFFER1_SIZE_MASK); |
1389 | + return (le32_to_cpu(p->des2) & TDES2_BUFFER1_SIZE_MASK); |
1390 | } |
1391 | |
1392 | static int dwmac4_get_tx_owner(struct dma_desc *p) |
1393 | { |
1394 | - return (p->des3 & TDES3_OWN) >> TDES3_OWN_SHIFT; |
1395 | + return (le32_to_cpu(p->des3) & TDES3_OWN) >> TDES3_OWN_SHIFT; |
1396 | } |
1397 | |
1398 | static void dwmac4_set_tx_owner(struct dma_desc *p) |
1399 | { |
1400 | - p->des3 |= TDES3_OWN; |
1401 | + p->des3 |= cpu_to_le32(TDES3_OWN); |
1402 | } |
1403 | |
1404 | static void dwmac4_set_rx_owner(struct dma_desc *p) |
1405 | { |
1406 | - p->des3 |= RDES3_OWN; |
1407 | + p->des3 |= cpu_to_le32(RDES3_OWN); |
1408 | } |
1409 | |
1410 | static int dwmac4_get_tx_ls(struct dma_desc *p) |
1411 | { |
1412 | - return (p->des3 & TDES3_LAST_DESCRIPTOR) >> TDES3_LAST_DESCRIPTOR_SHIFT; |
1413 | + return (le32_to_cpu(p->des3) & TDES3_LAST_DESCRIPTOR) |
1414 | + >> TDES3_LAST_DESCRIPTOR_SHIFT; |
1415 | } |
1416 | |
1417 | static int dwmac4_wrback_get_rx_frame_len(struct dma_desc *p, int rx_coe) |
1418 | { |
1419 | - return (p->des3 & RDES3_PACKET_SIZE_MASK); |
1420 | + return (le32_to_cpu(p->des3) & RDES3_PACKET_SIZE_MASK); |
1421 | } |
1422 | |
1423 | static void dwmac4_rd_enable_tx_timestamp(struct dma_desc *p) |
1424 | { |
1425 | - p->des2 |= TDES2_TIMESTAMP_ENABLE; |
1426 | + p->des2 |= cpu_to_le32(TDES2_TIMESTAMP_ENABLE); |
1427 | } |
1428 | |
1429 | static int dwmac4_wrback_get_tx_timestamp_status(struct dma_desc *p) |
1430 | { |
1431 | /* Context type from W/B descriptor must be zero */ |
1432 | - if (p->des3 & TDES3_CONTEXT_TYPE) |
1433 | + if (le32_to_cpu(p->des3) & TDES3_CONTEXT_TYPE) |
1434 | return -EINVAL; |
1435 | |
1436 | /* Tx Timestamp Status is 1 so des0 and des1'll have valid values */ |
1437 | - if (p->des3 & TDES3_TIMESTAMP_STATUS) |
1438 | + if (le32_to_cpu(p->des3) & TDES3_TIMESTAMP_STATUS) |
1439 | return 0; |
1440 | |
1441 | return 1; |
1442 | @@ -227,9 +228,9 @@ static inline u64 dwmac4_get_timestamp(void *desc, u32 ats) |
1443 | struct dma_desc *p = (struct dma_desc *)desc; |
1444 | u64 ns; |
1445 | |
1446 | - ns = p->des0; |
1447 | + ns = le32_to_cpu(p->des0); |
1448 | /* convert high/sec time stamp value to nanosecond */ |
1449 | - ns += p->des1 * 1000000000ULL; |
1450 | + ns += le32_to_cpu(p->des1) * 1000000000ULL; |
1451 | |
1452 | return ns; |
1453 | } |
1454 | @@ -267,7 +268,7 @@ static int dwmac4_wrback_get_rx_timestamp_status(void *desc, u32 ats) |
1455 | |
1456 | /* Get the status from normal w/b descriptor */ |
1457 | if (likely(p->des3 & TDES3_RS1V)) { |
1458 | - if (likely(p->des1 & RDES1_TIMESTAMP_AVAILABLE)) { |
1459 | + if (likely(le32_to_cpu(p->des1) & RDES1_TIMESTAMP_AVAILABLE)) { |
1460 | int i = 0; |
1461 | |
1462 | /* Check if timestamp is OK from context descriptor */ |
1463 | @@ -290,10 +291,10 @@ exit: |
1464 | static void dwmac4_rd_init_rx_desc(struct dma_desc *p, int disable_rx_ic, |
1465 | int mode, int end) |
1466 | { |
1467 | - p->des3 = RDES3_OWN | RDES3_BUFFER1_VALID_ADDR; |
1468 | + p->des3 = cpu_to_le32(RDES3_OWN | RDES3_BUFFER1_VALID_ADDR); |
1469 | |
1470 | if (!disable_rx_ic) |
1471 | - p->des3 |= RDES3_INT_ON_COMPLETION_EN; |
1472 | + p->des3 |= cpu_to_le32(RDES3_INT_ON_COMPLETION_EN); |
1473 | } |
1474 | |
1475 | static void dwmac4_rd_init_tx_desc(struct dma_desc *p, int mode, int end) |
1476 | @@ -308,9 +309,9 @@ static void dwmac4_rd_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1477 | bool csum_flag, int mode, bool tx_own, |
1478 | bool ls) |
1479 | { |
1480 | - unsigned int tdes3 = p->des3; |
1481 | + unsigned int tdes3 = le32_to_cpu(p->des3); |
1482 | |
1483 | - p->des2 |= (len & TDES2_BUFFER1_SIZE_MASK); |
1484 | + p->des2 |= cpu_to_le32(len & TDES2_BUFFER1_SIZE_MASK); |
1485 | |
1486 | if (is_fs) |
1487 | tdes3 |= TDES3_FIRST_DESCRIPTOR; |
1488 | @@ -338,7 +339,7 @@ static void dwmac4_rd_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1489 | */ |
1490 | wmb(); |
1491 | |
1492 | - p->des3 = tdes3; |
1493 | + p->des3 = cpu_to_le32(tdes3); |
1494 | } |
1495 | |
1496 | static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs, |
1497 | @@ -346,14 +347,14 @@ static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs, |
1498 | bool ls, unsigned int tcphdrlen, |
1499 | unsigned int tcppayloadlen) |
1500 | { |
1501 | - unsigned int tdes3 = p->des3; |
1502 | + unsigned int tdes3 = le32_to_cpu(p->des3); |
1503 | |
1504 | if (len1) |
1505 | - p->des2 |= (len1 & TDES2_BUFFER1_SIZE_MASK); |
1506 | + p->des2 |= cpu_to_le32((len1 & TDES2_BUFFER1_SIZE_MASK)); |
1507 | |
1508 | if (len2) |
1509 | - p->des2 |= (len2 << TDES2_BUFFER2_SIZE_MASK_SHIFT) |
1510 | - & TDES2_BUFFER2_SIZE_MASK; |
1511 | + p->des2 |= cpu_to_le32((len2 << TDES2_BUFFER2_SIZE_MASK_SHIFT) |
1512 | + & TDES2_BUFFER2_SIZE_MASK); |
1513 | |
1514 | if (is_fs) { |
1515 | tdes3 |= TDES3_FIRST_DESCRIPTOR | |
1516 | @@ -381,7 +382,7 @@ static void dwmac4_rd_prepare_tso_tx_desc(struct dma_desc *p, int is_fs, |
1517 | */ |
1518 | wmb(); |
1519 | |
1520 | - p->des3 = tdes3; |
1521 | + p->des3 = cpu_to_le32(tdes3); |
1522 | } |
1523 | |
1524 | static void dwmac4_release_tx_desc(struct dma_desc *p, int mode) |
1525 | @@ -392,7 +393,7 @@ static void dwmac4_release_tx_desc(struct dma_desc *p, int mode) |
1526 | |
1527 | static void dwmac4_rd_set_tx_ic(struct dma_desc *p) |
1528 | { |
1529 | - p->des2 |= TDES2_INTERRUPT_ON_COMPLETION; |
1530 | + p->des2 |= cpu_to_le32(TDES2_INTERRUPT_ON_COMPLETION); |
1531 | } |
1532 | |
1533 | static void dwmac4_display_ring(void *head, unsigned int size, bool rx) |
1534 | @@ -405,7 +406,8 @@ static void dwmac4_display_ring(void *head, unsigned int size, bool rx) |
1535 | for (i = 0; i < size; i++) { |
1536 | pr_info("%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n", |
1537 | i, (unsigned int)virt_to_phys(p), |
1538 | - p->des0, p->des1, p->des2, p->des3); |
1539 | + le32_to_cpu(p->des0), le32_to_cpu(p->des1), |
1540 | + le32_to_cpu(p->des2), le32_to_cpu(p->des3)); |
1541 | p++; |
1542 | } |
1543 | } |
1544 | @@ -414,8 +416,8 @@ static void dwmac4_set_mss_ctxt(struct dma_desc *p, unsigned int mss) |
1545 | { |
1546 | p->des0 = 0; |
1547 | p->des1 = 0; |
1548 | - p->des2 = mss; |
1549 | - p->des3 = TDES3_CONTEXT_TYPE | TDES3_CTXT_TCMSSV; |
1550 | + p->des2 = cpu_to_le32(mss); |
1551 | + p->des3 = cpu_to_le32(TDES3_CONTEXT_TYPE | TDES3_CTXT_TCMSSV); |
1552 | } |
1553 | |
1554 | const struct stmmac_desc_ops dwmac4_desc_ops = { |
1555 | diff --git a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c |
1556 | index e75549327c345..ce97e522566a8 100644 |
1557 | --- a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c |
1558 | +++ b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c |
1559 | @@ -30,7 +30,7 @@ static int enh_desc_get_tx_status(void *data, struct stmmac_extra_stats *x, |
1560 | struct dma_desc *p, void __iomem *ioaddr) |
1561 | { |
1562 | struct net_device_stats *stats = (struct net_device_stats *)data; |
1563 | - unsigned int tdes0 = p->des0; |
1564 | + unsigned int tdes0 = le32_to_cpu(p->des0); |
1565 | int ret = tx_done; |
1566 | |
1567 | /* Get tx owner first */ |
1568 | @@ -95,7 +95,7 @@ static int enh_desc_get_tx_status(void *data, struct stmmac_extra_stats *x, |
1569 | |
1570 | static int enh_desc_get_tx_len(struct dma_desc *p) |
1571 | { |
1572 | - return (p->des1 & ETDES1_BUFFER1_SIZE_MASK); |
1573 | + return (le32_to_cpu(p->des1) & ETDES1_BUFFER1_SIZE_MASK); |
1574 | } |
1575 | |
1576 | static int enh_desc_coe_rdes0(int ipc_err, int type, int payload_err) |
1577 | @@ -134,8 +134,8 @@ static int enh_desc_coe_rdes0(int ipc_err, int type, int payload_err) |
1578 | static void enh_desc_get_ext_status(void *data, struct stmmac_extra_stats *x, |
1579 | struct dma_extended_desc *p) |
1580 | { |
1581 | - unsigned int rdes0 = p->basic.des0; |
1582 | - unsigned int rdes4 = p->des4; |
1583 | + unsigned int rdes0 = le32_to_cpu(p->basic.des0); |
1584 | + unsigned int rdes4 = le32_to_cpu(p->des4); |
1585 | |
1586 | if (unlikely(rdes0 & ERDES0_RX_MAC_ADDR)) { |
1587 | int message_type = (rdes4 & ERDES4_MSG_TYPE_MASK) >> 8; |
1588 | @@ -199,7 +199,7 @@ static int enh_desc_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1589 | struct dma_desc *p) |
1590 | { |
1591 | struct net_device_stats *stats = (struct net_device_stats *)data; |
1592 | - unsigned int rdes0 = p->des0; |
1593 | + unsigned int rdes0 = le32_to_cpu(p->des0); |
1594 | int ret = good_frame; |
1595 | |
1596 | if (unlikely(rdes0 & RDES0_OWN)) |
1597 | @@ -265,8 +265,8 @@ static int enh_desc_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1598 | static void enh_desc_init_rx_desc(struct dma_desc *p, int disable_rx_ic, |
1599 | int mode, int end) |
1600 | { |
1601 | - p->des0 |= RDES0_OWN; |
1602 | - p->des1 |= ((BUF_SIZE_8KiB - 1) & ERDES1_BUFFER1_SIZE_MASK); |
1603 | + p->des0 |= cpu_to_le32(RDES0_OWN); |
1604 | + p->des1 |= cpu_to_le32((BUF_SIZE_8KiB - 1) & ERDES1_BUFFER1_SIZE_MASK); |
1605 | |
1606 | if (mode == STMMAC_CHAIN_MODE) |
1607 | ehn_desc_rx_set_on_chain(p); |
1608 | @@ -274,12 +274,12 @@ static void enh_desc_init_rx_desc(struct dma_desc *p, int disable_rx_ic, |
1609 | ehn_desc_rx_set_on_ring(p, end); |
1610 | |
1611 | if (disable_rx_ic) |
1612 | - p->des1 |= ERDES1_DISABLE_IC; |
1613 | + p->des1 |= cpu_to_le32(ERDES1_DISABLE_IC); |
1614 | } |
1615 | |
1616 | static void enh_desc_init_tx_desc(struct dma_desc *p, int mode, int end) |
1617 | { |
1618 | - p->des0 &= ~ETDES0_OWN; |
1619 | + p->des0 &= cpu_to_le32(~ETDES0_OWN); |
1620 | if (mode == STMMAC_CHAIN_MODE) |
1621 | enh_desc_end_tx_desc_on_chain(p); |
1622 | else |
1623 | @@ -288,27 +288,27 @@ static void enh_desc_init_tx_desc(struct dma_desc *p, int mode, int end) |
1624 | |
1625 | static int enh_desc_get_tx_owner(struct dma_desc *p) |
1626 | { |
1627 | - return (p->des0 & ETDES0_OWN) >> 31; |
1628 | + return (le32_to_cpu(p->des0) & ETDES0_OWN) >> 31; |
1629 | } |
1630 | |
1631 | static void enh_desc_set_tx_owner(struct dma_desc *p) |
1632 | { |
1633 | - p->des0 |= ETDES0_OWN; |
1634 | + p->des0 |= cpu_to_le32(ETDES0_OWN); |
1635 | } |
1636 | |
1637 | static void enh_desc_set_rx_owner(struct dma_desc *p) |
1638 | { |
1639 | - p->des0 |= RDES0_OWN; |
1640 | + p->des0 |= cpu_to_le32(RDES0_OWN); |
1641 | } |
1642 | |
1643 | static int enh_desc_get_tx_ls(struct dma_desc *p) |
1644 | { |
1645 | - return (p->des0 & ETDES0_LAST_SEGMENT) >> 29; |
1646 | + return (le32_to_cpu(p->des0) & ETDES0_LAST_SEGMENT) >> 29; |
1647 | } |
1648 | |
1649 | static void enh_desc_release_tx_desc(struct dma_desc *p, int mode) |
1650 | { |
1651 | - int ter = (p->des0 & ETDES0_END_RING) >> 21; |
1652 | + int ter = (le32_to_cpu(p->des0) & ETDES0_END_RING) >> 21; |
1653 | |
1654 | memset(p, 0, offsetof(struct dma_desc, des2)); |
1655 | if (mode == STMMAC_CHAIN_MODE) |
1656 | @@ -321,7 +321,7 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1657 | bool csum_flag, int mode, bool tx_own, |
1658 | bool ls) |
1659 | { |
1660 | - unsigned int tdes0 = p->des0; |
1661 | + unsigned int tdes0 = le32_to_cpu(p->des0); |
1662 | |
1663 | if (mode == STMMAC_CHAIN_MODE) |
1664 | enh_set_tx_desc_len_on_chain(p, len); |
1665 | @@ -352,12 +352,12 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1666 | */ |
1667 | wmb(); |
1668 | |
1669 | - p->des0 = tdes0; |
1670 | + p->des0 = cpu_to_le32(tdes0); |
1671 | } |
1672 | |
1673 | static void enh_desc_set_tx_ic(struct dma_desc *p) |
1674 | { |
1675 | - p->des0 |= ETDES0_INTERRUPT; |
1676 | + p->des0 |= cpu_to_le32(ETDES0_INTERRUPT); |
1677 | } |
1678 | |
1679 | static int enh_desc_get_rx_frame_len(struct dma_desc *p, int rx_coe_type) |
1680 | @@ -372,18 +372,18 @@ static int enh_desc_get_rx_frame_len(struct dma_desc *p, int rx_coe_type) |
1681 | if (rx_coe_type == STMMAC_RX_COE_TYPE1) |
1682 | csum = 2; |
1683 | |
1684 | - return (((p->des0 & RDES0_FRAME_LEN_MASK) >> RDES0_FRAME_LEN_SHIFT) - |
1685 | - csum); |
1686 | + return (((le32_to_cpu(p->des0) & RDES0_FRAME_LEN_MASK) |
1687 | + >> RDES0_FRAME_LEN_SHIFT) - csum); |
1688 | } |
1689 | |
1690 | static void enh_desc_enable_tx_timestamp(struct dma_desc *p) |
1691 | { |
1692 | - p->des0 |= ETDES0_TIME_STAMP_ENABLE; |
1693 | + p->des0 |= cpu_to_le32(ETDES0_TIME_STAMP_ENABLE); |
1694 | } |
1695 | |
1696 | static int enh_desc_get_tx_timestamp_status(struct dma_desc *p) |
1697 | { |
1698 | - return (p->des0 & ETDES0_TIME_STAMP_STATUS) >> 17; |
1699 | + return (le32_to_cpu(p->des0) & ETDES0_TIME_STAMP_STATUS) >> 17; |
1700 | } |
1701 | |
1702 | static u64 enh_desc_get_timestamp(void *desc, u32 ats) |
1703 | @@ -392,13 +392,13 @@ static u64 enh_desc_get_timestamp(void *desc, u32 ats) |
1704 | |
1705 | if (ats) { |
1706 | struct dma_extended_desc *p = (struct dma_extended_desc *)desc; |
1707 | - ns = p->des6; |
1708 | + ns = le32_to_cpu(p->des6); |
1709 | /* convert high/sec time stamp value to nanosecond */ |
1710 | - ns += p->des7 * 1000000000ULL; |
1711 | + ns += le32_to_cpu(p->des7) * 1000000000ULL; |
1712 | } else { |
1713 | struct dma_desc *p = (struct dma_desc *)desc; |
1714 | - ns = p->des2; |
1715 | - ns += p->des3 * 1000000000ULL; |
1716 | + ns = le32_to_cpu(p->des2); |
1717 | + ns += le32_to_cpu(p->des3) * 1000000000ULL; |
1718 | } |
1719 | |
1720 | return ns; |
1721 | @@ -408,10 +408,11 @@ static int enh_desc_get_rx_timestamp_status(void *desc, u32 ats) |
1722 | { |
1723 | if (ats) { |
1724 | struct dma_extended_desc *p = (struct dma_extended_desc *)desc; |
1725 | - return (p->basic.des0 & RDES0_IPC_CSUM_ERROR) >> 7; |
1726 | + return (le32_to_cpu(p->basic.des0) & RDES0_IPC_CSUM_ERROR) >> 7; |
1727 | } else { |
1728 | struct dma_desc *p = (struct dma_desc *)desc; |
1729 | - if ((p->des2 == 0xffffffff) && (p->des3 == 0xffffffff)) |
1730 | + if ((le32_to_cpu(p->des2) == 0xffffffff) && |
1731 | + (le32_to_cpu(p->des3) == 0xffffffff)) |
1732 | /* timestamp is corrupted, hence don't store it */ |
1733 | return 0; |
1734 | else |
1735 | diff --git a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c |
1736 | index 2beacd0d3043a..fd78406e2e9af 100644 |
1737 | --- a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c |
1738 | +++ b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c |
1739 | @@ -30,8 +30,8 @@ static int ndesc_get_tx_status(void *data, struct stmmac_extra_stats *x, |
1740 | struct dma_desc *p, void __iomem *ioaddr) |
1741 | { |
1742 | struct net_device_stats *stats = (struct net_device_stats *)data; |
1743 | - unsigned int tdes0 = p->des0; |
1744 | - unsigned int tdes1 = p->des1; |
1745 | + unsigned int tdes0 = le32_to_cpu(p->des0); |
1746 | + unsigned int tdes1 = le32_to_cpu(p->des1); |
1747 | int ret = tx_done; |
1748 | |
1749 | /* Get tx owner first */ |
1750 | @@ -77,7 +77,7 @@ static int ndesc_get_tx_status(void *data, struct stmmac_extra_stats *x, |
1751 | |
1752 | static int ndesc_get_tx_len(struct dma_desc *p) |
1753 | { |
1754 | - return (p->des1 & RDES1_BUFFER1_SIZE_MASK); |
1755 | + return (le32_to_cpu(p->des1) & RDES1_BUFFER1_SIZE_MASK); |
1756 | } |
1757 | |
1758 | /* This function verifies if each incoming frame has some errors |
1759 | @@ -88,7 +88,7 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1760 | struct dma_desc *p) |
1761 | { |
1762 | int ret = good_frame; |
1763 | - unsigned int rdes0 = p->des0; |
1764 | + unsigned int rdes0 = le32_to_cpu(p->des0); |
1765 | struct net_device_stats *stats = (struct net_device_stats *)data; |
1766 | |
1767 | if (unlikely(rdes0 & RDES0_OWN)) |
1768 | @@ -141,8 +141,8 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x, |
1769 | static void ndesc_init_rx_desc(struct dma_desc *p, int disable_rx_ic, int mode, |
1770 | int end) |
1771 | { |
1772 | - p->des0 |= RDES0_OWN; |
1773 | - p->des1 |= (BUF_SIZE_2KiB - 1) & RDES1_BUFFER1_SIZE_MASK; |
1774 | + p->des0 |= cpu_to_le32(RDES0_OWN); |
1775 | + p->des1 |= cpu_to_le32((BUF_SIZE_2KiB - 1) & RDES1_BUFFER1_SIZE_MASK); |
1776 | |
1777 | if (mode == STMMAC_CHAIN_MODE) |
1778 | ndesc_rx_set_on_chain(p, end); |
1779 | @@ -150,12 +150,12 @@ static void ndesc_init_rx_desc(struct dma_desc *p, int disable_rx_ic, int mode, |
1780 | ndesc_rx_set_on_ring(p, end); |
1781 | |
1782 | if (disable_rx_ic) |
1783 | - p->des1 |= RDES1_DISABLE_IC; |
1784 | + p->des1 |= cpu_to_le32(RDES1_DISABLE_IC); |
1785 | } |
1786 | |
1787 | static void ndesc_init_tx_desc(struct dma_desc *p, int mode, int end) |
1788 | { |
1789 | - p->des0 &= ~TDES0_OWN; |
1790 | + p->des0 &= cpu_to_le32(~TDES0_OWN); |
1791 | if (mode == STMMAC_CHAIN_MODE) |
1792 | ndesc_tx_set_on_chain(p); |
1793 | else |
1794 | @@ -164,27 +164,27 @@ static void ndesc_init_tx_desc(struct dma_desc *p, int mode, int end) |
1795 | |
1796 | static int ndesc_get_tx_owner(struct dma_desc *p) |
1797 | { |
1798 | - return (p->des0 & TDES0_OWN) >> 31; |
1799 | + return (le32_to_cpu(p->des0) & TDES0_OWN) >> 31; |
1800 | } |
1801 | |
1802 | static void ndesc_set_tx_owner(struct dma_desc *p) |
1803 | { |
1804 | - p->des0 |= TDES0_OWN; |
1805 | + p->des0 |= cpu_to_le32(TDES0_OWN); |
1806 | } |
1807 | |
1808 | static void ndesc_set_rx_owner(struct dma_desc *p) |
1809 | { |
1810 | - p->des0 |= RDES0_OWN; |
1811 | + p->des0 |= cpu_to_le32(RDES0_OWN); |
1812 | } |
1813 | |
1814 | static int ndesc_get_tx_ls(struct dma_desc *p) |
1815 | { |
1816 | - return (p->des1 & TDES1_LAST_SEGMENT) >> 30; |
1817 | + return (le32_to_cpu(p->des1) & TDES1_LAST_SEGMENT) >> 30; |
1818 | } |
1819 | |
1820 | static void ndesc_release_tx_desc(struct dma_desc *p, int mode) |
1821 | { |
1822 | - int ter = (p->des1 & TDES1_END_RING) >> 25; |
1823 | + int ter = (le32_to_cpu(p->des1) & TDES1_END_RING) >> 25; |
1824 | |
1825 | memset(p, 0, offsetof(struct dma_desc, des2)); |
1826 | if (mode == STMMAC_CHAIN_MODE) |
1827 | @@ -197,7 +197,7 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1828 | bool csum_flag, int mode, bool tx_own, |
1829 | bool ls) |
1830 | { |
1831 | - unsigned int tdes1 = p->des1; |
1832 | + unsigned int tdes1 = le32_to_cpu(p->des1); |
1833 | |
1834 | if (is_fs) |
1835 | tdes1 |= TDES1_FIRST_SEGMENT; |
1836 | @@ -212,7 +212,7 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1837 | if (ls) |
1838 | tdes1 |= TDES1_LAST_SEGMENT; |
1839 | |
1840 | - p->des1 = tdes1; |
1841 | + p->des1 = cpu_to_le32(tdes1); |
1842 | |
1843 | if (mode == STMMAC_CHAIN_MODE) |
1844 | norm_set_tx_desc_len_on_chain(p, len); |
1845 | @@ -220,12 +220,12 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, |
1846 | norm_set_tx_desc_len_on_ring(p, len); |
1847 | |
1848 | if (tx_own) |
1849 | - p->des0 |= TDES0_OWN; |
1850 | + p->des0 |= cpu_to_le32(TDES0_OWN); |
1851 | } |
1852 | |
1853 | static void ndesc_set_tx_ic(struct dma_desc *p) |
1854 | { |
1855 | - p->des1 |= TDES1_INTERRUPT; |
1856 | + p->des1 |= cpu_to_le32(TDES1_INTERRUPT); |
1857 | } |
1858 | |
1859 | static int ndesc_get_rx_frame_len(struct dma_desc *p, int rx_coe_type) |
1860 | @@ -241,19 +241,20 @@ static int ndesc_get_rx_frame_len(struct dma_desc *p, int rx_coe_type) |
1861 | if (rx_coe_type == STMMAC_RX_COE_TYPE1) |
1862 | csum = 2; |
1863 | |
1864 | - return (((p->des0 & RDES0_FRAME_LEN_MASK) >> RDES0_FRAME_LEN_SHIFT) - |
1865 | + return (((le32_to_cpu(p->des0) & RDES0_FRAME_LEN_MASK) |
1866 | + >> RDES0_FRAME_LEN_SHIFT) - |
1867 | csum); |
1868 | |
1869 | } |
1870 | |
1871 | static void ndesc_enable_tx_timestamp(struct dma_desc *p) |
1872 | { |
1873 | - p->des1 |= TDES1_TIME_STAMP_ENABLE; |
1874 | + p->des1 |= cpu_to_le32(TDES1_TIME_STAMP_ENABLE); |
1875 | } |
1876 | |
1877 | static int ndesc_get_tx_timestamp_status(struct dma_desc *p) |
1878 | { |
1879 | - return (p->des0 & TDES0_TIME_STAMP_STATUS) >> 17; |
1880 | + return (le32_to_cpu(p->des0) & TDES0_TIME_STAMP_STATUS) >> 17; |
1881 | } |
1882 | |
1883 | static u64 ndesc_get_timestamp(void *desc, u32 ats) |
1884 | @@ -261,9 +262,9 @@ static u64 ndesc_get_timestamp(void *desc, u32 ats) |
1885 | struct dma_desc *p = (struct dma_desc *)desc; |
1886 | u64 ns; |
1887 | |
1888 | - ns = p->des2; |
1889 | + ns = le32_to_cpu(p->des2); |
1890 | /* convert high/sec time stamp value to nanosecond */ |
1891 | - ns += p->des3 * 1000000000ULL; |
1892 | + ns += le32_to_cpu(p->des3) * 1000000000ULL; |
1893 | |
1894 | return ns; |
1895 | } |
1896 | @@ -272,7 +273,8 @@ static int ndesc_get_rx_timestamp_status(void *desc, u32 ats) |
1897 | { |
1898 | struct dma_desc *p = (struct dma_desc *)desc; |
1899 | |
1900 | - if ((p->des2 == 0xffffffff) && (p->des3 == 0xffffffff)) |
1901 | + if ((le32_to_cpu(p->des2) == 0xffffffff) && |
1902 | + (le32_to_cpu(p->des3) == 0xffffffff)) |
1903 | /* timestamp is corrupted, hence don't store it */ |
1904 | return 0; |
1905 | else |
1906 | diff --git a/drivers/net/ethernet/stmicro/stmmac/ring_mode.c b/drivers/net/ethernet/stmicro/stmmac/ring_mode.c |
1907 | index 7723b5d2499a1..9983ce9bd90de 100644 |
1908 | --- a/drivers/net/ethernet/stmicro/stmmac/ring_mode.c |
1909 | +++ b/drivers/net/ethernet/stmicro/stmmac/ring_mode.c |
1910 | @@ -34,7 +34,7 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1911 | unsigned int entry = priv->cur_tx; |
1912 | struct dma_desc *desc; |
1913 | unsigned int nopaged_len = skb_headlen(skb); |
1914 | - unsigned int bmax, len; |
1915 | + unsigned int bmax, len, des2; |
1916 | |
1917 | if (priv->extend_desc) |
1918 | desc = (struct dma_desc *)(priv->dma_etx + entry); |
1919 | @@ -50,16 +50,17 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1920 | |
1921 | if (nopaged_len > BUF_SIZE_8KiB) { |
1922 | |
1923 | - desc->des2 = dma_map_single(priv->device, skb->data, |
1924 | - bmax, DMA_TO_DEVICE); |
1925 | - if (dma_mapping_error(priv->device, desc->des2)) |
1926 | + des2 = dma_map_single(priv->device, skb->data, bmax, |
1927 | + DMA_TO_DEVICE); |
1928 | + desc->des2 = cpu_to_le32(des2); |
1929 | + if (dma_mapping_error(priv->device, des2)) |
1930 | return -1; |
1931 | |
1932 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1933 | + priv->tx_skbuff_dma[entry].buf = des2; |
1934 | priv->tx_skbuff_dma[entry].len = bmax; |
1935 | priv->tx_skbuff_dma[entry].is_jumbo = true; |
1936 | |
1937 | - desc->des3 = desc->des2 + BUF_SIZE_4KiB; |
1938 | + desc->des3 = cpu_to_le32(des2 + BUF_SIZE_4KiB); |
1939 | priv->hw->desc->prepare_tx_desc(desc, 1, bmax, csum, |
1940 | STMMAC_RING_MODE, 0, false); |
1941 | priv->tx_skbuff[entry] = NULL; |
1942 | @@ -70,26 +71,28 @@ static int stmmac_jumbo_frm(void *p, struct sk_buff *skb, int csum) |
1943 | else |
1944 | desc = priv->dma_tx + entry; |
1945 | |
1946 | - desc->des2 = dma_map_single(priv->device, skb->data + bmax, |
1947 | - len, DMA_TO_DEVICE); |
1948 | - if (dma_mapping_error(priv->device, desc->des2)) |
1949 | + des2 = dma_map_single(priv->device, skb->data + bmax, len, |
1950 | + DMA_TO_DEVICE); |
1951 | + desc->des2 = cpu_to_le32(des2); |
1952 | + if (dma_mapping_error(priv->device, des2)) |
1953 | return -1; |
1954 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1955 | + priv->tx_skbuff_dma[entry].buf = des2; |
1956 | priv->tx_skbuff_dma[entry].len = len; |
1957 | priv->tx_skbuff_dma[entry].is_jumbo = true; |
1958 | |
1959 | - desc->des3 = desc->des2 + BUF_SIZE_4KiB; |
1960 | + desc->des3 = cpu_to_le32(des2 + BUF_SIZE_4KiB); |
1961 | priv->hw->desc->prepare_tx_desc(desc, 0, len, csum, |
1962 | STMMAC_RING_MODE, 1, true); |
1963 | } else { |
1964 | - desc->des2 = dma_map_single(priv->device, skb->data, |
1965 | - nopaged_len, DMA_TO_DEVICE); |
1966 | - if (dma_mapping_error(priv->device, desc->des2)) |
1967 | + des2 = dma_map_single(priv->device, skb->data, |
1968 | + nopaged_len, DMA_TO_DEVICE); |
1969 | + desc->des2 = cpu_to_le32(des2); |
1970 | + if (dma_mapping_error(priv->device, des2)) |
1971 | return -1; |
1972 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
1973 | + priv->tx_skbuff_dma[entry].buf = des2; |
1974 | priv->tx_skbuff_dma[entry].len = nopaged_len; |
1975 | priv->tx_skbuff_dma[entry].is_jumbo = true; |
1976 | - desc->des3 = desc->des2 + BUF_SIZE_4KiB; |
1977 | + desc->des3 = cpu_to_le32(des2 + BUF_SIZE_4KiB); |
1978 | priv->hw->desc->prepare_tx_desc(desc, 1, nopaged_len, csum, |
1979 | STMMAC_RING_MODE, 0, true); |
1980 | } |
1981 | @@ -115,13 +118,13 @@ static void stmmac_refill_desc3(void *priv_ptr, struct dma_desc *p) |
1982 | |
1983 | /* Fill DES3 in case of RING mode */ |
1984 | if (priv->dma_buf_sz >= BUF_SIZE_8KiB) |
1985 | - p->des3 = p->des2 + BUF_SIZE_8KiB; |
1986 | + p->des3 = cpu_to_le32(le32_to_cpu(p->des2) + BUF_SIZE_8KiB); |
1987 | } |
1988 | |
1989 | /* In ring mode we need to fill the desc3 because it is used as buffer */ |
1990 | static void stmmac_init_desc3(struct dma_desc *p) |
1991 | { |
1992 | - p->des3 = p->des2 + BUF_SIZE_8KiB; |
1993 | + p->des3 = cpu_to_le32(le32_to_cpu(p->des2) + BUF_SIZE_8KiB); |
1994 | } |
1995 | |
1996 | static void stmmac_clean_desc3(void *priv_ptr, struct dma_desc *p) |
1997 | diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
1998 | index 65ed02bc3ea34..20a2b01b392c1 100644 |
1999 | --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
2000 | +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
2001 | @@ -1002,9 +1002,9 @@ static int stmmac_init_rx_buffers(struct stmmac_priv *priv, struct dma_desc *p, |
2002 | } |
2003 | |
2004 | if (priv->synopsys_id >= DWMAC_CORE_4_00) |
2005 | - p->des0 = priv->rx_skbuff_dma[i]; |
2006 | + p->des0 = cpu_to_le32(priv->rx_skbuff_dma[i]); |
2007 | else |
2008 | - p->des2 = priv->rx_skbuff_dma[i]; |
2009 | + p->des2 = cpu_to_le32(priv->rx_skbuff_dma[i]); |
2010 | |
2011 | if ((priv->hw->mode->init_desc3) && |
2012 | (priv->dma_buf_sz == BUF_SIZE_16KiB)) |
2013 | @@ -1968,7 +1968,7 @@ static void stmmac_tso_allocator(struct stmmac_priv *priv, unsigned int des, |
2014 | priv->cur_tx = STMMAC_GET_ENTRY(priv->cur_tx, DMA_TX_SIZE); |
2015 | desc = priv->dma_tx + priv->cur_tx; |
2016 | |
2017 | - desc->des0 = des + (total_len - tmp_len); |
2018 | + desc->des0 = cpu_to_le32(des + (total_len - tmp_len)); |
2019 | buff_size = tmp_len >= TSO_MAX_BUFF_SIZE ? |
2020 | TSO_MAX_BUFF_SIZE : tmp_len; |
2021 | |
2022 | @@ -2070,11 +2070,11 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev) |
2023 | priv->tx_skbuff_dma[first_entry].len = skb_headlen(skb); |
2024 | priv->tx_skbuff[first_entry] = skb; |
2025 | |
2026 | - first->des0 = des; |
2027 | + first->des0 = cpu_to_le32(des); |
2028 | |
2029 | /* Fill start of payload in buff2 of first descriptor */ |
2030 | if (pay_len) |
2031 | - first->des1 = des + proto_hdr_len; |
2032 | + first->des1 = cpu_to_le32(des + proto_hdr_len); |
2033 | |
2034 | /* If needed take extra descriptors to fill the remaining payload */ |
2035 | tmp_pay_len = pay_len - TSO_MAX_BUFF_SIZE; |
2036 | @@ -2271,13 +2271,11 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) |
2037 | |
2038 | priv->tx_skbuff[entry] = NULL; |
2039 | |
2040 | - if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) { |
2041 | - desc->des0 = des; |
2042 | - priv->tx_skbuff_dma[entry].buf = desc->des0; |
2043 | - } else { |
2044 | - desc->des2 = des; |
2045 | - priv->tx_skbuff_dma[entry].buf = desc->des2; |
2046 | - } |
2047 | + priv->tx_skbuff_dma[entry].buf = des; |
2048 | + if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) |
2049 | + desc->des0 = cpu_to_le32(des); |
2050 | + else |
2051 | + desc->des2 = cpu_to_le32(des); |
2052 | |
2053 | priv->tx_skbuff_dma[entry].map_as_page = true; |
2054 | priv->tx_skbuff_dma[entry].len = len; |
2055 | @@ -2348,13 +2346,11 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) |
2056 | if (dma_mapping_error(priv->device, des)) |
2057 | goto dma_map_err; |
2058 | |
2059 | - if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) { |
2060 | - first->des0 = des; |
2061 | - priv->tx_skbuff_dma[first_entry].buf = first->des0; |
2062 | - } else { |
2063 | - first->des2 = des; |
2064 | - priv->tx_skbuff_dma[first_entry].buf = first->des2; |
2065 | - } |
2066 | + priv->tx_skbuff_dma[first_entry].buf = des; |
2067 | + if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) |
2068 | + first->des0 = cpu_to_le32(des); |
2069 | + else |
2070 | + first->des2 = cpu_to_le32(des); |
2071 | |
2072 | priv->tx_skbuff_dma[first_entry].len = nopaged_len; |
2073 | priv->tx_skbuff_dma[first_entry].last_segment = last_segment; |
2074 | @@ -2468,10 +2464,10 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv) |
2075 | } |
2076 | |
2077 | if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) { |
2078 | - p->des0 = priv->rx_skbuff_dma[entry]; |
2079 | + p->des0 = cpu_to_le32(priv->rx_skbuff_dma[entry]); |
2080 | p->des1 = 0; |
2081 | } else { |
2082 | - p->des2 = priv->rx_skbuff_dma[entry]; |
2083 | + p->des2 = cpu_to_le32(priv->rx_skbuff_dma[entry]); |
2084 | } |
2085 | if (priv->hw->mode->refill_desc3) |
2086 | priv->hw->mode->refill_desc3(priv, p); |
2087 | @@ -2575,9 +2571,9 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit) |
2088 | unsigned int des; |
2089 | |
2090 | if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00)) |
2091 | - des = p->des0; |
2092 | + des = le32_to_cpu(p->des0); |
2093 | else |
2094 | - des = p->des2; |
2095 | + des = le32_to_cpu(p->des2); |
2096 | |
2097 | frame_len = priv->hw->desc->get_rx_frame_len(p, coe); |
2098 | |
2099 | @@ -2951,14 +2947,17 @@ static void sysfs_display_ring(void *head, int size, int extend_desc, |
2100 | x = *(u64 *) ep; |
2101 | seq_printf(seq, "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n", |
2102 | i, (unsigned int)virt_to_phys(ep), |
2103 | - ep->basic.des0, ep->basic.des1, |
2104 | - ep->basic.des2, ep->basic.des3); |
2105 | + le32_to_cpu(ep->basic.des0), |
2106 | + le32_to_cpu(ep->basic.des1), |
2107 | + le32_to_cpu(ep->basic.des2), |
2108 | + le32_to_cpu(ep->basic.des3)); |
2109 | ep++; |
2110 | } else { |
2111 | x = *(u64 *) p; |
2112 | seq_printf(seq, "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n", |
2113 | i, (unsigned int)virt_to_phys(ep), |
2114 | - p->des0, p->des1, p->des2, p->des3); |
2115 | + le32_to_cpu(p->des0), le32_to_cpu(p->des1), |
2116 | + le32_to_cpu(p->des2), le32_to_cpu(p->des3)); |
2117 | p++; |
2118 | } |
2119 | seq_printf(seq, "\n"); |
2120 | diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c |
2121 | index eafc28142cd21..49eaede34eea6 100644 |
2122 | --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c |
2123 | +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c |
2124 | @@ -231,7 +231,17 @@ static int stmmac_pci_probe(struct pci_dev *pdev, |
2125 | */ |
2126 | static void stmmac_pci_remove(struct pci_dev *pdev) |
2127 | { |
2128 | + int i; |
2129 | + |
2130 | stmmac_dvr_remove(&pdev->dev); |
2131 | + |
2132 | + for (i = 0; i <= PCI_STD_RESOURCE_END; i++) { |
2133 | + if (pci_resource_len(pdev, i) == 0) |
2134 | + continue; |
2135 | + pcim_iounmap_regions(pdev, BIT(i)); |
2136 | + break; |
2137 | + } |
2138 | + |
2139 | pci_disable_device(pdev); |
2140 | } |
2141 | |
2142 | diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c |
2143 | index 94b05dd827af6..375b6810bf461 100644 |
2144 | --- a/drivers/net/team/team.c |
2145 | +++ b/drivers/net/team/team.c |
2146 | @@ -261,17 +261,6 @@ static void __team_option_inst_mark_removed_port(struct team *team, |
2147 | } |
2148 | } |
2149 | |
2150 | -static bool __team_option_inst_tmp_find(const struct list_head *opts, |
2151 | - const struct team_option_inst *needle) |
2152 | -{ |
2153 | - struct team_option_inst *opt_inst; |
2154 | - |
2155 | - list_for_each_entry(opt_inst, opts, tmp_list) |
2156 | - if (opt_inst == needle) |
2157 | - return true; |
2158 | - return false; |
2159 | -} |
2160 | - |
2161 | static int __team_options_register(struct team *team, |
2162 | const struct team_option *option, |
2163 | size_t option_count) |
2164 | @@ -2466,7 +2455,6 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info) |
2165 | int err = 0; |
2166 | int i; |
2167 | struct nlattr *nl_option; |
2168 | - LIST_HEAD(opt_inst_list); |
2169 | |
2170 | rtnl_lock(); |
2171 | |
2172 | @@ -2486,6 +2474,7 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info) |
2173 | struct nlattr *opt_attrs[TEAM_ATTR_OPTION_MAX + 1]; |
2174 | struct nlattr *attr; |
2175 | struct nlattr *attr_data; |
2176 | + LIST_HEAD(opt_inst_list); |
2177 | enum team_option_type opt_type; |
2178 | int opt_port_ifindex = 0; /* != 0 for per-port options */ |
2179 | u32 opt_array_index = 0; |
2180 | @@ -2589,23 +2578,17 @@ static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info) |
2181 | if (err) |
2182 | goto team_put; |
2183 | opt_inst->changed = true; |
2184 | - |
2185 | - /* dumb/evil user-space can send us duplicate opt, |
2186 | - * keep only the last one |
2187 | - */ |
2188 | - if (__team_option_inst_tmp_find(&opt_inst_list, |
2189 | - opt_inst)) |
2190 | - continue; |
2191 | - |
2192 | list_add(&opt_inst->tmp_list, &opt_inst_list); |
2193 | } |
2194 | if (!opt_found) { |
2195 | err = -ENOENT; |
2196 | goto team_put; |
2197 | } |
2198 | - } |
2199 | |
2200 | - err = team_nl_send_event_options_get(team, &opt_inst_list); |
2201 | + err = team_nl_send_event_options_get(team, &opt_inst_list); |
2202 | + if (err) |
2203 | + break; |
2204 | + } |
2205 | |
2206 | team_put: |
2207 | team_nl_team_put(team); |
2208 | diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c |
2209 | index 873424ab0e328..bd0e659002161 100644 |
2210 | --- a/drivers/phy/tegra/xusb.c |
2211 | +++ b/drivers/phy/tegra/xusb.c |
2212 | @@ -418,7 +418,7 @@ tegra_xusb_port_find_lane(struct tegra_xusb_port *port, |
2213 | { |
2214 | struct tegra_xusb_lane *lane, *match = ERR_PTR(-ENODEV); |
2215 | |
2216 | - for (map = map; map->type; map++) { |
2217 | + for (; map->type; map++) { |
2218 | if (port->index != map->port) |
2219 | continue; |
2220 | |
2221 | diff --git a/drivers/pinctrl/pinctrl-max77620.c b/drivers/pinctrl/pinctrl-max77620.c |
2222 | index d9ff53e8f715a..a7c4e32d31c36 100644 |
2223 | --- a/drivers/pinctrl/pinctrl-max77620.c |
2224 | +++ b/drivers/pinctrl/pinctrl-max77620.c |
2225 | @@ -34,14 +34,12 @@ enum max77620_pin_ppdrv { |
2226 | MAX77620_PIN_PP_DRV, |
2227 | }; |
2228 | |
2229 | -enum max77620_pinconf_param { |
2230 | - MAX77620_ACTIVE_FPS_SOURCE = PIN_CONFIG_END + 1, |
2231 | - MAX77620_ACTIVE_FPS_POWER_ON_SLOTS, |
2232 | - MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS, |
2233 | - MAX77620_SUSPEND_FPS_SOURCE, |
2234 | - MAX77620_SUSPEND_FPS_POWER_ON_SLOTS, |
2235 | - MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS, |
2236 | -}; |
2237 | +#define MAX77620_ACTIVE_FPS_SOURCE (PIN_CONFIG_END + 1) |
2238 | +#define MAX77620_ACTIVE_FPS_POWER_ON_SLOTS (PIN_CONFIG_END + 2) |
2239 | +#define MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS (PIN_CONFIG_END + 3) |
2240 | +#define MAX77620_SUSPEND_FPS_SOURCE (PIN_CONFIG_END + 4) |
2241 | +#define MAX77620_SUSPEND_FPS_POWER_ON_SLOTS (PIN_CONFIG_END + 5) |
2242 | +#define MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS (PIN_CONFIG_END + 6) |
2243 | |
2244 | struct max77620_pin_function { |
2245 | const char *name; |
2246 | diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c |
2247 | index 77128d680e3bc..6f38fa1f468a7 100644 |
2248 | --- a/drivers/scsi/isci/init.c |
2249 | +++ b/drivers/scsi/isci/init.c |
2250 | @@ -595,6 +595,13 @@ static struct isci_host *isci_host_alloc(struct pci_dev *pdev, int id) |
2251 | shost->max_lun = ~0; |
2252 | shost->max_cmd_len = MAX_COMMAND_SIZE; |
2253 | |
2254 | + /* turn on DIF support */ |
2255 | + scsi_host_set_prot(shost, |
2256 | + SHOST_DIF_TYPE1_PROTECTION | |
2257 | + SHOST_DIF_TYPE2_PROTECTION | |
2258 | + SHOST_DIF_TYPE3_PROTECTION); |
2259 | + scsi_host_set_guard(shost, SHOST_DIX_GUARD_CRC); |
2260 | + |
2261 | err = scsi_add_host(shost, &pdev->dev); |
2262 | if (err) |
2263 | goto err_shost; |
2264 | @@ -682,13 +689,6 @@ static int isci_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) |
2265 | goto err_host_alloc; |
2266 | } |
2267 | pci_info->hosts[i] = h; |
2268 | - |
2269 | - /* turn on DIF support */ |
2270 | - scsi_host_set_prot(to_shost(h), |
2271 | - SHOST_DIF_TYPE1_PROTECTION | |
2272 | - SHOST_DIF_TYPE2_PROTECTION | |
2273 | - SHOST_DIF_TYPE3_PROTECTION); |
2274 | - scsi_host_set_guard(to_shost(h), SHOST_DIX_GUARD_CRC); |
2275 | } |
2276 | |
2277 | err = isci_setup_interrupts(pdev); |
2278 | diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c |
2279 | index d8c03431d0aa8..f9f899ec94270 100644 |
2280 | --- a/drivers/scsi/qla4xxx/ql4_os.c |
2281 | +++ b/drivers/scsi/qla4xxx/ql4_os.c |
2282 | @@ -7245,6 +7245,8 @@ static int qla4xxx_sysfs_ddb_tgt_create(struct scsi_qla_host *ha, |
2283 | |
2284 | rc = qla4xxx_copy_from_fwddb_param(fnode_sess, fnode_conn, |
2285 | fw_ddb_entry); |
2286 | + if (rc) |
2287 | + goto free_sess; |
2288 | |
2289 | ql4_printk(KERN_INFO, ha, "%s: sysfs entry %s created\n", |
2290 | __func__, fnode_sess->dev.kobj.name); |
2291 | diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c |
2292 | index 9ff5219d849e9..411e9df0d40e9 100644 |
2293 | --- a/fs/ceph/snap.c |
2294 | +++ b/fs/ceph/snap.c |
2295 | @@ -609,7 +609,8 @@ int __ceph_finish_cap_snap(struct ceph_inode_info *ci, |
2296 | capsnap->size); |
2297 | |
2298 | spin_lock(&mdsc->snap_flush_lock); |
2299 | - list_add_tail(&ci->i_snap_flush_item, &mdsc->snap_flush_list); |
2300 | + if (list_empty(&ci->i_snap_flush_item)) |
2301 | + list_add_tail(&ci->i_snap_flush_item, &mdsc->snap_flush_list); |
2302 | spin_unlock(&mdsc->snap_flush_lock); |
2303 | return 1; /* caller may want to ceph_flush_snaps */ |
2304 | } |
2305 | diff --git a/fs/proc/base.c b/fs/proc/base.c |
2306 | index 79702d405ba72..b9e41832315a6 100644 |
2307 | --- a/fs/proc/base.c |
2308 | +++ b/fs/proc/base.c |
2309 | @@ -1134,10 +1134,6 @@ static int __set_oom_adj(struct file *file, int oom_adj, bool legacy) |
2310 | |
2311 | task_lock(p); |
2312 | if (!p->vfork_done && process_shares_mm(p, mm)) { |
2313 | - pr_info("updating oom_score_adj for %d (%s) from %d to %d because it shares mm with %d (%s). Report if this is unexpected.\n", |
2314 | - task_pid_nr(p), p->comm, |
2315 | - p->signal->oom_score_adj, oom_adj, |
2316 | - task_pid_nr(task), task->comm); |
2317 | p->signal->oom_score_adj = oom_adj; |
2318 | if (!legacy && has_capability_noaudit(current, CAP_SYS_RESOURCE)) |
2319 | p->signal->oom_score_adj_min = (short)oom_adj; |
2320 | diff --git a/include/keys/user-type.h b/include/keys/user-type.h |
2321 | index c56fef40f53ef..5d744ec8f644a 100644 |
2322 | --- a/include/keys/user-type.h |
2323 | +++ b/include/keys/user-type.h |
2324 | @@ -31,7 +31,7 @@ |
2325 | struct user_key_payload { |
2326 | struct rcu_head rcu; /* RCU destructor */ |
2327 | unsigned short datalen; /* length of this data */ |
2328 | - char data[0]; /* actual data */ |
2329 | + char data[0] __aligned(__alignof__(u64)); /* actual data */ |
2330 | }; |
2331 | |
2332 | extern struct key_type key_type_user; |
2333 | diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h |
2334 | index 08398182f56ec..36dc52067377b 100644 |
2335 | --- a/include/linux/clocksource.h |
2336 | +++ b/include/linux/clocksource.h |
2337 | @@ -117,7 +117,7 @@ struct clocksource { |
2338 | #define CLOCK_SOURCE_RESELECT 0x100 |
2339 | |
2340 | /* simplify initialization of mask field */ |
2341 | -#define CLOCKSOURCE_MASK(bits) (cycle_t)((bits) < 64 ? ((1ULL<<(bits))-1) : -1) |
2342 | +#define CLOCKSOURCE_MASK(bits) GENMASK_ULL((bits) - 1, 0) |
2343 | |
2344 | static inline u32 clocksource_freq2mult(u32 freq, u32 shift_constant, u64 from) |
2345 | { |
2346 | diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h |
2347 | index 22db1e63707ec..05e8b6e4edcb6 100644 |
2348 | --- a/include/linux/sched/sysctl.h |
2349 | +++ b/include/linux/sched/sysctl.h |
2350 | @@ -33,9 +33,9 @@ extern unsigned int sysctl_numa_balancing_scan_period_max; |
2351 | extern unsigned int sysctl_numa_balancing_scan_size; |
2352 | |
2353 | #ifdef CONFIG_SCHED_DEBUG |
2354 | -extern unsigned int sysctl_sched_migration_cost; |
2355 | -extern unsigned int sysctl_sched_nr_migrate; |
2356 | -extern unsigned int sysctl_sched_time_avg; |
2357 | +extern __read_mostly unsigned int sysctl_sched_migration_cost; |
2358 | +extern __read_mostly unsigned int sysctl_sched_nr_migrate; |
2359 | +extern __read_mostly unsigned int sysctl_sched_time_avg; |
2360 | extern unsigned int sysctl_sched_shares_window; |
2361 | |
2362 | int sched_proc_update_handler(struct ctl_table *table, int write, |
2363 | diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c |
2364 | index a47339b156ce7..6786c507f1f98 100644 |
2365 | --- a/kernel/trace/trace.c |
2366 | +++ b/kernel/trace/trace.c |
2367 | @@ -3022,13 +3022,14 @@ static void test_cpu_buff_start(struct trace_iterator *iter) |
2368 | if (!(iter->iter_flags & TRACE_FILE_ANNOTATE)) |
2369 | return; |
2370 | |
2371 | - if (iter->started && cpumask_test_cpu(iter->cpu, iter->started)) |
2372 | + if (cpumask_available(iter->started) && |
2373 | + cpumask_test_cpu(iter->cpu, iter->started)) |
2374 | return; |
2375 | |
2376 | if (per_cpu_ptr(iter->trace_buffer->data, iter->cpu)->skipped_entries) |
2377 | return; |
2378 | |
2379 | - if (iter->started) |
2380 | + if (cpumask_available(iter->started)) |
2381 | cpumask_set_cpu(iter->cpu, iter->started); |
2382 | |
2383 | /* Don't print started cpu buffer for the first entry of the trace */ |
2384 | diff --git a/mm/mempolicy.c b/mm/mempolicy.c |
2385 | index e21d9b44247bc..593b74bed59b8 100644 |
2386 | --- a/mm/mempolicy.c |
2387 | +++ b/mm/mempolicy.c |
2388 | @@ -1327,7 +1327,7 @@ static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode, |
2389 | nodemask_t *nodes) |
2390 | { |
2391 | unsigned long copy = ALIGN(maxnode-1, 64) / 8; |
2392 | - const int nbytes = BITS_TO_LONGS(MAX_NUMNODES) * sizeof(long); |
2393 | + unsigned int nbytes = BITS_TO_LONGS(nr_node_ids) * sizeof(long); |
2394 | |
2395 | if (copy > nbytes) { |
2396 | if (copy > PAGE_SIZE) |
2397 | @@ -1488,7 +1488,7 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, |
2398 | int uninitialized_var(pval); |
2399 | nodemask_t nodes; |
2400 | |
2401 | - if (nmask != NULL && maxnode < MAX_NUMNODES) |
2402 | + if (nmask != NULL && maxnode < nr_node_ids) |
2403 | return -EINVAL; |
2404 | |
2405 | err = do_get_mempolicy(&pval, &nodes, addr, flags); |
2406 | @@ -1517,7 +1517,7 @@ COMPAT_SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, |
2407 | unsigned long nr_bits, alloc_size; |
2408 | DECLARE_BITMAP(bm, MAX_NUMNODES); |
2409 | |
2410 | - nr_bits = min_t(unsigned long, maxnode-1, MAX_NUMNODES); |
2411 | + nr_bits = min_t(unsigned long, maxnode-1, nr_node_ids); |
2412 | alloc_size = ALIGN(nr_bits, BITS_PER_LONG) / 8; |
2413 | |
2414 | if (nmask) |
2415 | diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c |
2416 | index d3548c48369f0..cf15851a7d2fb 100644 |
2417 | --- a/mm/zsmalloc.c |
2418 | +++ b/mm/zsmalloc.c |
2419 | @@ -473,7 +473,7 @@ static bool is_zspage_isolated(struct zspage *zspage) |
2420 | return zspage->isolated; |
2421 | } |
2422 | |
2423 | -static int is_first_page(struct page *page) |
2424 | +static __maybe_unused int is_first_page(struct page *page) |
2425 | { |
2426 | return PagePrivate(page); |
2427 | } |
2428 | @@ -558,20 +558,23 @@ static int get_size_class_index(int size) |
2429 | return min(zs_size_classes - 1, idx); |
2430 | } |
2431 | |
2432 | +/* type can be of enum type zs_stat_type or fullness_group */ |
2433 | static inline void zs_stat_inc(struct size_class *class, |
2434 | - enum zs_stat_type type, unsigned long cnt) |
2435 | + int type, unsigned long cnt) |
2436 | { |
2437 | class->stats.objs[type] += cnt; |
2438 | } |
2439 | |
2440 | +/* type can be of enum type zs_stat_type or fullness_group */ |
2441 | static inline void zs_stat_dec(struct size_class *class, |
2442 | - enum zs_stat_type type, unsigned long cnt) |
2443 | + int type, unsigned long cnt) |
2444 | { |
2445 | class->stats.objs[type] -= cnt; |
2446 | } |
2447 | |
2448 | +/* type can be of enum type zs_stat_type or fullness_group */ |
2449 | static inline unsigned long zs_stat_get(struct size_class *class, |
2450 | - enum zs_stat_type type) |
2451 | + int type) |
2452 | { |
2453 | return class->stats.objs[type]; |
2454 | } |
2455 | diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c |
2456 | index 835af771a9fd1..a92512a46e91e 100644 |
2457 | --- a/net/batman-adv/soft-interface.c |
2458 | +++ b/net/batman-adv/soft-interface.c |
2459 | @@ -217,6 +217,8 @@ static int batadv_interface_tx(struct sk_buff *skb, |
2460 | |
2461 | switch (ntohs(ethhdr->h_proto)) { |
2462 | case ETH_P_8021Q: |
2463 | + if (!pskb_may_pull(skb, sizeof(*vhdr))) |
2464 | + goto dropped; |
2465 | vhdr = vlan_eth_hdr(skb); |
2466 | |
2467 | /* drop batman-in-batman packets to prevent loops */ |
2468 | diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c |
2469 | index 4bd57507b9a45..2136e45f52777 100644 |
2470 | --- a/net/bridge/br_multicast.c |
2471 | +++ b/net/bridge/br_multicast.c |
2472 | @@ -1287,14 +1287,7 @@ static void br_multicast_query_received(struct net_bridge *br, |
2473 | return; |
2474 | |
2475 | br_multicast_update_query_timer(br, query, max_delay); |
2476 | - |
2477 | - /* Based on RFC4541, section 2.1.1 IGMP Forwarding Rules, |
2478 | - * the arrival port for IGMP Queries where the source address |
2479 | - * is 0.0.0.0 should not be added to router port list. |
2480 | - */ |
2481 | - if ((saddr->proto == htons(ETH_P_IP) && saddr->u.ip4) || |
2482 | - saddr->proto == htons(ETH_P_IPV6)) |
2483 | - br_multicast_mark_router(br, port); |
2484 | + br_multicast_mark_router(br, port); |
2485 | } |
2486 | |
2487 | static int br_ip4_multicast_query(struct net_bridge *br, |
2488 | diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c |
2489 | index 93eb606f76282..7e27cabb04ef9 100644 |
2490 | --- a/net/ceph/messenger.c |
2491 | +++ b/net/ceph/messenger.c |
2492 | @@ -2042,6 +2042,8 @@ static int process_connect(struct ceph_connection *con) |
2493 | dout("process_connect on %p tag %d\n", con, (int)con->in_tag); |
2494 | |
2495 | if (con->auth) { |
2496 | + int len = le32_to_cpu(con->in_reply.authorizer_len); |
2497 | + |
2498 | /* |
2499 | * Any connection that defines ->get_authorizer() |
2500 | * should also define ->add_authorizer_challenge() and |
2501 | @@ -2051,8 +2053,7 @@ static int process_connect(struct ceph_connection *con) |
2502 | */ |
2503 | if (con->in_reply.tag == CEPH_MSGR_TAG_CHALLENGE_AUTHORIZER) { |
2504 | ret = con->ops->add_authorizer_challenge( |
2505 | - con, con->auth->authorizer_reply_buf, |
2506 | - le32_to_cpu(con->in_reply.authorizer_len)); |
2507 | + con, con->auth->authorizer_reply_buf, len); |
2508 | if (ret < 0) |
2509 | return ret; |
2510 | |
2511 | @@ -2062,10 +2063,12 @@ static int process_connect(struct ceph_connection *con) |
2512 | return 0; |
2513 | } |
2514 | |
2515 | - ret = con->ops->verify_authorizer_reply(con); |
2516 | - if (ret < 0) { |
2517 | - con->error_msg = "bad authorize reply"; |
2518 | - return ret; |
2519 | + if (len) { |
2520 | + ret = con->ops->verify_authorizer_reply(con); |
2521 | + if (ret < 0) { |
2522 | + con->error_msg = "bad authorize reply"; |
2523 | + return ret; |
2524 | + } |
2525 | } |
2526 | } |
2527 | |
2528 | diff --git a/net/core/netpoll.c b/net/core/netpoll.c |
2529 | index 457f882b0f7ba..9b2d61120c0d7 100644 |
2530 | --- a/net/core/netpoll.c |
2531 | +++ b/net/core/netpoll.c |
2532 | @@ -666,7 +666,7 @@ int netpoll_setup(struct netpoll *np) |
2533 | int err; |
2534 | |
2535 | rtnl_lock(); |
2536 | - if (np->dev_name) { |
2537 | + if (np->dev_name[0]) { |
2538 | struct net *net = current->nsproxy->net_ns; |
2539 | ndev = __dev_get_by_name(net, np->dev_name); |
2540 | } |
2541 | diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c |
2542 | index fc7ca1e469081..4381ea53fa91d 100644 |
2543 | --- a/net/ipv6/sit.c |
2544 | +++ b/net/ipv6/sit.c |
2545 | @@ -540,7 +540,8 @@ static int ipip6_err(struct sk_buff *skb, u32 info) |
2546 | } |
2547 | |
2548 | err = 0; |
2549 | - if (!ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len)) |
2550 | + if (__in6_dev_get(skb->dev) && |
2551 | + !ip6_err_gen_icmpv6_unreach(skb, iph->ihl * 4, type, data_len)) |
2552 | goto out; |
2553 | |
2554 | if (t->parms.iph.daddr == 0) |
2555 | diff --git a/net/mac80211/mesh_pathtbl.c b/net/mac80211/mesh_pathtbl.c |
2556 | index f0e6175a9821f..197753ad50b4e 100644 |
2557 | --- a/net/mac80211/mesh_pathtbl.c |
2558 | +++ b/net/mac80211/mesh_pathtbl.c |
2559 | @@ -449,17 +449,15 @@ struct mesh_path *mesh_path_add(struct ieee80211_sub_if_data *sdata, |
2560 | |
2561 | } while (unlikely(ret == -EEXIST && !mpath)); |
2562 | |
2563 | - if (ret && ret != -EEXIST) |
2564 | - return ERR_PTR(ret); |
2565 | - |
2566 | - /* At this point either new_mpath was added, or we found a |
2567 | - * matching entry already in the table; in the latter case |
2568 | - * free the unnecessary new entry. |
2569 | - */ |
2570 | - if (ret == -EEXIST) { |
2571 | + if (ret) { |
2572 | kfree(new_mpath); |
2573 | + |
2574 | + if (ret != -EEXIST) |
2575 | + return ERR_PTR(ret); |
2576 | + |
2577 | new_mpath = mpath; |
2578 | } |
2579 | + |
2580 | sdata->u.mesh.mesh_paths_generation++; |
2581 | return new_mpath; |
2582 | } |
2583 | @@ -489,6 +487,9 @@ int mpp_path_add(struct ieee80211_sub_if_data *sdata, |
2584 | &new_mpath->rhash, |
2585 | mesh_rht_params); |
2586 | |
2587 | + if (ret) |
2588 | + kfree(new_mpath); |
2589 | + |
2590 | sdata->u.mesh.mpp_paths_generation++; |
2591 | return ret; |
2592 | } |
2593 | diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c |
2594 | index a3fb30f5a1a95..2fa1c4f2e94e0 100644 |
2595 | --- a/net/netfilter/nf_tables_api.c |
2596 | +++ b/net/netfilter/nf_tables_api.c |
2597 | @@ -263,6 +263,9 @@ static int nft_delrule_by_chain(struct nft_ctx *ctx) |
2598 | int err; |
2599 | |
2600 | list_for_each_entry(rule, &ctx->chain->rules, list) { |
2601 | + if (!nft_is_active_next(ctx->net, rule)) |
2602 | + continue; |
2603 | + |
2604 | err = nft_delrule(ctx, rule); |
2605 | if (err < 0) |
2606 | return err; |
2607 | diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c |
2608 | index 82e222cd48454..14df2fcf61384 100644 |
2609 | --- a/net/packet/af_packet.c |
2610 | +++ b/net/packet/af_packet.c |
2611 | @@ -4316,7 +4316,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, |
2612 | rb->frames_per_block = req->tp_block_size / req->tp_frame_size; |
2613 | if (unlikely(rb->frames_per_block == 0)) |
2614 | goto out; |
2615 | - if (unlikely(req->tp_block_size > UINT_MAX / req->tp_block_nr)) |
2616 | + if (unlikely(rb->frames_per_block > UINT_MAX / req->tp_block_nr)) |
2617 | goto out; |
2618 | if (unlikely((rb->frames_per_block * req->tp_block_nr) != |
2619 | req->tp_frame_nr)) |
2620 | diff --git a/net/sctp/offload.c b/net/sctp/offload.c |
2621 | index 6300f28c95888..31b9a12fc35a1 100644 |
2622 | --- a/net/sctp/offload.c |
2623 | +++ b/net/sctp/offload.c |
2624 | @@ -35,6 +35,7 @@ |
2625 | static __le32 sctp_gso_make_checksum(struct sk_buff *skb) |
2626 | { |
2627 | skb->ip_summed = CHECKSUM_NONE; |
2628 | + gso_reset_checksum(skb, ~0); |
2629 | return sctp_compute_cksum(skb, skb_transport_offset(skb)); |
2630 | } |
2631 | |
2632 | diff --git a/security/keys/key.c b/security/keys/key.c |
2633 | index 7dc59069e8c76..7276d1a009d49 100644 |
2634 | --- a/security/keys/key.c |
2635 | +++ b/security/keys/key.c |
2636 | @@ -264,8 +264,8 @@ struct key *key_alloc(struct key_type *type, const char *desc, |
2637 | |
2638 | spin_lock(&user->lock); |
2639 | if (!(flags & KEY_ALLOC_QUOTA_OVERRUN)) { |
2640 | - if (user->qnkeys + 1 >= maxkeys || |
2641 | - user->qnbytes + quotalen >= maxbytes || |
2642 | + if (user->qnkeys + 1 > maxkeys || |
2643 | + user->qnbytes + quotalen > maxbytes || |
2644 | user->qnbytes + quotalen < user->qnbytes) |
2645 | goto no_quota; |
2646 | } |
2647 | diff --git a/security/keys/keyring.c b/security/keys/keyring.c |
2648 | index 4e9b4d23e20ef..7308067dcc5d8 100644 |
2649 | --- a/security/keys/keyring.c |
2650 | +++ b/security/keys/keyring.c |
2651 | @@ -652,9 +652,6 @@ static bool search_nested_keyrings(struct key *keyring, |
2652 | BUG_ON((ctx->flags & STATE_CHECKS) == 0 || |
2653 | (ctx->flags & STATE_CHECKS) == STATE_CHECKS); |
2654 | |
2655 | - if (ctx->index_key.description) |
2656 | - ctx->index_key.desc_len = strlen(ctx->index_key.description); |
2657 | - |
2658 | /* Check to see if this top-level keyring is what we are looking for |
2659 | * and whether it is valid or not. |
2660 | */ |
2661 | @@ -912,6 +909,7 @@ key_ref_t keyring_search(key_ref_t keyring, |
2662 | struct keyring_search_context ctx = { |
2663 | .index_key.type = type, |
2664 | .index_key.description = description, |
2665 | + .index_key.desc_len = strlen(description), |
2666 | .cred = current_cred(), |
2667 | .match_data.cmp = key_default_cmp, |
2668 | .match_data.raw_data = description, |
2669 | diff --git a/security/keys/proc.c b/security/keys/proc.c |
2670 | index 0361286824638..ec493ddadd111 100644 |
2671 | --- a/security/keys/proc.c |
2672 | +++ b/security/keys/proc.c |
2673 | @@ -186,8 +186,7 @@ static int proc_keys_show(struct seq_file *m, void *v) |
2674 | int rc; |
2675 | |
2676 | struct keyring_search_context ctx = { |
2677 | - .index_key.type = key->type, |
2678 | - .index_key.description = key->description, |
2679 | + .index_key = key->index_key, |
2680 | .cred = current_cred(), |
2681 | .match_data.cmp = lookup_user_key_possessed, |
2682 | .match_data.raw_data = key, |
2683 | diff --git a/security/keys/request_key.c b/security/keys/request_key.c |
2684 | index cb7f8f730c6dd..aa292e01c5621 100644 |
2685 | --- a/security/keys/request_key.c |
2686 | +++ b/security/keys/request_key.c |
2687 | @@ -544,6 +544,7 @@ struct key *request_key_and_link(struct key_type *type, |
2688 | struct keyring_search_context ctx = { |
2689 | .index_key.type = type, |
2690 | .index_key.description = description, |
2691 | + .index_key.desc_len = strlen(description), |
2692 | .cred = current_cred(), |
2693 | .match_data.cmp = key_default_cmp, |
2694 | .match_data.raw_data = description, |
2695 | diff --git a/security/keys/request_key_auth.c b/security/keys/request_key_auth.c |
2696 | index ba74a0b4d1cb6..f60baeb338e5f 100644 |
2697 | --- a/security/keys/request_key_auth.c |
2698 | +++ b/security/keys/request_key_auth.c |
2699 | @@ -254,7 +254,7 @@ struct key *key_get_instantiation_authkey(key_serial_t target_id) |
2700 | struct key *authkey; |
2701 | key_ref_t authkey_ref; |
2702 | |
2703 | - sprintf(description, "%x", target_id); |
2704 | + ctx.index_key.desc_len = sprintf(description, "%x", target_id); |
2705 | |
2706 | authkey_ref = search_process_keyrings(&ctx); |
2707 |