mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 05:38:00 +00:00
kernel: bump 6.6 to 6.6.33 and adjust subarches
This commit accomplishes three goals: 1. bump 6.6 to 6.6.33 2. kernel: modules: video: change package definition for fb for upstream changes[1] 3. kernel/multiple subtargets: add CONFIG_FB_IOMEM_FOPS=y to all subtargets which also set CONFIG_FB_CORE=y. Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.33 Removed upstreamed: pending-6.6/195-block-fix-and-simplify-blkdevparts-cmdline-parsing.patch[2] gemini/patches-6.6/0003-net-ethernet-cortina-Locking-fixes.patch[3] Manually rebased: ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=c00e8fd749502c02085534c60b1edca4fc479c91 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.33&id=99bbbd9aea059f8a206736dc601be2ae61d366fb 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.33&id=8f6f82d6a205ceb3aba8d279f9ff6eeea0b1689b Build system: x86/64 Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3 Tested-by: Stijn Segers <foss@volatilesystems.org> Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
fc9cb9b609
commit
f34620f146
@ -1,2 +1,2 @@
|
|||||||
LINUX_VERSION-6.6 = .32
|
LINUX_VERSION-6.6 = .33
|
||||||
LINUX_KERNEL_HASH-6.6.32 = aaa824eaf07f61911d22b75ff090a403c3dd0bd73e23933e0bba8b5971436ce1
|
LINUX_KERNEL_HASH-6.6.33 = a13ebc20dc2a75722699949af74aa86a4ce5d544d6daaa6a7de4e8c81b40de97
|
||||||
|
@ -106,7 +106,8 @@ define KernelPackage/fb
|
|||||||
CONFIG_VT_CONSOLE=y \
|
CONFIG_VT_CONSOLE=y \
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||||
FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko \
|
FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko \
|
||||||
$(LINUX_DIR)/lib/fonts/font.ko
|
$(LINUX_DIR)/lib/fonts/font.ko \
|
||||||
|
$(LINUX_DIR)/drivers/video/fbdev/core/fb_io_fops.ko@ge6.6
|
||||||
AUTOLOAD:=$(call AutoLoad,06,fb font)
|
AUTOLOAD:=$(call AutoLoad,06,fb font)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ SVN-Revision: 35130
|
|||||||
#endif /* _LINUX_TYPES_H */
|
#endif /* _LINUX_TYPES_H */
|
||||||
--- a/net/ipv4/af_inet.c
|
--- a/net/ipv4/af_inet.c
|
||||||
+++ b/net/ipv4/af_inet.c
|
+++ b/net/ipv4/af_inet.c
|
||||||
@@ -1506,8 +1506,8 @@ struct sk_buff *inet_gro_receive(struct
|
@@ -1508,8 +1508,8 @@ struct sk_buff *inet_gro_receive(struct
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
NAPI_GRO_CB(skb)->proto = proto;
|
NAPI_GRO_CB(skb)->proto = proto;
|
||||||
|
@ -162,6 +162,7 @@ CONFIG_FB=y
|
|||||||
CONFIG_FB_CORE=y
|
CONFIG_FB_CORE=y
|
||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
CONFIG_FB_DMAMEM_HELPERS=y
|
CONFIG_FB_DMAMEM_HELPERS=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
||||||
CONFIG_FB_SYS_COPYAREA=y
|
CONFIG_FB_SYS_COPYAREA=y
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* struct gmac_queue_page - page buffer per-page info
|
* struct gmac_queue_page - page buffer per-page info
|
||||||
@@ -1143,23 +1142,13 @@ static int gmac_map_tx_bufs(struct net_d
|
@@ -1148,23 +1147,13 @@ static int gmac_map_tx_bufs(struct net_d
|
||||||
struct gmac_txdesc *txd;
|
struct gmac_txdesc *txd;
|
||||||
skb_frag_t *skb_frag;
|
skb_frag_t *skb_frag;
|
||||||
dma_addr_t mapping;
|
dma_addr_t mapping;
|
||||||
|
@ -1,73 +0,0 @@
|
|||||||
From 81889eb2b37bc21df4ff259441e8fc12d4f27cd9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Linus Walleij <linus.walleij@linaro.org>
|
|
||||||
Date: Thu, 9 May 2024 08:48:31 +0200
|
|
||||||
Subject: [PATCH] net: ethernet: cortina: Locking fixes
|
|
||||||
|
|
||||||
This fixes a probably long standing problem in the Cortina
|
|
||||||
Gemini ethernet driver: there are some paths in the code
|
|
||||||
where the IRQ registers are written without taking the proper
|
|
||||||
locks.
|
|
||||||
|
|
||||||
Fixes: 4d5ae32f5e1e ("net: ethernet: Add a driver for Gemini gigabit ethernet")
|
|
||||||
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
||||||
---
|
|
||||||
drivers/net/ethernet/cortina/gemini.c | 12 ++++++++++--
|
|
||||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/cortina/gemini.c
|
|
||||||
+++ b/drivers/net/ethernet/cortina/gemini.c
|
|
||||||
@@ -1107,10 +1107,13 @@ static void gmac_tx_irq_enable(struct ne
|
|
||||||
{
|
|
||||||
struct gemini_ethernet_port *port = netdev_priv(netdev);
|
|
||||||
struct gemini_ethernet *geth = port->geth;
|
|
||||||
+ unsigned long flags;
|
|
||||||
u32 val, mask;
|
|
||||||
|
|
||||||
netdev_dbg(netdev, "%s device %d\n", __func__, netdev->dev_id);
|
|
||||||
|
|
||||||
+ spin_lock_irqsave(&geth->irq_lock, flags);
|
|
||||||
+
|
|
||||||
mask = GMAC0_IRQ0_TXQ0_INTS << (6 * netdev->dev_id + txq);
|
|
||||||
|
|
||||||
if (en)
|
|
||||||
@@ -1119,6 +1122,8 @@ static void gmac_tx_irq_enable(struct ne
|
|
||||||
val = readl(geth->base + GLOBAL_INTERRUPT_ENABLE_0_REG);
|
|
||||||
val = en ? val | mask : val & ~mask;
|
|
||||||
writel(val, geth->base + GLOBAL_INTERRUPT_ENABLE_0_REG);
|
|
||||||
+
|
|
||||||
+ spin_unlock_irqrestore(&geth->irq_lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void gmac_tx_irq(struct net_device *netdev, unsigned int txq_num)
|
|
||||||
@@ -1415,15 +1420,19 @@ static unsigned int gmac_rx(struct net_d
|
|
||||||
union gmac_rxdesc_3 word3;
|
|
||||||
struct page *page = NULL;
|
|
||||||
unsigned int page_offs;
|
|
||||||
+ unsigned long flags;
|
|
||||||
unsigned short r, w;
|
|
||||||
union dma_rwptr rw;
|
|
||||||
dma_addr_t mapping;
|
|
||||||
int frag_nr = 0;
|
|
||||||
|
|
||||||
+ spin_lock_irqsave(&geth->irq_lock, flags);
|
|
||||||
rw.bits32 = readl(ptr_reg);
|
|
||||||
/* Reset interrupt as all packages until here are taken into account */
|
|
||||||
writel(DEFAULT_Q0_INT_BIT << netdev->dev_id,
|
|
||||||
geth->base + GLOBAL_INTERRUPT_STATUS_1_REG);
|
|
||||||
+ spin_unlock_irqrestore(&geth->irq_lock, flags);
|
|
||||||
+
|
|
||||||
r = rw.bits.rptr;
|
|
||||||
w = rw.bits.wptr;
|
|
||||||
|
|
||||||
@@ -1726,10 +1735,9 @@ static irqreturn_t gmac_irq(int irq, voi
|
|
||||||
gmac_update_hw_stats(netdev);
|
|
||||||
|
|
||||||
if (val & (GMAC0_RX_OVERRUN_INT_BIT << (netdev->dev_id * 8))) {
|
|
||||||
+ spin_lock(&geth->irq_lock);
|
|
||||||
writel(GMAC0_RXDERR_INT_BIT << (netdev->dev_id * 8),
|
|
||||||
geth->base + GLOBAL_INTERRUPT_STATUS_4_REG);
|
|
||||||
-
|
|
||||||
- spin_lock(&geth->irq_lock);
|
|
||||||
u64_stats_update_begin(&port->ir_stats_syncp);
|
|
||||||
++port->stats.rx_fifo_errors;
|
|
||||||
u64_stats_update_end(&port->ir_stats_syncp);
|
|
@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
#include "mtdcore.h"
|
#include "mtdcore.h"
|
||||||
|
|
||||||
@@ -1125,6 +1126,8 @@ int mtd_device_parse_register(struct mtd
|
@@ -1127,6 +1128,8 @@ int mtd_device_parse_register(struct mtd
|
||||||
register_reboot_notifier(&mtd->reboot_notifier);
|
register_reboot_notifier(&mtd->reboot_notifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
@@ -3365,6 +3365,9 @@ static int mv88e6xxx_setup_port(struct m
|
@@ -3375,6 +3375,9 @@ static int mv88e6xxx_setup_port(struct m
|
||||||
else
|
else
|
||||||
reg = 1 << port;
|
reg = 1 << port;
|
||||||
|
|
||||||
|
@ -1,217 +0,0 @@
|
|||||||
From patchwork Sun Apr 21 07:39:52 2024
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
X-Patchwork-Submitter: INAGAKI Hiroshi <musashino.open@gmail.com>
|
|
||||||
X-Patchwork-Id: 13637306
|
|
||||||
From: INAGAKI Hiroshi <musashino.open@gmail.com>
|
|
||||||
To: axboe@kernel.dk
|
|
||||||
Cc: yang.yang29@zte.com,
|
|
||||||
justinstitt@google.com,
|
|
||||||
xu.panda@zte.com.cn,
|
|
||||||
linux-block@vger.kernel.org,
|
|
||||||
linux-kernel@vger.kernel.org,
|
|
||||||
INAGAKI Hiroshi <musashino.open@gmail.com>,
|
|
||||||
Naohiro Aota <naota@elisp.net>
|
|
||||||
Subject: [PATCH] block: fix and simplify blkdevparts= cmdline parsing
|
|
||||||
Date: Sun, 21 Apr 2024 16:39:52 +0900
|
|
||||||
Message-ID: <20240421074005.565-1-musashino.open@gmail.com>
|
|
||||||
X-Mailer: git-send-email 2.42.0.windows.2
|
|
||||||
Precedence: bulk
|
|
||||||
X-Mailing-List: linux-block@vger.kernel.org
|
|
||||||
List-Id: <linux-block.vger.kernel.org>
|
|
||||||
List-Subscribe: <mailto:linux-block+subscribe@vger.kernel.org>
|
|
||||||
List-Unsubscribe: <mailto:linux-block+unsubscribe@vger.kernel.org>
|
|
||||||
MIME-Version: 1.0
|
|
||||||
|
|
||||||
Fix the cmdline parsing of the "blkdevparts=" parameter using strsep(),
|
|
||||||
which makes the code simpler.
|
|
||||||
|
|
||||||
Before commit 146afeb235cc ("block: use strscpy() to instead of
|
|
||||||
strncpy()"), we used a strncpy() to copy a block device name and partition
|
|
||||||
names. The commit simply replaced a strncpy() and NULL termination with
|
|
||||||
a strscpy(). It did not update calculations of length passed to strscpy().
|
|
||||||
While the length passed to strncpy() is just a length of valid characters
|
|
||||||
without NULL termination ('\0'), strscpy() takes it as a length of the
|
|
||||||
destination buffer, including a NULL termination.
|
|
||||||
|
|
||||||
Since the source buffer is not necessarily NULL terminated, the current
|
|
||||||
code copies "length - 1" characters and puts a NULL character in the
|
|
||||||
destination buffer. It replaces the last character with NULL and breaks
|
|
||||||
the parsing.
|
|
||||||
|
|
||||||
As an example, that buffer will be passed to parse_parts() and breaks
|
|
||||||
parsing sub-partitions due to the missing ')' at the end, like the
|
|
||||||
following.
|
|
||||||
|
|
||||||
example (Check Point V-80 & OpenWrt):
|
|
||||||
|
|
||||||
- Linux Kernel 6.6
|
|
||||||
|
|
||||||
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
|
|
||||||
...
|
|
||||||
[ 0.884016] mmc1: new HS200 MMC card at address 0001
|
|
||||||
[ 0.889951] mmcblk1: mmc1:0001 004GA0 3.69 GiB
|
|
||||||
[ 0.895043] cmdline partition format is invalid.
|
|
||||||
[ 0.895704] mmcblk1: p1
|
|
||||||
[ 0.903447] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB
|
|
||||||
[ 0.908667] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB
|
|
||||||
[ 0.913765] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0)
|
|
||||||
|
|
||||||
1. "48M@10M(kernel-1),..." is passed to strscpy() with length=17
|
|
||||||
from parse_parts()
|
|
||||||
2. strscpy() returns -E2BIG and the destination buffer has
|
|
||||||
"48M@10M(kernel-1\0"
|
|
||||||
3. "48M@10M(kernel-1\0" is passed to parse_subpart()
|
|
||||||
4. parse_subpart() fails to find ')' when parsing a partition name,
|
|
||||||
and returns error
|
|
||||||
|
|
||||||
- Linux Kernel 6.1
|
|
||||||
|
|
||||||
[ 0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
|
|
||||||
...
|
|
||||||
[ 0.953142] mmc1: new HS200 MMC card at address 0001
|
|
||||||
[ 0.959114] mmcblk1: mmc1:0001 004GA0 3.69 GiB
|
|
||||||
[ 0.964259] mmcblk1: p1(kernel-1) p2(dtb-1) p3(rootfs-1) p4(kernel-2) p5(dtb-2) 6(rootfs-2) p7(default_sw) p8(logs) p9(preset_cfg) p10(adsl) p11(storage)
|
|
||||||
[ 0.979174] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB
|
|
||||||
[ 0.984674] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB
|
|
||||||
[ 0.989926] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0
|
|
||||||
|
|
||||||
By the way, strscpy() takes a length of destination buffer and it is
|
|
||||||
often confusing when copying characters with a specified length. Using
|
|
||||||
strsep() helps to separate the string by the specified character. Then,
|
|
||||||
we can use strscpy() naturally with the size of the destination buffer.
|
|
||||||
|
|
||||||
Separating the string on the fly is also useful to omit the redundant
|
|
||||||
string copy, reducing memory usage and improve the code readability.
|
|
||||||
|
|
||||||
Fixes: 146afeb235cc ("block: use strscpy() to instead of strncpy()")
|
|
||||||
Suggested-by: Naohiro Aota <naota@elisp.net>
|
|
||||||
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
|
|
||||||
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
|
|
||||||
---
|
|
||||||
block/partitions/cmdline.c | 49 ++++++++++----------------------------
|
|
||||||
1 file changed, 12 insertions(+), 37 deletions(-)
|
|
||||||
|
|
||||||
--- a/block/partitions/cmdline.c
|
|
||||||
+++ b/block/partitions/cmdline.c
|
|
||||||
@@ -70,8 +70,8 @@ static int parse_subpart(struct cmdline_
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*partdef == '(') {
|
|
||||||
- int length;
|
|
||||||
- char *next = strchr(++partdef, ')');
|
|
||||||
+ partdef++;
|
|
||||||
+ char *next = strsep(&partdef, ")");
|
|
||||||
|
|
||||||
if (!next) {
|
|
||||||
pr_warn("cmdline partition format is invalid.");
|
|
||||||
@@ -79,11 +79,7 @@ static int parse_subpart(struct cmdline_
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
- length = min_t(int, next - partdef,
|
|
||||||
- sizeof(new_subpart->name) - 1);
|
|
||||||
- strscpy(new_subpart->name, partdef, length);
|
|
||||||
-
|
|
||||||
- partdef = ++next;
|
|
||||||
+ strscpy(new_subpart->name, next, sizeof(new_subpart->name));
|
|
||||||
} else
|
|
||||||
new_subpart->name[0] = '\0';
|
|
||||||
|
|
||||||
@@ -117,14 +113,12 @@ static void free_subpart(struct cmdline_
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int parse_parts(struct cmdline_parts **parts, const char *bdevdef)
|
|
||||||
+static int parse_parts(struct cmdline_parts **parts, char *bdevdef)
|
|
||||||
{
|
|
||||||
int ret = -EINVAL;
|
|
||||||
char *next;
|
|
||||||
- int length;
|
|
||||||
struct cmdline_subpart **next_subpart;
|
|
||||||
struct cmdline_parts *newparts;
|
|
||||||
- char buf[BDEVNAME_SIZE + 32 + 4];
|
|
||||||
|
|
||||||
*parts = NULL;
|
|
||||||
|
|
||||||
@@ -132,28 +126,19 @@ static int parse_parts(struct cmdline_pa
|
|
||||||
if (!newparts)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
- next = strchr(bdevdef, ':');
|
|
||||||
+ next = strsep(&bdevdef, ":");
|
|
||||||
if (!next) {
|
|
||||||
pr_warn("cmdline partition has no block device.");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
- length = min_t(int, next - bdevdef, sizeof(newparts->name) - 1);
|
|
||||||
- strscpy(newparts->name, bdevdef, length);
|
|
||||||
+ strscpy(newparts->name, next, sizeof(newparts->name));
|
|
||||||
newparts->nr_subparts = 0;
|
|
||||||
|
|
||||||
next_subpart = &newparts->subpart;
|
|
||||||
|
|
||||||
- while (next && *(++next)) {
|
|
||||||
- bdevdef = next;
|
|
||||||
- next = strchr(bdevdef, ',');
|
|
||||||
-
|
|
||||||
- length = (!next) ? (sizeof(buf) - 1) :
|
|
||||||
- min_t(int, next - bdevdef, sizeof(buf) - 1);
|
|
||||||
-
|
|
||||||
- strscpy(buf, bdevdef, length);
|
|
||||||
-
|
|
||||||
- ret = parse_subpart(next_subpart, buf);
|
|
||||||
+ while ((next = strsep(&bdevdef, ","))) {
|
|
||||||
+ ret = parse_subpart(next_subpart, next);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
@@ -199,24 +184,17 @@ static int cmdline_parts_parse(struct cm
|
|
||||||
|
|
||||||
*parts = NULL;
|
|
||||||
|
|
||||||
- next = pbuf = buf = kstrdup(cmdline, GFP_KERNEL);
|
|
||||||
+ pbuf = buf = kstrdup(cmdline, GFP_KERNEL);
|
|
||||||
if (!buf)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
next_parts = parts;
|
|
||||||
|
|
||||||
- while (next && *pbuf) {
|
|
||||||
- next = strchr(pbuf, ';');
|
|
||||||
- if (next)
|
|
||||||
- *next = '\0';
|
|
||||||
-
|
|
||||||
- ret = parse_parts(next_parts, pbuf);
|
|
||||||
+ while ((next = strsep(&pbuf, ";"))) {
|
|
||||||
+ ret = parse_parts(next_parts, next);
|
|
||||||
if (ret)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
- if (next)
|
|
||||||
- pbuf = ++next;
|
|
||||||
-
|
|
||||||
next_parts = &(*next_parts)->next_parts;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -250,7 +228,6 @@ static struct cmdline_parts *bdev_parts;
|
|
||||||
static int add_part(int slot, struct cmdline_subpart *subpart,
|
|
||||||
struct parsed_partitions *state)
|
|
||||||
{
|
|
||||||
- int label_min;
|
|
||||||
struct partition_meta_info *info;
|
|
||||||
char tmp[sizeof(info->volname) + 4];
|
|
||||||
|
|
||||||
@@ -262,9 +239,7 @@ static int add_part(int slot, struct cmd
|
|
||||||
|
|
||||||
info = &state->parts[slot].info;
|
|
||||||
|
|
||||||
- label_min = min_t(int, sizeof(info->volname) - 1,
|
|
||||||
- sizeof(subpart->name));
|
|
||||||
- strscpy(info->volname, subpart->name, label_min);
|
|
||||||
+ strscpy(info->volname, subpart->name, sizeof(info->volname));
|
|
||||||
|
|
||||||
snprintf(tmp, sizeof(tmp), "(%s)", info->volname);
|
|
||||||
strlcat(state->pp_buf, tmp, PAGE_SIZE);
|
|
@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -22006,6 +22006,12 @@ F: Documentation/filesystems/ubifs-authe
|
@@ -22014,6 +22014,12 @@ F: Documentation/filesystems/ubifs-authe
|
||||||
F: Documentation/filesystems/ubifs.rst
|
F: Documentation/filesystems/ubifs.rst
|
||||||
F: fs/ubifs/
|
F: fs/ubifs/
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -3386,6 +3388,7 @@ static int packet_create(struct net *net
|
@@ -3385,6 +3387,7 @@ static int packet_create(struct net *net
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->rollover = NULL;
|
po->rollover = NULL;
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@@ -4035,6 +4038,16 @@ packet_setsockopt(struct socket *sock, i
|
@@ -4034,6 +4037,16 @@ packet_setsockopt(struct socket *sock, i
|
||||||
packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
|
packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
@@ -4094,6 +4107,13 @@ static int packet_getsockopt(struct sock
|
@@ -4093,6 +4106,13 @@ static int packet_getsockopt(struct sock
|
||||||
case PACKET_VNET_HDR_SZ:
|
case PACKET_VNET_HDR_SZ:
|
||||||
val = READ_ONCE(po->vnet_hdr_sz);
|
val = READ_ONCE(po->vnet_hdr_sz);
|
||||||
break;
|
break;
|
||||||
|
@ -31,7 +31,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
static inline void gro_normal_list(struct napi_struct *napi)
|
static inline void gro_normal_list(struct napi_struct *napi)
|
||||||
--- a/include/net/tcp.h
|
--- a/include/net/tcp.h
|
||||||
+++ b/include/net/tcp.h
|
+++ b/include/net/tcp.h
|
||||||
@@ -2082,7 +2082,10 @@ void tcp_v4_destroy_sock(struct sock *sk
|
@@ -2083,7 +2083,10 @@ void tcp_v4_destroy_sock(struct sock *sk
|
||||||
|
|
||||||
struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
|
struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
|
||||||
netdev_features_t features);
|
netdev_features_t features);
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -13348,7 +13348,9 @@ M: Daniel Golle <daniel@makrotopia.org>
|
@@ -13356,7 +13356,9 @@ M: Daniel Golle <daniel@makrotopia.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/pcs/pcs-mtk-lynxi.c
|
F: drivers/net/pcs/pcs-mtk-lynxi.c
|
||||||
|
@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
|
void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
|
||||||
int (*poll)(struct napi_struct *, int), int weight)
|
int (*poll)(struct napi_struct *, int), int weight)
|
||||||
{
|
{
|
||||||
@@ -11306,6 +11377,9 @@ static int dev_cpu_dead(unsigned int old
|
@@ -11307,6 +11378,9 @@ static int dev_cpu_dead(unsigned int old
|
||||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#ifdef CONFIG_RPS
|
#ifdef CONFIG_RPS
|
||||||
remsd = oldsd->rps_ipi_list;
|
remsd = oldsd->rps_ipi_list;
|
||||||
oldsd->rps_ipi_list = NULL;
|
oldsd->rps_ipi_list = NULL;
|
||||||
@@ -11621,6 +11695,7 @@ static int __init net_dev_init(void)
|
@@ -11622,6 +11696,7 @@ static int __init net_dev_init(void)
|
||||||
INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
|
INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
|
||||||
spin_lock_init(&sd->defer_lock);
|
spin_lock_init(&sd->defer_lock);
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
@@ -6947,6 +6947,7 @@ static int mv88e6xxx_register_switch(str
|
@@ -6989,6 +6989,7 @@ static int mv88e6xxx_register_switch(str
|
||||||
ds->ops = &mv88e6xxx_switch_ops;
|
ds->ops = &mv88e6xxx_switch_ops;
|
||||||
ds->ageing_time_min = chip->info->age_time_coeff;
|
ds->ageing_time_min = chip->info->age_time_coeff;
|
||||||
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
||||||
|
@ -32,7 +32,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|||||||
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -17708,6 +17708,13 @@ L: netdev@vger.kernel.org
|
@@ -17716,6 +17716,13 @@ L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/qualcomm/emac/
|
F: drivers/net/ethernet/qualcomm/emac/
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
|||||||
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -17714,6 +17714,7 @@ L: netdev@vger.kernel.org
|
@@ -17722,6 +17722,7 @@ L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/net/qcom,ipq4019-ess-edma.yaml
|
F: Documentation/devicetree/bindings/net/qcom,ipq4019-ess-edma.yaml
|
||||||
F: drivers/net/ethernet/qualcomm/ipqess/
|
F: drivers/net/ethernet/qualcomm/ipqess/
|
||||||
|
@ -283,6 +283,7 @@ CONFIG_FB_CFB_FILLRECT=y
|
|||||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||||
CONFIG_FB_CORE=y
|
CONFIG_FB_CORE=y
|
||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
||||||
|
@ -247,6 +247,7 @@ CONFIG_FB_CORE=y
|
|||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
CONFIG_FB_DEVICE=y
|
CONFIG_FB_DEVICE=y
|
||||||
CONFIG_FB_EFI=y
|
CONFIG_FB_EFI=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_IOMEM_HELPERS=y
|
CONFIG_FB_IOMEM_HELPERS=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
CONFIG_FB_SIMPLE=y
|
CONFIG_FB_SIMPLE=y
|
||||||
|
@ -217,6 +217,7 @@ CONFIG_FB=y
|
|||||||
CONFIG_FB_CORE=y
|
CONFIG_FB_CORE=y
|
||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
CONFIG_FB_DEVICE=y
|
CONFIG_FB_DEVICE=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
||||||
CONFIG_FB_SYS_COPYAREA=y
|
CONFIG_FB_SYS_COPYAREA=y
|
||||||
|
@ -19,7 +19,7 @@ Subject: [PATCH] kernel: add block fit partition parser
|
|||||||
|
|
||||||
--- a/block/blk.h
|
--- a/block/blk.h
|
||||||
+++ b/block/blk.h
|
+++ b/block/blk.h
|
||||||
@@ -423,6 +423,8 @@ void blk_free_ext_minor(unsigned int min
|
@@ -424,6 +424,8 @@ void blk_free_ext_minor(unsigned int min
|
||||||
#define ADDPART_FLAG_NONE 0
|
#define ADDPART_FLAG_NONE 0
|
||||||
#define ADDPART_FLAG_RAID 1
|
#define ADDPART_FLAG_RAID 1
|
||||||
#define ADDPART_FLAG_WHOLEDISK 2
|
#define ADDPART_FLAG_WHOLEDISK 2
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
|
|
||||||
--- a/drivers/spi/spi.c
|
--- a/drivers/spi/spi.c
|
||||||
+++ b/drivers/spi/spi.c
|
+++ b/drivers/spi/spi.c
|
||||||
@@ -1366,6 +1366,70 @@ static int spi_transfer_wait(struct spi_
|
@@ -1370,6 +1370,70 @@ static int spi_transfer_wait(struct spi_
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
static void _spi_transfer_delay_ns(u32 ns)
|
static void _spi_transfer_delay_ns(u32 ns)
|
||||||
{
|
{
|
||||||
if (!ns)
|
if (!ns)
|
||||||
@@ -2211,6 +2275,75 @@ void spi_flush_queue(struct spi_controll
|
@@ -2215,6 +2279,75 @@ void spi_flush_queue(struct spi_controll
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#if defined(CONFIG_OF)
|
#if defined(CONFIG_OF)
|
||||||
@ -158,7 +158,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
|||||||
static void of_spi_parse_dt_cs_delay(struct device_node *nc,
|
static void of_spi_parse_dt_cs_delay(struct device_node *nc,
|
||||||
struct spi_delay *delay, const char *prop)
|
struct spi_delay *delay, const char *prop)
|
||||||
{
|
{
|
||||||
@@ -2350,6 +2483,10 @@ of_register_spi_device(struct spi_contro
|
@@ -2354,6 +2487,10 @@ of_register_spi_device(struct spi_contro
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
|
|
||||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||||
@@ -3120,6 +3120,18 @@ static const struct usb_device_id uvc_id
|
@@ -3151,6 +3151,18 @@ static const struct usb_device_id uvc_id
|
||||||
.bInterfaceSubClass = 1,
|
.bInterfaceSubClass = 1,
|
||||||
.bInterfaceProtocol = 0,
|
.bInterfaceProtocol = 0,
|
||||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||||
@ -225,16 +225,16 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
for_each_uvc_urb(uvc_urb, stream) {
|
for_each_uvc_urb(uvc_urb, stream) {
|
||||||
--- a/drivers/media/usb/uvc/uvcvideo.h
|
--- a/drivers/media/usb/uvc/uvcvideo.h
|
||||||
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
||||||
@@ -73,6 +73,8 @@
|
@@ -74,6 +74,8 @@
|
||||||
#define UVC_QUIRK_FORCE_Y8 0x00000800
|
|
||||||
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
#define UVC_QUIRK_FORCE_BPP 0x00001000
|
||||||
#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000
|
#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000
|
||||||
+#define UVC_QUIRK_MOTION 0x00004000
|
#define UVC_QUIRK_NO_RESET_RESUME 0x00004000
|
||||||
+#define UVC_QUIRK_SINGLE_ISO 0x00008000
|
+#define UVC_QUIRK_MOTION 0x00008000
|
||||||
|
+#define UVC_QUIRK_SINGLE_ISO 0x00010000
|
||||||
|
|
||||||
/* Format flags */
|
/* Format flags */
|
||||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
||||||
@@ -582,6 +584,7 @@ struct uvc_device {
|
@@ -583,6 +585,7 @@ struct uvc_device {
|
||||||
|
|
||||||
struct input_dev *input;
|
struct input_dev *input;
|
||||||
char input_phys[64];
|
char input_phys[64];
|
||||||
|
@ -197,6 +197,7 @@ CONFIG_FB=y
|
|||||||
CONFIG_FB_CORE=y
|
CONFIG_FB_CORE=y
|
||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
CONFIG_FB_DMAMEM_HELPERS=y
|
CONFIG_FB_DMAMEM_HELPERS=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
||||||
CONFIG_FB_SYS_COPYAREA=y
|
CONFIG_FB_SYS_COPYAREA=y
|
||||||
|
@ -217,6 +217,7 @@ CONFIG_FB_DEFERRED_IO=y
|
|||||||
CONFIG_FB_DEVICE=y
|
CONFIG_FB_DEVICE=y
|
||||||
CONFIG_FB_EFI=y
|
CONFIG_FB_EFI=y
|
||||||
CONFIG_FB_HYPERV=y
|
CONFIG_FB_HYPERV=y
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_IOMEM_HELPERS=y
|
CONFIG_FB_IOMEM_HELPERS=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
CONFIG_FB_SIMPLE=y
|
CONFIG_FB_SIMPLE=y
|
||||||
|
@ -152,6 +152,7 @@ CONFIG_FB_DEVICE=y
|
|||||||
CONFIG_FB_EFI=y
|
CONFIG_FB_EFI=y
|
||||||
CONFIG_FB_HYPERV=y
|
CONFIG_FB_HYPERV=y
|
||||||
# CONFIG_FB_I810 is not set
|
# CONFIG_FB_I810 is not set
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_IOMEM_HELPERS=y
|
CONFIG_FB_IOMEM_HELPERS=y
|
||||||
CONFIG_FB_SIMPLE=y
|
CONFIG_FB_SIMPLE=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
|
@ -111,6 +111,7 @@ CONFIG_FB_CORE=y
|
|||||||
CONFIG_FB_DEFERRED_IO=y
|
CONFIG_FB_DEFERRED_IO=y
|
||||||
CONFIG_FB_DEVICE=y
|
CONFIG_FB_DEVICE=y
|
||||||
# CONFIG_FB_I810 is not set
|
# CONFIG_FB_I810 is not set
|
||||||
|
CONFIG_FB_IOMEM_FOPS=y
|
||||||
CONFIG_FB_IOMEM_HELPERS=y
|
CONFIG_FB_IOMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS=y
|
CONFIG_FB_SYSMEM_HELPERS=y
|
||||||
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
|
||||||
|
Loading…
Reference in New Issue
Block a user