kernel: update kernel 4.9 to 4.9.29
- Refresh all patches - Removed upstreamed - Adapted 1 Compile tested on: bcm53xx, cns3xxx, imx6, lantiq Run tested on: cns3xxx & imx6 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> [update from 4.9.28 to 4.9.29] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
committed by
Hauke Mehrtens
parent
088e28772c
commit
e842e16f45
@@ -1,49 +0,0 @@
|
||||
From 3d6159640da9c9175d1ca42f151fc1a14caded59 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
|
||||
Date: Thu, 13 Apr 2017 15:33:34 +0300
|
||||
Subject: [PATCH] usb: Make sure usb/phy/of gets built-in
|
||||
|
||||
DWC3 driver uses of_usb_get_phy_mode() which is
|
||||
implemented in drivers/usb/phy/of.c and in bare minimal
|
||||
configuration it might not be pulled in kernel binary.
|
||||
|
||||
In case of ARC or ARM this could be easily reproduced with
|
||||
"allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.
|
||||
|
||||
On building all ends-up with:
|
||||
---------------------->8------------------
|
||||
Kernel: arch/arm/boot/Image is ready
|
||||
Kernel: arch/arm/boot/zImage is ready
|
||||
Building modules, stage 2.
|
||||
MODPOST 5 modules
|
||||
ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!
|
||||
make[1]: *** [__modpost] Error 1
|
||||
make: *** [modules] Error 2
|
||||
---------------------->8------------------
|
||||
|
||||
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Felipe Balbi <balbi@kernel.org>
|
||||
Cc: Felix Fietkau <nbd@nbd.name>
|
||||
Cc: Jeremy Kerr <jk@ozlabs.org>
|
||||
Cc: linux-snps-arc@lists.infradead.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/Makefile | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -101,6 +101,7 @@ obj-$(CONFIG_USB_PHY) += usb/
|
||||
obj-$(CONFIG_USB) += usb/
|
||||
obj-$(CONFIG_PCI) += usb/
|
||||
obj-$(CONFIG_USB_GADGET) += usb/
|
||||
+obj-$(CONFIG_OF) += usb/
|
||||
obj-$(CONFIG_SERIO) += input/serio/
|
||||
obj-$(CONFIG_GAMEPORT) += input/gameport/
|
||||
obj-$(CONFIG_INPUT) += input/
|
||||
@@ -1,25 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Mon, 6 Mar 2017 09:48:52 +0100
|
||||
Subject: [PATCH] ubifs: fix RENAME_WHITEOUT support
|
||||
|
||||
Remove faulty leftover check in do_rename(), apparently introduced in a
|
||||
merge that combined whiteout support changes with commit f03b8ad8d386
|
||||
("fs: support RENAME_NOREPLACE for local filesystems")
|
||||
|
||||
Fixes: 9e0a1fff8db5 ("ubifs: Implement RENAME_WHITEOUT")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/fs/ubifs/dir.c
|
||||
+++ b/fs/ubifs/dir.c
|
||||
@@ -1088,9 +1088,6 @@ static int do_rename(struct inode *old_d
|
||||
struct timespec time;
|
||||
unsigned int uninitialized_var(saved_nlink);
|
||||
|
||||
- if (flags & ~RENAME_NOREPLACE)
|
||||
- return -EINVAL;
|
||||
-
|
||||
/*
|
||||
* Budget request settings: deletion direntry, new direntry, removing
|
||||
* the old inode, and changing old and new parent directory inodes.
|
||||
@@ -1,70 +0,0 @@
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Mon, 19 Dec 2016 14:20:56 +0000
|
||||
Subject: [PATCH] MIPS: Introduce irq_stack
|
||||
|
||||
Allocate a per-cpu irq stack for use within interrupt handlers.
|
||||
|
||||
Also add a utility function on_irq_stack to determine if a given stack
|
||||
pointer is within the irq stack for that cpu.
|
||||
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
---
|
||||
|
||||
--- a/arch/mips/include/asm/irq.h
|
||||
+++ b/arch/mips/include/asm/irq.h
|
||||
@@ -17,6 +17,18 @@
|
||||
|
||||
#include <irq.h>
|
||||
|
||||
+#define IRQ_STACK_SIZE THREAD_SIZE
|
||||
+
|
||||
+extern void *irq_stack[NR_CPUS];
|
||||
+
|
||||
+static inline bool on_irq_stack(int cpu, unsigned long sp)
|
||||
+{
|
||||
+ unsigned long low = (unsigned long)irq_stack[cpu];
|
||||
+ unsigned long high = low + IRQ_STACK_SIZE;
|
||||
+
|
||||
+ return (low <= sp && sp <= high);
|
||||
+}
|
||||
+
|
||||
#ifdef CONFIG_I8259
|
||||
static inline int irq_canonicalize(int irq)
|
||||
{
|
||||
--- a/arch/mips/kernel/asm-offsets.c
|
||||
+++ b/arch/mips/kernel/asm-offsets.c
|
||||
@@ -102,6 +102,7 @@ void output_thread_info_defines(void)
|
||||
OFFSET(TI_REGS, thread_info, regs);
|
||||
DEFINE(_THREAD_SIZE, THREAD_SIZE);
|
||||
DEFINE(_THREAD_MASK, THREAD_MASK);
|
||||
+ DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
|
||||
BLANK();
|
||||
}
|
||||
|
||||
--- a/arch/mips/kernel/irq.c
|
||||
+++ b/arch/mips/kernel/irq.c
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
+void *irq_stack[NR_CPUS];
|
||||
+
|
||||
/*
|
||||
* 'what should we do if we get a hw irq event on an illegal vector'.
|
||||
* each architecture has to answer this themselves.
|
||||
@@ -58,6 +60,15 @@ void __init init_IRQ(void)
|
||||
clear_c0_status(ST0_IM);
|
||||
|
||||
arch_init_irq();
|
||||
+
|
||||
+ for_each_possible_cpu(i) {
|
||||
+ int irq_pages = IRQ_STACK_SIZE / PAGE_SIZE;
|
||||
+ void *s = (void *)__get_free_pages(GFP_KERNEL, irq_pages);
|
||||
+
|
||||
+ irq_stack[i] = s;
|
||||
+ pr_debug("CPU%d IRQ stack at 0x%p - 0x%p\n", i,
|
||||
+ irq_stack[i], irq_stack[i] + IRQ_STACK_SIZE);
|
||||
+ }
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
||||
@@ -1,42 +0,0 @@
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Mon, 19 Dec 2016 14:20:57 +0000
|
||||
Subject: [PATCH] MIPS: Stack unwinding while on IRQ stack
|
||||
|
||||
Within unwind stack, check if the stack pointer being unwound is within
|
||||
the CPU's irq_stack and if so use that page rather than the task's stack
|
||||
page.
|
||||
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
---
|
||||
|
||||
--- a/arch/mips/kernel/process.c
|
||||
+++ b/arch/mips/kernel/process.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <asm/dsemul.h>
|
||||
#include <asm/dsp.h>
|
||||
#include <asm/fpu.h>
|
||||
+#include <asm/irq.h>
|
||||
#include <asm/msa.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/mipsregs.h>
|
||||
@@ -556,7 +557,19 @@ EXPORT_SYMBOL(unwind_stack_by_address);
|
||||
unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
|
||||
unsigned long pc, unsigned long *ra)
|
||||
{
|
||||
- unsigned long stack_page = (unsigned long)task_stack_page(task);
|
||||
+ unsigned long stack_page = 0;
|
||||
+ int cpu;
|
||||
+
|
||||
+ for_each_possible_cpu(cpu) {
|
||||
+ if (on_irq_stack(cpu, *sp)) {
|
||||
+ stack_page = (unsigned long)irq_stack[cpu];
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!stack_page)
|
||||
+ stack_page = (unsigned long)task_stack_page(task);
|
||||
+
|
||||
return unwind_stack_by_address(stack_page, sp, pc, ra);
|
||||
}
|
||||
#endif
|
||||
@@ -1,48 +0,0 @@
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Mon, 19 Dec 2016 14:20:58 +0000
|
||||
Subject: [PATCH] MIPS: Only change $28 to thread_info if coming from user
|
||||
mode
|
||||
|
||||
The SAVE_SOME macro is used to save the execution context on all
|
||||
exceptions.
|
||||
If an exception occurs while executing user code, the stack is switched
|
||||
to the kernel's stack for the current task, and register $28 is switched
|
||||
to point to the current_thread_info, which is at the bottom of the stack
|
||||
region.
|
||||
If the exception occurs while executing kernel code, the stack is left,
|
||||
and this change ensures that register $28 is not updated. This is the
|
||||
correct behaviour when the kernel can be executing on the separate irq
|
||||
stack, because the thread_info will not be at the base of it.
|
||||
|
||||
With this change, register $28 is only switched to it's kernel
|
||||
conventional usage of the currrent thread info pointer at the point at
|
||||
which execution enters kernel space. Doing it on every exception was
|
||||
redundant, but OK without an IRQ stack, but will be erroneous once that
|
||||
is introduced.
|
||||
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Reviewed-by: Maciej W. Rozycki <macro@imgtec.com>
|
||||
---
|
||||
|
||||
--- a/arch/mips/include/asm/stackframe.h
|
||||
+++ b/arch/mips/include/asm/stackframe.h
|
||||
@@ -216,12 +216,19 @@
|
||||
LONG_S $25, PT_R25(sp)
|
||||
LONG_S $28, PT_R28(sp)
|
||||
LONG_S $31, PT_R31(sp)
|
||||
+
|
||||
+ /* Set thread_info if we're coming from user mode */
|
||||
+ mfc0 k0, CP0_STATUS
|
||||
+ sll k0, 3 /* extract cu0 bit */
|
||||
+ bltz k0, 9f
|
||||
+
|
||||
ori $28, sp, _THREAD_MASK
|
||||
xori $28, _THREAD_MASK
|
||||
#ifdef CONFIG_CPU_CAVIUM_OCTEON
|
||||
.set mips64
|
||||
pref 0, 0($28) /* Prefetch the current pointer */
|
||||
#endif
|
||||
+9:
|
||||
.set pop
|
||||
.endm
|
||||
|
||||
@@ -1,116 +0,0 @@
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Mon, 19 Dec 2016 14:20:59 +0000
|
||||
Subject: [PATCH] MIPS: Switch to the irq_stack in interrupts
|
||||
|
||||
When enterring interrupt context via handle_int or except_vec_vi, switch
|
||||
to the irq_stack of the current CPU if it is not already in use.
|
||||
|
||||
The current stack pointer is masked with the thread size and compared to
|
||||
the base or the irq stack. If it does not match then the stack pointer
|
||||
is set to the top of that stack, otherwise this is a nested irq being
|
||||
handled on the irq stack so the stack pointer should be left as it was.
|
||||
|
||||
The in-use stack pointer is placed in the callee saved register s1. It
|
||||
will be saved to the stack when plat_irq_dispatch is invoked and can be
|
||||
restored once control returns here.
|
||||
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
---
|
||||
|
||||
--- a/arch/mips/kernel/genex.S
|
||||
+++ b/arch/mips/kernel/genex.S
|
||||
@@ -187,9 +187,44 @@ NESTED(handle_int, PT_SIZE, sp)
|
||||
|
||||
LONG_L s0, TI_REGS($28)
|
||||
LONG_S sp, TI_REGS($28)
|
||||
- PTR_LA ra, ret_from_irq
|
||||
- PTR_LA v0, plat_irq_dispatch
|
||||
- jr v0
|
||||
+
|
||||
+ /*
|
||||
+ * SAVE_ALL ensures we are using a valid kernel stack for the thread.
|
||||
+ * Check if we are already using the IRQ stack.
|
||||
+ */
|
||||
+ move s1, sp # Preserve the sp
|
||||
+
|
||||
+ /* Get IRQ stack for this CPU */
|
||||
+ ASM_CPUID_MFC0 k0, ASM_SMP_CPUID_REG
|
||||
+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
|
||||
+ lui k1, %hi(irq_stack)
|
||||
+#else
|
||||
+ lui k1, %highest(irq_stack)
|
||||
+ daddiu k1, %higher(irq_stack)
|
||||
+ dsll k1, 16
|
||||
+ daddiu k1, %hi(irq_stack)
|
||||
+ dsll k1, 16
|
||||
+#endif
|
||||
+ LONG_SRL k0, SMP_CPUID_PTRSHIFT
|
||||
+ LONG_ADDU k1, k0
|
||||
+ LONG_L t0, %lo(irq_stack)(k1)
|
||||
+
|
||||
+ # Check if already on IRQ stack
|
||||
+ PTR_LI t1, ~(_THREAD_SIZE-1)
|
||||
+ and t1, t1, sp
|
||||
+ beq t0, t1, 2f
|
||||
+
|
||||
+ /* Switch to IRQ stack */
|
||||
+ li t1, _IRQ_STACK_SIZE
|
||||
+ PTR_ADD sp, t0, t1
|
||||
+
|
||||
+2:
|
||||
+ jal plat_irq_dispatch
|
||||
+
|
||||
+ /* Restore sp */
|
||||
+ move sp, s1
|
||||
+
|
||||
+ j ret_from_irq
|
||||
#ifdef CONFIG_CPU_MICROMIPS
|
||||
nop
|
||||
#endif
|
||||
@@ -262,8 +297,44 @@ NESTED(except_vec_vi_handler, 0, sp)
|
||||
|
||||
LONG_L s0, TI_REGS($28)
|
||||
LONG_S sp, TI_REGS($28)
|
||||
- PTR_LA ra, ret_from_irq
|
||||
- jr v0
|
||||
+
|
||||
+ /*
|
||||
+ * SAVE_ALL ensures we are using a valid kernel stack for the thread.
|
||||
+ * Check if we are already using the IRQ stack.
|
||||
+ */
|
||||
+ move s1, sp # Preserve the sp
|
||||
+
|
||||
+ /* Get IRQ stack for this CPU */
|
||||
+ ASM_CPUID_MFC0 k0, ASM_SMP_CPUID_REG
|
||||
+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
|
||||
+ lui k1, %hi(irq_stack)
|
||||
+#else
|
||||
+ lui k1, %highest(irq_stack)
|
||||
+ daddiu k1, %higher(irq_stack)
|
||||
+ dsll k1, 16
|
||||
+ daddiu k1, %hi(irq_stack)
|
||||
+ dsll k1, 16
|
||||
+#endif
|
||||
+ LONG_SRL k0, SMP_CPUID_PTRSHIFT
|
||||
+ LONG_ADDU k1, k0
|
||||
+ LONG_L t0, %lo(irq_stack)(k1)
|
||||
+
|
||||
+ # Check if already on IRQ stack
|
||||
+ PTR_LI t1, ~(_THREAD_SIZE-1)
|
||||
+ and t1, t1, sp
|
||||
+ beq t0, t1, 2f
|
||||
+
|
||||
+ /* Switch to IRQ stack */
|
||||
+ li t1, _IRQ_STACK_SIZE
|
||||
+ PTR_ADD sp, t0, t1
|
||||
+
|
||||
+2:
|
||||
+ jal plat_irq_dispatch
|
||||
+
|
||||
+ /* Restore sp */
|
||||
+ move sp, s1
|
||||
+
|
||||
+ j ret_from_irq
|
||||
END(except_vec_vi_handler)
|
||||
|
||||
/*
|
||||
@@ -1,21 +0,0 @@
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Mon, 19 Dec 2016 14:21:00 +0000
|
||||
Subject: [PATCH] MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
|
||||
|
||||
Since do_IRQ is now invoked on a separate IRQ stack, we select
|
||||
HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirq's may be invoked directly
|
||||
from irq_exit(), rather than requiring do_softirq_own_stack.
|
||||
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
---
|
||||
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -9,6 +9,7 @@ config MIPS
|
||||
select HAVE_CONTEXT_TRACKING
|
||||
select HAVE_GENERIC_DMA_COHERENT
|
||||
select HAVE_IDE
|
||||
+ select HAVE_IRQ_EXIT_ON_IRQ_STACK
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_PERF_EVENTS
|
||||
select PERF_USE_VMALLOC
|
||||
@@ -1,35 +0,0 @@
|
||||
From de856416e7143e32afc4849625616554aa060f7a Mon Sep 17 00:00:00 2001
|
||||
From: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Date: Wed, 25 Jan 2017 17:00:25 +0000
|
||||
Subject: [PATCH] MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
|
||||
|
||||
Commit dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
|
||||
changed both the normal and vectored interrupt handlers. Unfortunately
|
||||
the vectored version, "except_vec_vi_handler", was incorrectly modified
|
||||
to unconditionally jal to plat_irq_dispatch, rather than doing a jalr to
|
||||
the vectored handler that has been set up. This is ok for many platforms
|
||||
which set the vectored handler to plat_irq_dispatch anyway, but will
|
||||
cause problems with platforms that use other handlers.
|
||||
|
||||
Fixes: dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
|
||||
Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
|
||||
Cc: Ralf Baechle <ralf@linux-mips.org>
|
||||
Cc: Paul Burton <paul.burton@imgtec.com>
|
||||
Cc: linux-mips@linux-mips.org
|
||||
Patchwork: https://patchwork.linux-mips.org/patch/15110/
|
||||
Signed-off-by: James Hogan <james.hogan@imgtec.com>
|
||||
---
|
||||
arch/mips/kernel/genex.S | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/mips/kernel/genex.S
|
||||
+++ b/arch/mips/kernel/genex.S
|
||||
@@ -329,7 +329,7 @@ NESTED(except_vec_vi_handler, 0, sp)
|
||||
PTR_ADD sp, t0, t1
|
||||
|
||||
2:
|
||||
- jal plat_irq_dispatch
|
||||
+ jalr v0
|
||||
|
||||
/* Restore sp */
|
||||
move sp, s1
|
||||
@@ -1,40 +0,0 @@
|
||||
From bd5d21310133921021d78995ad6346f908483124 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Sun, 20 Nov 2016 16:09:30 +0100
|
||||
Subject: [PATCH] mtd: bcm47xxpart: fix parsing first block after aligned TRX
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
After parsing TRX we should skip to the first block placed behind it.
|
||||
Our code was working only with TRX with length not aligned to the
|
||||
blocksize. In other cases (length aligned) it was missing the block
|
||||
places right after TRX.
|
||||
|
||||
This fixes calculation and simplifies the comment.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
|
||||
---
|
||||
drivers/mtd/bcm47xxpart.c | 10 ++++------
|
||||
1 file changed, 4 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/bcm47xxpart.c
|
||||
+++ b/drivers/mtd/bcm47xxpart.c
|
||||
@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
|
||||
last_trx_part = curr_part - 1;
|
||||
|
||||
- /*
|
||||
- * We have whole TRX scanned, skip to the next part. Use
|
||||
- * roundown (not roundup), as the loop will increase
|
||||
- * offset in next step.
|
||||
- */
|
||||
- offset = rounddown(offset + trx->length, blocksize);
|
||||
+ /* Jump to the end of TRX */
|
||||
+ offset = roundup(offset + trx->length, blocksize);
|
||||
+ /* Next loop iteration will increase the offset */
|
||||
+ offset -= blocksize;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
|
||||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -5893,7 +5893,7 @@ static void __ref alloc_node_mem_map(str
|
||||
@@ -5894,7 +5894,7 @@ static void __ref alloc_node_mem_map(str
|
||||
mem_map = NODE_DATA(0)->node_mem_map;
|
||||
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
|
||||
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
|
||||
|
||||
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3813,6 +3816,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3815,6 +3818,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3865,6 +3878,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3867,6 +3880,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
||||
@@ -302,7 +302,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
/**
|
||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||
* @t: the outgoing tunnel device
|
||||
@@ -1281,6 +1421,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1283,6 +1423,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
{
|
||||
struct ip6_tnl *t = netdev_priv(dev);
|
||||
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
|
||||
@@ -310,7 +310,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
int encap_limit = -1;
|
||||
__u16 offset;
|
||||
struct flowi6 fl6;
|
||||
@@ -1336,6 +1477,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1338,6 +1479,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
fl6.flowi6_mark = skb->mark;
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||
return -1;
|
||||
|
||||
@@ -1461,6 +1614,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1463,6 +1616,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.flowinfo = p->flowinfo;
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
@@ -344,7 +344,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
dst_cache_reset(&t->dst_cache);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1499,6 +1660,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1501,6 +1662,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
@@ -352,7 +352,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1876,6 +2038,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1878,6 +2040,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -368,7 +368,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1910,6 +2081,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1912,6 +2083,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_COLLECT_METADATA])
|
||||
parms->collect_md = true;
|
||||
@@ -415,7 +415,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2019,6 +2230,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2021,6 +2232,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@@ -428,7 +428,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2046,6 +2263,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2048,6 +2265,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(2) +
|
||||
/* IFLA_IPTUN_COLLECT_METADATA */
|
||||
nla_total_size(0) +
|
||||
@@ -453,7 +453,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -2053,6 +2288,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2055,6 +2290,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@@ -463,7 +463,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2061,9 +2299,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2063,9 +2301,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
@@ -492,7 +492,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2101,6 +2357,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2103,6 +2359,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
|
||||
@@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||
.dst = {
|
||||
.__refcnt = ATOMIC_INIT(1),
|
||||
@@ -1953,6 +1970,11 @@ static struct rt6_info *ip6_route_info_c
|
||||
@@ -1957,6 +1974,11 @@ static struct rt6_info *ip6_route_info_c
|
||||
rt->dst.output = ip6_pkt_prohibit_out;
|
||||
rt->dst.input = ip6_pkt_prohibit;
|
||||
break;
|
||||
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -2594,6 +2616,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -2600,6 +2622,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -2829,7 +2862,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -2835,7 +2868,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -3207,6 +3241,9 @@ static int rt6_fill_node(struct net *net
|
||||
@@ -3213,6 +3247,9 @@ static int rt6_fill_node(struct net *net
|
||||
case -EACCES:
|
||||
rtm->rtm_type = RTN_PROHIBIT;
|
||||
break;
|
||||
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case -EAGAIN:
|
||||
rtm->rtm_type = RTN_THROW;
|
||||
break;
|
||||
@@ -3480,6 +3517,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -3489,6 +3526,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -3696,6 +3735,17 @@ static int __net_init ip6_route_net_init
|
||||
@@ -3711,6 +3750,17 @@ static int __net_init ip6_route_net_init
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
#endif
|
||||
|
||||
net->ipv6.sysctl.flush_delay = 0;
|
||||
@@ -3714,6 +3764,8 @@ out:
|
||||
@@ -3729,6 +3779,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -3731,6 +3783,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -3746,6 +3798,7 @@ static void __net_exit ip6_route_net_exi
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
@@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
}
|
||||
@@ -3828,6 +3881,9 @@ int __init ip6_route_init(void)
|
||||
@@ -3819,6 +3872,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
@@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
+ init_net.ipv6.ip6_policy_failed_entry->rt6i_idev =
|
||||
+ in6_dev_get(init_net.loopback_dev);
|
||||
#endif
|
||||
ret = fib6_init();
|
||||
if (ret)
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
* @phydev: the phy_device struct
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -812,6 +812,7 @@ int phy_ethtool_ksettings_get(struct phy
|
||||
@@ -813,6 +813,7 @@ int phy_ethtool_ksettings_get(struct phy
|
||||
struct ethtool_link_ksettings *cmd);
|
||||
int phy_ethtool_ksettings_set(struct phy_device *phydev,
|
||||
const struct ethtool_link_ksettings *cmd);
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
phy_device_free(phydev);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -855,6 +855,23 @@ void mdio_bus_exit(void);
|
||||
@@ -856,6 +856,23 @@ void mdio_bus_exit(void);
|
||||
|
||||
extern struct bus_type mdio_bus_type;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
/* The Mellanox Tavor device gives false positive parity errors
|
||||
* Mark this device with a broken_parity_status, to allow
|
||||
* PCI scanning code to "skip" this now blacklisted device.
|
||||
@@ -3016,6 +3017,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||
@@ -3038,6 +3039,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/*
|
||||
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To
|
||||
@@ -3072,6 +3074,8 @@ static void fixup_debug_report(struct pc
|
||||
@@ -3094,6 +3096,8 @@ static void fixup_debug_report(struct pc
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
/*
|
||||
* Some BIOS implementations leave the Intel GPU interrupts enabled,
|
||||
* even though no one is handling them (f.e. i915 driver is never loaded).
|
||||
@@ -3106,6 +3110,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||
@@ -3128,6 +3132,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
#include <uapi/linux/dma-buf.h>
|
||||
|
||||
@@ -974,4 +975,5 @@ static void __exit dma_buf_deinit(void)
|
||||
@@ -977,4 +978,5 @@ static void __exit dma_buf_deinit(void)
|
||||
{
|
||||
dma_buf_uninit_debugfs();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user