mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 16:31:13 +00:00
5deb3996e2
Copy and refresh patches and config from 5.4 to 5.10. Most patches require no more then automatic refresh. The only exception is the Ethernet driver patch, which requires some more work: * drop eth_change_mtu() usage since it was removed from the kernel, it anyway useless for drivers that utilizes alloc_etherdev(); * add the txqueue number argument to the .ndo_tx_timeout callback function; * replace ioremap_nocache() which was finally removed from the kernel by the ioremap() with the same behaviour. Switch target to the new kernel version. Signed-off-by: Daniel Golle <daniel@makrotopia.org> [use KERNEL_TESTING_PATCHVER for now] Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
45 lines
1.2 KiB
Diff
45 lines
1.2 KiB
Diff
--- a/drivers/mtd/parsers/redboot.c
|
|
+++ b/drivers/mtd/parsers/redboot.c
|
|
@@ -93,12 +93,18 @@ static int parse_redboot_partitions(stru
|
|
|
|
parse_redboot_of(master);
|
|
|
|
+ buf = vmalloc(master->erasesize);
|
|
+ if (!buf)
|
|
+ return -ENOMEM;
|
|
+
|
|
+ restart:
|
|
if ( directory < 0 ) {
|
|
offset = master->size + directory * master->erasesize;
|
|
while (mtd_block_isbad(master, offset)) {
|
|
if (!offset) {
|
|
nogood:
|
|
printk(KERN_NOTICE "Failed to find a non-bad block to check for RedBoot partition table\n");
|
|
+ vfree(buf);
|
|
return -EIO;
|
|
}
|
|
offset -= master->erasesize;
|
|
@@ -111,10 +117,6 @@ static int parse_redboot_partitions(stru
|
|
goto nogood;
|
|
}
|
|
}
|
|
- buf = vmalloc(master->erasesize);
|
|
-
|
|
- if (!buf)
|
|
- return -ENOMEM;
|
|
|
|
printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
|
|
master->name, offset);
|
|
@@ -187,6 +189,11 @@ static int parse_redboot_partitions(stru
|
|
}
|
|
if (i == numslots) {
|
|
/* Didn't find it */
|
|
+ if (offset + master->erasesize < master->size) {
|
|
+ /* not at the end of the flash yet, maybe next block */
|
|
+ directory++;
|
|
+ goto restart;
|
|
+ }
|
|
printk(KERN_NOTICE "No RedBoot partition table detected in %s\n",
|
|
master->name);
|
|
ret = 0;
|