mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-16 15:29:48 +00:00
generic: 6.6: manually refresh hack patches
Refresh hack patches for kernel 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
This commit is contained in:
parent
5b6bca812d
commit
d9bc5c93de
@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
endif # MODULES
|
||||
--- a/kernel/module/main.c
|
||||
+++ b/kernel/module/main.c
|
||||
@@ -988,6 +988,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
|
||||
@@ -997,6 +997,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
|
||||
|
||||
static const char vermagic[] = VERMAGIC_STRING;
|
||||
|
||||
@ -110,15 +110,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int try_to_force_load(struct module *mod, const char *reason)
|
||||
{
|
||||
#ifdef CONFIG_MODULE_FORCE_LOAD
|
||||
@@ -999,6 +1000,7 @@ int try_to_force_load(struct module *mod
|
||||
@@ -1008,6 +1009,7 @@ int try_to_force_load(struct module *mod
|
||||
return -ENOEXEC;
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
static char *get_modinfo(const struct load_info *info, const char *tag);
|
||||
static char *get_next_modinfo(const struct load_info *info, const char *tag,
|
||||
@@ -1958,9 +1960,11 @@ static int setup_load_info(struct load_i
|
||||
/* Parse tag=value strings from .modinfo section */
|
||||
char *module_next_tag_pair(char *string, unsigned long *secsize)
|
||||
@@ -2075,9 +2077,11 @@ static void module_augment_kernel_taints
|
||||
|
||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||
{
|
||||
@ -131,14 +131,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
|
||||
modmagic = NULL;
|
||||
|
||||
@@ -1981,6 +1985,7 @@ static int check_modinfo(struct module *
|
||||
mod->name);
|
||||
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
|
||||
@@ -2091,6 +2095,7 @@ static int check_modinfo(struct module *
|
||||
info->name, modmagic, vermagic);
|
||||
return -ENOEXEC;
|
||||
}
|
||||
+#endif
|
||||
|
||||
check_modinfo_retpoline(mod, info);
|
||||
|
||||
err = check_modinfo_livepatch(mod, info);
|
||||
if (err)
|
||||
--- a/scripts/mod/modpost.c
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -1785,7 +1785,9 @@ static void read_symbols(const char *mod
|
||||
@ -150,8 +150,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+#endif
|
||||
}
|
||||
|
||||
for (sym = info.symtab_start; sym < info.symtab_stop; sym++) {
|
||||
@@ -1948,8 +1950,10 @@ static void add_header(struct buffer *b,
|
||||
check_sec_ref(mod, &info);
|
||||
@@ -1944,8 +1946,10 @@ static void add_header(struct buffer *b,
|
||||
buf_printf(b, "BUILD_SALT;\n");
|
||||
buf_printf(b, "BUILD_LTO_INFO;\n");
|
||||
buf_printf(b, "\n");
|
||||
|
@ -11,12 +11,12 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
--- a/scripts/mod/file2alias.c
|
||||
+++ b/scripts/mod/file2alias.c
|
||||
@@ -38,6 +38,9 @@ typedef struct {
|
||||
__u8 b[16];
|
||||
} guid_t;
|
||||
typedef uint16_t __u16;
|
||||
typedef unsigned char __u8;
|
||||
|
||||
+#ifdef __APPLE__
|
||||
+#define uuid_t compat_uuid_t
|
||||
+#endif
|
||||
/* backwards compatibility, don't use in new code */
|
||||
/* UUID types for backward compatibility, don't use in new code */
|
||||
typedef struct {
|
||||
__u8 b[16];
|
||||
|
@ -74,8 +74,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct page;
|
||||
struct kmem_cache;
|
||||
@@ -51,7 +55,9 @@ typedef __s8 s8;
|
||||
#define __force
|
||||
#define __user
|
||||
#endif
|
||||
#define __must_check
|
||||
+#ifndef __cold
|
||||
#define __cold
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
--- a/tools/arch/x86/include/asm/orc_types.h
|
||||
+++ b/tools/arch/x86/include/asm/orc_types.h
|
||||
@@ -40,7 +40,6 @@
|
||||
#define ORC_REG_MAX 15
|
||||
#define ORC_TYPE_REGS_PARTIAL 4
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
-#include <asm/byteorder.h>
|
||||
@ -123,13 +123,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned sp_reg:4;
|
||||
unsigned bp_reg:4;
|
||||
unsigned type:2;
|
||||
unsigned end:1;
|
||||
unsigned type:3;
|
||||
unsigned signal:1;
|
||||
-#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
+#elif __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned bp_reg:4;
|
||||
unsigned sp_reg:4;
|
||||
unsigned unused:5;
|
||||
unsigned unused:4;
|
||||
--- a/tools/arch/x86/lib/insn.c
|
||||
+++ b/tools/arch/x86/lib/insn.c
|
||||
@@ -15,7 +15,11 @@
|
||||
@ -199,15 +199,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
unsigned long __rb_parent_color;
|
||||
--- a/tools/objtool/Makefile
|
||||
+++ b/tools/objtool/Makefile
|
||||
@@ -4,7 +4,7 @@ include ../scripts/Makefile.arch
|
||||
@@ -40,7 +40,7 @@ include ../scripts/Makefile.arch
|
||||
OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
|
||||
|
||||
# always use the host compiler
|
||||
AR = $(HOSTAR)
|
||||
-CC = $(HOSTCC)
|
||||
+CC = $(HOSTCC) $(HOST_EXTRACFLAGS)
|
||||
LD = $(HOSTLD)
|
||||
# Always want host compilation.
|
||||
-HOST_OVERRIDES := CC="$(HOSTCC)" LD="$(HOSTLD)" AR="$(HOSTAR)"
|
||||
+HOST_OVERRIDES := CC="$(HOSTCC) $(HOST_EXTRACFLAGS)" LD="$(HOSTLD)" AR="$(HOSTAR)"
|
||||
|
||||
ifeq ($(srctree),)
|
||||
AWK = awk
|
||||
MKDIR = mkdir
|
||||
@@ -43,6 +43,7 @@ BUILD_ORC := n
|
||||
|
||||
ifeq ($(SRCARCH),x86)
|
||||
@ -252,8 +252,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
+#endif
|
||||
|
||||
#define NEGATIVE_RELOC ((void *)-1L)
|
||||
|
||||
static struct reloc *insn_reloc(struct objtool_file *file, struct instruction *insn)
|
||||
{
|
||||
--- a/tools/objtool/include/objtool/objtool.h
|
||||
+++ b/tools/objtool/include/objtool/objtool.h
|
||||
@@ -12,7 +12,9 @@
|
||||
@ -268,10 +268,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
bool clean;
|
||||
--- a/tools/objtool/orc_dump.c
|
||||
+++ b/tools/objtool/orc_dump.c
|
||||
@@ -5,10 +5,10 @@
|
||||
@@ -4,10 +4,10 @@
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <linux/objtool.h>
|
||||
-#include <asm/orc_types.h>
|
||||
#include <objtool/objtool.h>
|
||||
#include <objtool/warn.h>
|
||||
@ -285,7 +285,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
@@ -7,11 +7,11 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <linux/objtool.h>
|
||||
#include <linux/objtool_types.h>
|
||||
-#include <asm/orc_types.h>
|
||||
|
||||
#include <objtool/check.h>
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
--- a/arch/arm/Kconfig
|
||||
+++ b/arch/arm/Kconfig
|
||||
@@ -124,6 +124,7 @@ config ARM
|
||||
select HAVE_VIRT_CPU_ACCOUNTING_GEN
|
||||
select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
|
||||
select IRQ_FORCED_THREADING
|
||||
select LOCK_MM_AND_FIND_VMA
|
||||
+ select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
|
||||
|
@ -27,8 +27,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+#define SYMTAB_DISCARD_GPL
|
||||
+#endif
|
||||
+
|
||||
/* Align . to a 8 byte boundary equals to maximum function alignment. */
|
||||
#define ALIGN_FUNCTION() . = ALIGN(8)
|
||||
/* Align . function alignment. */
|
||||
#define ALIGN_FUNCTION() . = ALIGN(CONFIG_FUNCTION_ALIGNMENT)
|
||||
|
||||
@@ -511,14 +521,14 @@
|
||||
/* Kernel symbol table: Normal symbols */ \
|
||||
@ -64,12 +64,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ SYMTAB_DISCARD_GPL \
|
||||
*(.discard) \
|
||||
*(.discard.*) \
|
||||
*(.modinfo) \
|
||||
--- a/include/linux/export.h
|
||||
+++ b/include/linux/export.h
|
||||
@@ -72,6 +72,12 @@ struct kernel_symbol {
|
||||
|
||||
#else
|
||||
*(.export_symbol) \
|
||||
--- a/include/linux/export-internal.h
|
||||
+++ b/include/linux/export-internal.h
|
||||
@@ -23,6 +23,12 @@
|
||||
#define __KSYM_REF(sym) ".long " #sym
|
||||
#endif
|
||||
|
||||
+#ifdef MODULE
|
||||
+#define __EXPORT_SUFFIX(sym)
|
||||
@ -80,39 +80,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/*
|
||||
* For every exported symbol, do the following:
|
||||
*
|
||||
@@ -87,7 +93,7 @@ struct kernel_symbol {
|
||||
extern typeof(sym) sym; \
|
||||
extern const char __kstrtab_##sym[]; \
|
||||
extern const char __kstrtabns_##sym[]; \
|
||||
- asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" \
|
||||
+ asm(" .section \"__ksymtab_strings" __EXPORT_SUFFIX(sym) "\",\"aMS\",%progbits,1 \n" \
|
||||
"__kstrtab_" #sym ": \n" \
|
||||
" .asciz \"" #sym "\" \n" \
|
||||
"__kstrtabns_" #sym ": \n" \
|
||||
--- a/include/asm-generic/export.h
|
||||
+++ b/include/asm-generic/export.h
|
||||
@@ -31,6 +31,12 @@
|
||||
#endif
|
||||
.endm
|
||||
|
||||
+#ifdef MODULE
|
||||
+#define __EXPORT_SUFFIX(name)
|
||||
+#else
|
||||
+#define __EXPORT_SUFFIX(name) + #name
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* note on .section use: we specify progbits since usage of the "M" (SHF_MERGE)
|
||||
* section flag requires it. Use '%progbits' instead of '@progbits' since the
|
||||
@@ -44,7 +50,7 @@
|
||||
__ksymtab_\name:
|
||||
__put \val, __kstrtab_\name
|
||||
.previous
|
||||
- .section __ksymtab_strings,"aMS",%progbits,1
|
||||
+ .section __ksymtab_strings __EXPORT_SUFFIX(name),"aMS",%progbits,1
|
||||
__kstrtab_\name:
|
||||
.asciz "\name"
|
||||
.previous
|
||||
@@ -35,7 +41,7 @@
|
||||
* former apparently works on all arches according to the binutils source.
|
||||
*/
|
||||
#define __KSYMTAB(name, sym, sec, ns) \
|
||||
- asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1" "\n" \
|
||||
+ asm(" .section \"__ksymtab_strings" __EXPORT_SUFFIX(sym) "\",\"aMS\",%progbits,1" "\n" \
|
||||
"__kstrtab_" #name ":" "\n" \
|
||||
" .asciz \"" #name "\"" "\n" \
|
||||
"__kstrtabns_" #name ":" "\n" \
|
||||
--- a/scripts/Makefile.build
|
||||
+++ b/scripts/Makefile.build
|
||||
@@ -388,7 +388,7 @@ targets += $(real-dtb-y) $(lib-y) $(alwa
|
||||
|
@ -35,7 +35,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
select CRYPTO_ALGAPI
|
||||
|
||||
@@ -75,7 +75,7 @@ config CRYPTO_AEAD2
|
||||
select CRYPTO_RNG2
|
||||
select CRYPTO_ALGAPI2
|
||||
|
||||
config CRYPTO_SKCIPHER
|
||||
- tristate
|
||||
@ -44,7 +44,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
select CRYPTO_ALGAPI
|
||||
|
||||
@@ -85,7 +85,7 @@ config CRYPTO_SKCIPHER2
|
||||
select CRYPTO_RNG2
|
||||
select CRYPTO_ALGAPI2
|
||||
|
||||
config CRYPTO_HASH
|
||||
- tristate
|
||||
@ -136,7 +136,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
config SND_SEQ_DEVICE
|
||||
tristate
|
||||
@@ -27,7 +27,7 @@ config SND_RAWMIDI
|
||||
select SND_SEQ_DEVICE if SND_SEQUENCER != n
|
||||
The device contains 16 substreams corresponding to UMP groups.
|
||||
|
||||
config SND_COMPRESS_OFFLOAD
|
||||
- tristate
|
||||
|
@ -14,20 +14,27 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/drivers/base/regmap/Kconfig
|
||||
+++ b/drivers/base/regmap/Kconfig
|
||||
@@ -4,10 +4,9 @@
|
||||
@@ -4,8 +4,7 @@
|
||||
# subsystems should select the appropriate symbols.
|
||||
|
||||
config REGMAP
|
||||
- default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SOUNDWIRE_MBQ || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM || REGMAP_MDIO)
|
||||
- bool
|
||||
- default y if (REGMAP_I2C || REGMAP_SPI || REGMAP_SPMI || REGMAP_W1 || REGMAP_AC97 || REGMAP_MMIO || REGMAP_IRQ || REGMAP_SOUNDWIRE || REGMAP_SOUNDWIRE_MBQ || REGMAP_SCCB || REGMAP_I3C || REGMAP_SPI_AVMM || REGMAP_MDIO || REGMAP_FSI)
|
||||
+ tristate
|
||||
select IRQ_DOMAIN if REGMAP_IRQ
|
||||
select MDIO_BUS if REGMAP_MDIO
|
||||
- bool
|
||||
+ tristate
|
||||
help
|
||||
@@ -19,7 +18,7 @@ config REGMAP
|
||||
|
||||
config REGCACHE_COMPRESSED
|
||||
select LZO_COMPRESS
|
||||
@@ -15,53 +14,67 @@ config REGCACHE_COMPRESSED
|
||||
bool
|
||||
config REGMAP_KUNIT
|
||||
tristate "KUnit tests for regmap"
|
||||
- depends on KUNIT && REGMAP
|
||||
+ depends on KUNIT
|
||||
default KUNIT_ALL_TESTS
|
||||
select REGMAP_RAM
|
||||
|
||||
@@ -34,60 +33,76 @@ config REGMAP_BUILD
|
||||
normally enabled.
|
||||
|
||||
config REGMAP_AC97
|
||||
+ select REGMAP
|
||||
@ -70,6 +77,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ select REGMAP
|
||||
bool
|
||||
|
||||
config REGMAP_RAM
|
||||
+ select REGMAP
|
||||
tristate
|
||||
|
||||
config REGMAP_SOUNDWIRE
|
||||
+ select REGMAP
|
||||
tristate
|
||||
@ -94,27 +105,28 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ select REGMAP
|
||||
tristate
|
||||
depends on SPI
|
||||
|
||||
config REGMAP_FSI
|
||||
+ select REGMAP
|
||||
tristate
|
||||
depends on FSI
|
||||
--- a/drivers/base/regmap/Makefile
|
||||
+++ b/drivers/base/regmap/Makefile
|
||||
@@ -2,10 +2,14 @@
|
||||
@@ -2,9 +2,11 @@
|
||||
# For include/trace/define_trace.h to include trace.h
|
||||
CFLAGS_regmap.o := -I$(src)
|
||||
|
||||
-obj-$(CONFIG_REGMAP) += regmap.o regcache.o
|
||||
-obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-flat.o
|
||||
-obj-$(CONFIG_REGCACHE_COMPRESSED) += regcache-lzo.o
|
||||
-obj-$(CONFIG_REGMAP) += regcache-rbtree.o regcache-flat.o regcache-maple.o
|
||||
-obj-$(CONFIG_DEBUG_FS) += regmap-debugfs.o
|
||||
+regmap-core-objs = regmap.o regcache.o regcache-rbtree.o regcache-flat.o
|
||||
+regmap-core-objs = regmap.o regcache.o regcache-rbtree.o regcache-flat.o regcache-maple.o
|
||||
+ifdef CONFIG_DEBUG_FS
|
||||
+regmap-core-objs += regmap-debugfs.o
|
||||
+endif
|
||||
+ifdef CONFIG_REGCACHE_COMPRESSED
|
||||
+regmap-core-objs += regcache-lzo.o
|
||||
+endif
|
||||
+obj-$(CONFIG_REGMAP) += regmap-core.o
|
||||
obj-$(CONFIG_REGMAP_KUNIT) += regmap-kunit.o
|
||||
obj-$(CONFIG_REGMAP_AC97) += regmap-ac97.o
|
||||
obj-$(CONFIG_REGMAP_I2C) += regmap-i2c.o
|
||||
obj-$(CONFIG_REGMAP_SLIMBUS) += regmap-slimbus.o
|
||||
--- a/drivers/base/regmap/regmap.c
|
||||
+++ b/drivers/base/regmap/regmap.c
|
||||
@@ -9,6 +9,7 @@
|
||||
|
@ -14,39 +14,41 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/crypto/Kconfig
|
||||
+++ b/crypto/Kconfig
|
||||
@@ -142,13 +142,13 @@ config CRYPTO_MANAGER
|
||||
@@ -148,15 +148,15 @@ config CRYPTO_MANAGER
|
||||
cbc(aes).
|
||||
|
||||
config CRYPTO_MANAGER2
|
||||
- def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
|
||||
- select CRYPTO_AEAD2
|
||||
- select CRYPTO_HASH2
|
||||
- select CRYPTO_SKCIPHER2
|
||||
- select CRYPTO_AKCIPHER2
|
||||
- select CRYPTO_KPP2
|
||||
- select CRYPTO_ACOMP2
|
||||
- select CRYPTO_AEAD2
|
||||
- select CRYPTO_AKCIPHER2
|
||||
- select CRYPTO_SIG2
|
||||
- select CRYPTO_HASH2
|
||||
- select CRYPTO_KPP2
|
||||
- select CRYPTO_RNG2
|
||||
- select CRYPTO_SKCIPHER2
|
||||
+ def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y && !CRYPTO_MANAGER_DISABLE_TESTS)
|
||||
+ select CRYPTO_AEAD2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_HASH2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_SKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_AKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_KPP2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_ACOMP2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_AEAD2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_AKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_SIG2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_HASH2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_KPP2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_RNG2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ select CRYPTO_SKCIPHER2 if !CRYPTO_MANAGER_DISABLE_TESTS
|
||||
|
||||
config CRYPTO_USER
|
||||
tristate "Userspace cryptographic algorithm configuration"
|
||||
--- a/crypto/algboss.c
|
||||
+++ b/crypto/algboss.c
|
||||
@@ -211,8 +211,12 @@ static int cryptomgr_schedule_test(struc
|
||||
type = alg->cra_flags;
|
||||
@@ -204,6 +204,10 @@ static int cryptomgr_schedule_test(struc
|
||||
memcpy(param->alg, alg->cra_name, sizeof(param->alg));
|
||||
param->type = alg->cra_flags;
|
||||
|
||||
/* Do not test internal algorithms. */
|
||||
+#ifdef CONFIG_CRYPTO_MANAGER_DISABLE_TESTS
|
||||
+ type |= CRYPTO_ALG_TESTED;
|
||||
+#else
|
||||
if (type & CRYPTO_ALG_INTERNAL)
|
||||
type |= CRYPTO_ALG_TESTED;
|
||||
+ param->type |= CRYPTO_ALG_TESTED;
|
||||
+#endif
|
||||
|
||||
param->type = type;
|
||||
|
||||
+
|
||||
thread = kthread_run(cryptomgr_test, param, "cryptomgr_test");
|
||||
if (IS_ERR(thread))
|
||||
goto err_free_param;
|
||||
|
@ -14,11 +14,11 @@ from backports.
|
||||
--- a/lib/crypto/Kconfig
|
||||
+++ b/lib/crypto/Kconfig
|
||||
@@ -9,7 +9,7 @@ config CRYPTO_LIB_AES
|
||||
tristate
|
||||
select CRYPTO_LIB_UTILS
|
||||
|
||||
config CRYPTO_LIB_ARC4
|
||||
- tristate
|
||||
+ tristate "ARC4 cipher library"
|
||||
|
||||
config CRYPTO_ARCH_HAVE_LIB_BLAKE2S
|
||||
bool
|
||||
config CRYPTO_LIB_GF128MUL
|
||||
tristate
|
||||
|
@ -16,8 +16,8 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
mutex_unlock(&mtd_table_mutex);
|
||||
|
||||
- if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL)) {
|
||||
+ if (of_find_property(mtd_get_of_node(mtd), "linux,rootfs", NULL) ||
|
||||
- if (of_property_read_bool(mtd_get_of_node(mtd), "linux,rootfs")) {
|
||||
+ if (of_property_read_bool(mtd_get_of_node(mtd), "linux,rootfs") ||
|
||||
+ (IS_ENABLED(CONFIG_MTD_ROOTFS_ROOT_DEV) && !strcmp(mtd->name, "rootfs") && ROOT_DEV == 0)) {
|
||||
if (IS_BUILTIN(CONFIG_MTD)) {
|
||||
pr_info("mtd: setting mtd%d (%s) as root device\n", mtd->index, mtd->name);
|
||||
|
@ -19,11 +19,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1730,6 +1730,7 @@ enum netdev_priv_flags {
|
||||
/* was IFF_LIVE_RENAME_OK */
|
||||
@@ -1707,6 +1707,7 @@ enum netdev_priv_flags {
|
||||
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
||||
IFF_CHANGE_PROTO_DOWN = BIT_ULL(32),
|
||||
+ IFF_NO_IP_ALIGN = BIT_ULL(33),
|
||||
IFF_SEE_ALL_HWTSTAMP_REQUESTS = BIT_ULL(33),
|
||||
+ IFF_NO_IP_ALIGN = BIT_ULL(34),
|
||||
};
|
||||
|
||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||
|
@ -15,16 +15,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
|
||||
--- a/drivers/net/phy/aquantia/aquantia_main.c
|
||||
+++ b/drivers/net/phy/aquantia/aquantia_main.c
|
||||
@@ -27,6 +27,8 @@
|
||||
#define PHY_ID_AQR113 0x31c31c40
|
||||
#define PHY_ID_AQR113C 0x31c31c12
|
||||
#define PHY_ID_AQR813 0x31c31cb2
|
||||
+#define PHY_ID_AQR112 0x03a1b662
|
||||
+#define PHY_ID_AQR412 0x03a1b712
|
||||
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
|
||||
@@ -99,6 +101,29 @@
|
||||
@@ -101,6 +101,29 @@
|
||||
#define AQR107_OP_IN_PROG_SLEEP 1000
|
||||
#define AQR107_OP_IN_PROG_TIMEOUT 100000
|
||||
|
||||
@ -54,7 +45,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
struct aqr107_hw_stat {
|
||||
const char *name;
|
||||
int reg;
|
||||
@@ -230,6 +255,51 @@ static int aqr_config_aneg(struct phy_de
|
||||
@@ -232,6 +255,51 @@ static int aqr_config_aneg(struct phy_de
|
||||
return genphy_c45_check_and_restart_aneg(phydev, changed);
|
||||
}
|
||||
|
||||
@ -106,43 +97,21 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
static int aqr_config_intr(struct phy_device *phydev)
|
||||
{
|
||||
bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
|
||||
@@ -860,6 +930,30 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_stats = aqr107_get_stats,
|
||||
.link_change_notify = aqr107_link_change_notify,
|
||||
},
|
||||
+{
|
||||
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
|
||||
+ .name = "Aquantia AQR112",
|
||||
+ .probe = aqr107_probe,
|
||||
+ .config_aneg = aqr_config_aneg_set_prot,
|
||||
+ .config_intr = aqr_config_intr,
|
||||
+ .handle_interrupt = aqr_handle_interrupt,
|
||||
+ .read_status = aqr107_read_status,
|
||||
+ .get_sset_count = aqr107_get_sset_count,
|
||||
+ .get_strings = aqr107_get_strings,
|
||||
+ .get_stats = aqr107_get_stats,
|
||||
+},
|
||||
+{
|
||||
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
|
||||
+ .name = "Aquantia AQR412",
|
||||
+ .probe = aqr107_probe,
|
||||
+ .config_aneg = aqr_config_aneg_set_prot,
|
||||
+ .config_intr = aqr_config_intr,
|
||||
+ .handle_interrupt = aqr_handle_interrupt,
|
||||
+ .read_status = aqr107_read_status,
|
||||
+ .get_sset_count = aqr107_get_sset_count,
|
||||
+ .get_strings = aqr107_get_strings,
|
||||
+ .get_stats = aqr107_get_stats,
|
||||
+},
|
||||
};
|
||||
|
||||
module_phy_driver(aqr_driver);
|
||||
@@ -877,6 +971,8 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
|
||||
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
|
||||
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -809,7 +877,7 @@ static struct phy_driver aqr_driver[] =
|
||||
PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
|
||||
.name = "Aquantia AQR112",
|
||||
.probe = aqr107_probe,
|
||||
- .config_aneg = aqr_config_aneg,
|
||||
+ .config_aneg = aqr_config_aneg_set_prot,
|
||||
.config_intr = aqr_config_intr,
|
||||
.handle_interrupt = aqr_handle_interrupt,
|
||||
.get_tunable = aqr107_get_tunable,
|
||||
@@ -827,7 +895,7 @@ static struct phy_driver aqr_driver[] =
|
||||
PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
|
||||
.name = "Aquantia AQR412",
|
||||
.probe = aqr107_probe,
|
||||
- .config_aneg = aqr_config_aneg,
|
||||
+ .config_aneg = aqr_config_aneg_set_prot,
|
||||
.config_intr = aqr_config_intr,
|
||||
.handle_interrupt = aqr_handle_interrupt,
|
||||
.get_tunable = aqr107_get_tunable,
|
||||
|
@ -13,17 +13,17 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
--- a/drivers/net/phy/aquantia/aquantia_main.c
|
||||
+++ b/drivers/net/phy/aquantia/aquantia_main.c
|
||||
@@ -29,6 +29,8 @@
|
||||
#define PHY_ID_AQR113 0x31c31c40
|
||||
#define PHY_ID_AQR113C 0x31c31c12
|
||||
#define PHY_ID_AQR813 0x31c31cb2
|
||||
#define PHY_ID_AQR112 0x03a1b662
|
||||
#define PHY_ID_AQR412 0x03a1b712
|
||||
+#define PHY_ID_AQR112C 0x03a1b790
|
||||
+#define PHY_ID_AQR112R 0x31c31d12
|
||||
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
|
||||
@@ -960,6 +962,30 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_strings = aqr107_get_strings,
|
||||
@@ -898,6 +900,30 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_stats = aqr107_get_stats,
|
||||
.link_change_notify = aqr107_link_change_notify,
|
||||
},
|
||||
+{
|
||||
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR112C),
|
||||
@ -52,10 +52,10 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
};
|
||||
|
||||
module_phy_driver(aqr_driver);
|
||||
@@ -979,6 +1005,8 @@ static struct mdio_device_id __maybe_unu
|
||||
@@ -917,6 +943,8 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR412) },
|
||||
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR112C) },
|
||||
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR112R) },
|
||||
{ }
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
--- a/drivers/net/pcs/pcs-mtk-lynxi.c
|
||||
+++ b/drivers/net/pcs/pcs-mtk-lynxi.c
|
||||
@@ -114,14 +114,23 @@ static void mtk_pcs_lynxi_get_state(stru
|
||||
@@ -92,14 +92,23 @@ static void mtk_pcs_lynxi_get_state(struct
|
||||
struct phylink_link_state *state)
|
||||
{
|
||||
struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
|
||||
@ -30,24 +30,35 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
+ state->an_complete = !!(bmsr & BMSR_ANEGCOMPLETE);
|
||||
+ state->speed = SPEED_2500;
|
||||
+ state->duplex = DUPLEX_FULL;
|
||||
+
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
- phylink_mii_c22_pcs_decode_state(state, FIELD_GET(SGMII_BMSR, bm),
|
||||
- FIELD_GET(SGMII_LPA, adv));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ regmap_read(mpcs->regmap, SGMSYS_PCS_ADVERTISE, &adv);
|
||||
+ phylink_mii_c22_pcs_decode_state(state, bmsr, FIELD_GET(SGMII_LPA, adv));
|
||||
}
|
||||
|
||||
static void mtk_sgmii_reset(struct mtk_pcs_lynxi *mpcs)
|
||||
@@ -163,7 +172,8 @@ static int mtk_pcs_lynxi_config(struct p
|
||||
if (neg_mode & PHYLINK_PCS_NEG_INBAND)
|
||||
sgm_mode |= SGMII_REMOTE_FAULT_DIS;
|
||||
@@ -109,7 +118,7 @@ static int mtk_pcs_lynxi_config(struct p
|
||||
{
|
||||
struct mtk_pcs_lynxi *mpcs = pcs_to_mtk_pcs_lynxi(pcs);
|
||||
bool mode_changed = false, changed;
|
||||
- unsigned int rgc3, sgm_mode, bmcr;
|
||||
+ unsigned int rgc3, sgm_mode, bmcr = 0;
|
||||
int advertise, link_timer;
|
||||
|
||||
- if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
|
||||
+ if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED &&
|
||||
+ interface != PHY_INTERFACE_MODE_2500BASEX) {
|
||||
advertise = phylink_mii_c22_pcs_encode_advertisement(interface,
|
||||
@@ -132,9 +141,8 @@ static int mtk_pcs_lynxi_config(struct p
|
||||
if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED) {
|
||||
if (interface == PHY_INTERFACE_MODE_SGMII)
|
||||
sgm_mode |= SGMII_SPEED_DUPLEX_AN;
|
||||
bmcr = BMCR_ANENABLE;
|
||||
- bmcr = BMCR_ANENABLE;
|
||||
- } else {
|
||||
- bmcr = 0;
|
||||
+ if (interface != PHY_INTERFACE_MODE_2500BASEX)
|
||||
+ bmcr = BMCR_ANENABLE;
|
||||
}
|
||||
|
||||
if (mpcs->interface != interface) {
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
+
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+
|
||||
+ ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, led_data);
|
||||
+
|
||||
+ return 0;
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
+#include <linux/of.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/polynomial.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/property.h>
|
||||
@@ -33,6 +34,7 @@
|
||||
#define PHY_MIISTAT 0x18 /* MII state */
|
||||
#define PHY_IMASK 0x19 /* interrupt mask */
|
||||
@ -52,9 +52,9 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
+/* LED */
|
||||
+#define VSPEC1_LED(x) (0x1 + x)
|
||||
+
|
||||
/* SGMII */
|
||||
#define VSPEC1_SGMII_CTRL 0x08
|
||||
#define VSPEC1_SGMII_CTRL_ANEN BIT(12) /* Aneg enable */
|
||||
#define PHY_PMA_MGBT_POLARITY 0x82
|
||||
#define PHY_MDI_MDI_X_MASK GENMASK(1, 0)
|
||||
#define PHY_MDI_MDI_X_NORMAL 0x3
|
||||
@@ -241,6 +248,35 @@ out:
|
||||
return ret;
|
||||
}
|
||||
@ -102,4 +102,4 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
+ return gpy_led_write(phydev);
|
||||
}
|
||||
|
||||
static bool gpy_has_broken_mdint(struct phy_device *phydev)
|
||||
static int gpy_probe(struct phy_device *phydev)
|
||||
|
@ -27,8 +27,8 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
--- a/drivers/net/phy/sfp.c
|
||||
+++ b/drivers/net/phy/sfp.c
|
||||
@@ -409,6 +409,9 @@ static const struct sfp_quirk sfp_quirks
|
||||
SFP_QUIRK("HUAWEI", "MA5671A", sfp_quirk_2500basex,
|
||||
sfp_fixup_ignore_tx_fault),
|
||||
// FS 2.5G Base-T
|
||||
SFP_QUIRK_M("FS", "SFP-2.5G-T", sfp_quirk_oem_2_5g),
|
||||
|
||||
+ // OEM SFP-GE-T is 1000Base-T module
|
||||
+ SFP_QUIRK_F("OEM", "SFP-GE-T", sfp_fixup_ignore_tx_fault),
|
||||
|
@ -6,18 +6,18 @@ Subject: [PATCH 30/36] GPIO: add named gpio exports
|
||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
--- a/drivers/gpio/gpiolib-of.c
|
||||
+++ b/drivers/gpio/gpiolib-of.c
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <linux/pinctrl/pinctrl.h>
|
||||
#include <linux/slab.h>
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/gpio/machine.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/platform_device.h>
|
||||
|
||||
#include "gpiolib.h"
|
||||
#include "gpiolib-of.h"
|
||||
@@ -1030,3 +1032,100 @@ void of_gpio_dev_init(struct gpio_chip *
|
||||
else
|
||||
gc->of_node = gdev->dev.of_node;
|
||||
@@ -1111,3 +1113,74 @@ void of_gpiochip_remove(struct gpio_chip
|
||||
{
|
||||
of_node_put(dev_of_node(&chip->gpiodev->dev));
|
||||
}
|
||||
+
|
||||
+#ifdef CONFIG_GPIO_SYSFS
|
||||
@ -44,57 +44,31 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+ of_property_read_string(cnp, "gpio-export,name", &name);
|
||||
+
|
||||
+ if (!name)
|
||||
+ max_gpio = of_gpio_count(cnp);
|
||||
+ max_gpio = of_gpio_named_count(cnp, "gpios");
|
||||
+
|
||||
+ for (i = 0; i < max_gpio; i++) {
|
||||
+ struct gpio_desc *desc;
|
||||
+ unsigned flags = 0;
|
||||
+ enum of_gpio_flags of_flags;
|
||||
+
|
||||
+ gpio = of_get_gpio_flags(cnp, i, &of_flags);
|
||||
+ if (!gpio_is_valid(gpio))
|
||||
+ return gpio;
|
||||
+ desc = of_get_named_gpiod_flags(cnp, "gpios", i, &of_flags);
|
||||
+ if (IS_ERR(desc))
|
||||
+ return PTR_ERR(desc);
|
||||
+ gpio = desc_to_gpio(desc);
|
||||
+
|
||||
+ if (of_flags & OF_GPIO_ACTIVE_LOW)
|
||||
+ flags |= GPIOF_ACTIVE_LOW;
|
||||
+
|
||||
+ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) {
|
||||
+ if (of_flags & OF_GPIO_SINGLE_ENDED) {
|
||||
+ /*
|
||||
+ * As gpiod_direction_output_raw() is used, we
|
||||
+ * need to emulate open drain or open source here.
|
||||
+ */
|
||||
+ if (of_flags & OF_GPIO_OPEN_DRAIN) {
|
||||
+ flags |= GPIOF_OPEN_DRAIN;
|
||||
+ flags |= val ? GPIOF_IN : GPIOF_OUT_INIT_LOW;
|
||||
+ } else {
|
||||
+ flags |= GPIOF_OPEN_SOURCE;
|
||||
+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_IN;
|
||||
+ }
|
||||
+ } else {
|
||||
+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (!of_property_read_u32(cnp, "gpio-export,output", &val))
|
||||
+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
|
||||
+ else
|
||||
+ flags |= GPIOF_IN;
|
||||
+ }
|
||||
+
|
||||
+ if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
|
||||
+ continue;
|
||||
+
|
||||
+ /*
|
||||
+ * When emulating open-source or open-drain functionalities by not
|
||||
+ * actively driving the line (setting mode to input) we still need to
|
||||
+ * set the IS_OUT flag or otherwise we won't be able to set the line
|
||||
+ * value anymore.
|
||||
+ */
|
||||
+ if ((flags & GPIOF_IN) &&
|
||||
+ ((flags & GPIOF_OPEN_DRAIN) || (flags & GPIOF_OPEN_SOURCE))) {
|
||||
+ desc = gpio_to_desc(gpio);
|
||||
+ set_bit(FLAG_IS_OUT, &desc->flags);
|
||||
+ }
|
||||
+
|
||||
+ dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
|
||||
+ gpio_export_with_name(gpio, dmc, name);
|
||||
+ gpio_export_with_name(gpio_to_desc(gpio), dmc, name);
|
||||
+ nb++;
|
||||
+ }
|
||||
+ }
|
||||
@ -116,36 +90,24 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+module_platform_driver(gpio_export_driver);
|
||||
+
|
||||
+#endif
|
||||
--- a/include/asm-generic/gpio.h
|
||||
+++ b/include/asm-generic/gpio.h
|
||||
@@ -125,6 +125,12 @@ static inline int gpio_export(unsigned g
|
||||
return gpiod_export(gpio_to_desc(gpio), direction_may_change);
|
||||
}
|
||||
|
||||
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
|
||||
+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
|
||||
+{
|
||||
+ return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
|
||||
+}
|
||||
+
|
||||
static inline int gpio_export_link(struct device *dev, const char *name,
|
||||
unsigned gpio)
|
||||
{
|
||||
--- a/include/linux/gpio/consumer.h
|
||||
+++ b/include/linux/gpio/consumer.h
|
||||
@@ -715,6 +715,7 @@ static inline struct gpio_desc *acpi_get
|
||||
@@ -644,7 +644,10 @@ static inline struct gpio_desc *acpi_get
|
||||
|
||||
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
|
||||
|
||||
+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
|
||||
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
|
||||
int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
|
||||
+int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
|
||||
+ const char *name);
|
||||
int gpiod_export_link(struct device *dev, const char *name,
|
||||
struct gpio_desc *desc);
|
||||
@@ -722,6 +723,13 @@ void gpiod_unexport(struct gpio_desc *de
|
||||
void gpiod_unexport(struct gpio_desc *desc);
|
||||
@@ -653,12 +656,26 @@ void gpiod_unexport(struct gpio_desc *de
|
||||
|
||||
#else /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
|
||||
#include <asm/errno.h>
|
||||
|
||||
+static inline int _gpiod_export(struct gpio_desc *desc,
|
||||
+static inline int __gpiod_export(struct gpio_desc *desc,
|
||||
+ bool direction_may_change,
|
||||
+ const char *name)
|
||||
+{
|
||||
@ -154,10 +116,23 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+
|
||||
static inline int gpiod_export(struct gpio_desc *desc,
|
||||
bool direction_may_change)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
+static inline int gpio_export_with_name(struct gpio_desc *desc,
|
||||
+ bool direction_may_change,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ return -ENOSYS;
|
||||
+}
|
||||
+
|
||||
static inline int gpiod_export_link(struct device *dev, const char *name,
|
||||
struct gpio_desc *desc)
|
||||
{
|
||||
--- a/drivers/gpio/gpiolib-sysfs.c
|
||||
+++ b/drivers/gpio/gpiolib-sysfs.c
|
||||
@@ -547,7 +547,7 @@ static struct class gpio_class = {
|
||||
@@ -557,7 +557,7 @@ static struct class gpio_class = {
|
||||
*
|
||||
* Returns zero on success, else an error.
|
||||
*/
|
||||
@ -166,7 +141,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
{
|
||||
struct gpio_chip *chip;
|
||||
struct gpio_device *gdev;
|
||||
@@ -609,6 +609,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
@@ -619,6 +619,8 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
if (chip->names && chip->names[offset])
|
||||
ioname = chip->names[offset];
|
||||
@ -175,7 +150,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
dev = device_create_with_groups(&gpio_class, &gdev->dev,
|
||||
MKDEV(0, 0), data, gpio_groups,
|
||||
@@ -630,6 +632,12 @@ err_unlock:
|
||||
@@ -640,8 +642,21 @@ int gpiod_export(struct gpio_desc *desc,
|
||||
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
@ -187,4 +162,13 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
+}
|
||||
EXPORT_SYMBOL_GPL(gpiod_export);
|
||||
|
||||
+int gpio_export_with_name(struct gpio_desc *desc, bool direction_may_change,
|
||||
+ const char *name)
|
||||
+{
|
||||
+ return __gpiod_export(desc, direction_may_change, name);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(gpio_export_with_name);
|
||||
+
|
||||
static int match_export(struct device *dev, const void *desc)
|
||||
{
|
||||
struct gpiod_data *data = dev_get_drvdata(dev);
|
||||
|
@ -28,13 +28,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/Makefile
|
||||
+++ b/net/core/Makefile
|
||||
@@ -11,11 +11,12 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
|
||||
@@ -11,12 +11,13 @@ obj-$(CONFIG_SYSCTL) += sysctl_net_core.
|
||||
|
||||
obj-y += dev.o dev_addr_lists.o dst.o netevent.o \
|
||||
neighbour.o rtnetlink.o utils.o link_watch.o filter.o \
|
||||
- sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
|
||||
+ dev_ioctl.o tso.o sock_reuseport.o \
|
||||
fib_notifier.o xdp.o flow_offload.o gro.o
|
||||
+ dev_ioctl.o tso.o sock_reuseport.o \
|
||||
fib_notifier.o xdp.o flow_offload.o gro.o \
|
||||
netdev-genl.o netdev-genl-gen.o gso.o
|
||||
|
||||
obj-$(CONFIG_NETDEV_ADDR_LIST_TEST) += dev_addr_lists_test.o
|
||||
|
||||
@ -44,15 +45,15 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
obj-$(CONFIG_PROC_FS) += net-procfs.o
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -115,6 +115,7 @@
|
||||
#include <linux/memcontrol.h>
|
||||
#include <linux/prefetch.h>
|
||||
#include <linux/compat.h>
|
||||
@@ -117,6 +117,7 @@
|
||||
#include <linux/mroute.h>
|
||||
#include <linux/mroute6.h>
|
||||
#include <linux/icmpv6.h>
|
||||
+#include <linux/cookie.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
@@ -146,6 +147,7 @@
|
||||
@@ -149,6 +150,7 @@
|
||||
|
||||
static DEFINE_MUTEX(proto_list_mutex);
|
||||
static LIST_HEAD(proto_list);
|
||||
@ -60,26 +61,29 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
static void sock_def_write_space_wfree(struct sock *sk);
|
||||
static void sock_def_write_space(struct sock *sk);
|
||||
@@ -585,6 +587,18 @@ discard_and_relse:
|
||||
@@ -588,6 +590,21 @@ int __sk_receive_skb(struct sock *sk, str
|
||||
}
|
||||
EXPORT_SYMBOL(__sk_receive_skb);
|
||||
|
||||
+u64 __sock_gen_cookie(struct sock *sk)
|
||||
+{
|
||||
+ while (1) {
|
||||
+ u64 res = atomic64_read(&sk->sk_cookie);
|
||||
+ u64 res = atomic64_read(&sk->sk_cookie);
|
||||
+
|
||||
+ if (res)
|
||||
+ return res;
|
||||
+ res = gen_cookie_next(&sock_cookie);
|
||||
+ atomic64_cmpxchg(&sk->sk_cookie, 0, res);
|
||||
+ if (!res) {
|
||||
+ u64 new = gen_cookie_next(&sock_cookie);
|
||||
+
|
||||
+ atomic64_cmpxchg(&sk->sk_cookie, res, new);
|
||||
+
|
||||
+ /* Another thread might have changed sk_cookie before us. */
|
||||
+ res = atomic64_read(&sk->sk_cookie);
|
||||
+ }
|
||||
+ return res;
|
||||
+}
|
||||
+
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
|
||||
u32));
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
|
||||
@@ -2188,9 +2202,11 @@ static void __sk_free(struct sock *sk)
|
||||
@@ -2238,9 +2255,11 @@ static void __sk_free(struct sock *sk)
|
||||
if (likely(sk->sk_net_refcnt))
|
||||
sock_inuse_add(sock_net(sk), -1);
|
||||
|
||||
@ -101,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <linux/inet_diag.h>
|
||||
#include <linux/sock_diag.h>
|
||||
|
||||
@@ -21,20 +20,6 @@ static int (*inet_rcv_compat)(struct sk_
|
||||
@@ -21,23 +20,6 @@ static int (*inet_rcv_compat)(struct sk_
|
||||
static DEFINE_MUTEX(sock_diag_table_mutex);
|
||||
static struct workqueue_struct *broadcast_wq;
|
||||
|
||||
@ -109,14 +113,17 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
-
|
||||
-u64 __sock_gen_cookie(struct sock *sk)
|
||||
-{
|
||||
- while (1) {
|
||||
- u64 res = atomic64_read(&sk->sk_cookie);
|
||||
- u64 res = atomic64_read(&sk->sk_cookie);
|
||||
-
|
||||
- if (res)
|
||||
- return res;
|
||||
- res = gen_cookie_next(&sock_cookie);
|
||||
- atomic64_cmpxchg(&sk->sk_cookie, 0, res);
|
||||
- if (!res) {
|
||||
- u64 new = gen_cookie_next(&sock_cookie);
|
||||
-
|
||||
- atomic64_cmpxchg(&sk->sk_cookie, res, new);
|
||||
-
|
||||
- /* Another thread might have changed sk_cookie before us. */
|
||||
- res = atomic64_read(&sk->sk_cookie);
|
||||
- }
|
||||
- return res;
|
||||
-}
|
||||
-
|
||||
int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie)
|
||||
|
Loading…
x
Reference in New Issue
Block a user