/* For userspace: you can also call me... */
#define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
-@@ -233,12 +234,12 @@ extern void cleanup_module(void);
+@@ -239,12 +240,12 @@ extern void cleanup_module(void);
* Author(s), use "Name <email>" or just "Name", for multiple
* authors use multiple MODULE_AUTHOR() statements/lines.
*/
/* Creates an alias so file2alias.c can find device table. */
#define MODULE_DEVICE_TABLE(type, name) \
extern typeof(name) __mod_##type##__##name##_device_table \
-@@ -265,7 +266,9 @@ extern typeof(name) __mod_##type##__##na
+@@ -271,7 +272,9 @@ extern typeof(name) __mod_##type##__##na
*/
#if defined(MODULE) || !defined(CONFIG_SYSFS)
#else
#define MODULE_VERSION(_version) \
MODULE_INFO(version, _version); \
-@@ -288,7 +291,7 @@ extern typeof(name) __mod_##type##__##na
+@@ -294,7 +297,7 @@ extern typeof(name) __mod_##type##__##na
/* Optional firmware file (or files) needed by the module
* format is simply firmware file name. Multiple firmware
* files require multiple MODULE_FIRMWARE() specifiers */
--- a/kernel/module/Kconfig
+++ b/kernel/module/Kconfig
-@@ -389,4 +389,11 @@ config MODULES_TREE_LOOKUP
+@@ -401,4 +401,11 @@ config MODULES_TREE_LOOKUP
def_bool y
depends on PERF_EVENTS || TRACING || CFI_CLANG
endif # MODULES
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
-@@ -997,6 +997,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
+@@ -999,6 +999,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
static const char vermagic[] = VERMAGIC_STRING;
int try_to_force_load(struct module *mod, const char *reason)
{
#ifdef CONFIG_MODULE_FORCE_LOAD
-@@ -1008,6 +1009,7 @@ int try_to_force_load(struct module *mod
+@@ -1010,6 +1011,7 @@ int try_to_force_load(struct module *mod
return -ENOEXEC;
#endif
}
/* 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
+@@ -2093,9 +2095,11 @@ static void module_augment_kernel_taints
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL;
-@@ -2091,6 +2095,7 @@ static int check_modinfo(struct module *
+@@ -2109,6 +2113,7 @@ static int check_modinfo(struct module *
info->name, modmagic, vermagic);
return -ENOEXEC;
}
if (err)
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
-@@ -1666,7 +1666,9 @@ static void read_symbols(const char *mod
+@@ -1601,7 +1601,9 @@ static void read_symbols(const char *mod
symname = remove_dot(info.strtab + sym->st_name);
handle_symbol(mod, &info, sym, symname);
}
check_sec_ref(mod, &info);
-@@ -1839,8 +1841,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");
-+#ifndef CONFIG_MODULE_STRIPPED
- buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
- buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n");
-+#endif
- buf_printf(b, "\n");
- buf_printf(b, "__visible struct module __this_module\n");
- buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
-@@ -1854,8 +1858,10 @@ static void add_header(struct buffer *b,
- buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n");
- buf_printf(b, "};\n");
-
-+#ifndef CONFIG_MODULE_STRIPPED
- if (!external_module)
- buf_printf(b, "\nMODULE_INFO(intree, \"Y\");\n");
-+#endif
-
- buf_printf(b,
- "\n"
-@@ -1863,8 +1869,10 @@ static void add_header(struct buffer *b,
- "MODULE_INFO(retpoline, \"Y\");\n"
- "#endif\n");
-
-+#ifndef CONFIG_MODULE_STRIPPED
- if (strstarts(mod->name, "drivers/staging"))
- buf_printf(b, "\nMODULE_INFO(staging, \"Y\");\n");
-+#endif
-
- if (strstarts(mod->name, "tools/testing"))
- buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n");
-@@ -1974,11 +1982,13 @@ static void add_depends(struct buffer *b
+@@ -1886,11 +1888,13 @@ static void add_depends(struct buffer *b
static void add_srcversion(struct buffer *b, struct module *mod)
{
}
static void write_buf(struct buffer *b, const char *fname)
-@@ -2061,7 +2071,9 @@ static void write_mod_c_file(struct modu
+@@ -1973,7 +1977,9 @@ static void write_mod_c_file(struct modu
add_exported_symbols(&buf, mod);
add_versions(&buf, mod);
add_depends(&buf, mod);
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
-@@ -338,6 +338,9 @@ static int conf_askvalue(struct symbol *
+@@ -312,6 +312,9 @@ static int conf_askvalue(struct symbol *
}
/* fall through */
default:
fflush(stdout);
xfgets(line, sizeof(line), stdin);
break;
-@@ -520,6 +523,9 @@ static int conf_choice(struct menu *menu
+@@ -470,6 +473,9 @@ static void conf_choice(struct menu *men
}
/* fall through */
case oldaskconfig:
main(int argc, char **argv)
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
-@@ -9,7 +9,11 @@
+@@ -10,7 +10,11 @@
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
+#endif
#include "../../include/linux/module_symbol.h"
- #include "list.h"
+ #include <list_types.h>
{ {0x02, 0x21}, "lz4", unlz4 },
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
-@@ -460,10 +460,10 @@ quiet_cmd_bzip2_with_size = BZIP2 $@
+@@ -359,10 +359,10 @@ quiet_cmd_bzip2_with_size = BZIP2 $@
# ---------------------------------------------------------------------------
quiet_cmd_lzma = LZMA $@
+ tristate "SKCIPHER"
select CRYPTO_SKCIPHER2
select CRYPTO_ALGAPI
-
-@@ -91,7 +91,7 @@ config CRYPTO_SKCIPHER2
+ select CRYPTO_ECB
+@@ -92,7 +92,7 @@ config CRYPTO_SKCIPHER2
select CRYPTO_ALGAPI2
config CRYPTO_HASH
select CRYPTO_HASH2
select CRYPTO_ALGAPI
-@@ -100,7 +100,7 @@ config CRYPTO_HASH2
+@@ -101,7 +101,7 @@ config CRYPTO_HASH2
select CRYPTO_ALGAPI2
config CRYPTO_RNG
bool
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -460,16 +460,16 @@ config BCH_CONST_T
+@@ -457,16 +457,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH
config SND_SEQ_DEVICE
tristate
-@@ -40,7 +40,7 @@ config SND_UMP_LEGACY_RAWMIDI
- The device contains 16 substreams corresponding to UMP groups.
+@@ -57,7 +57,7 @@ config SND_CORE_TEST
+
config SND_COMPRESS_OFFLOAD
- tristate
bool
--- a/net/Kconfig
+++ b/net/Kconfig
-@@ -467,7 +467,7 @@ config NET_DEVLINK
+@@ -484,7 +484,7 @@ config NET_DEVLINK
default n
config PAGE_POOL
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -2002,7 +2002,7 @@ config PADATA
+@@ -2054,7 +2054,7 @@ config PADATA
bool
config ASN1
that can be interpreted by the ASN.1 stream decoder and used to
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -641,7 +641,7 @@ config LIBFDT
+@@ -642,7 +642,7 @@ config LIBFDT
bool
config OID_REGISTRY
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/property.h>
-@@ -3470,3 +3471,5 @@ static int __init regmap_initcall(void)
+@@ -3519,3 +3520,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
-@@ -148,15 +148,15 @@ config CRYPTO_MANAGER
+@@ -149,15 +149,15 @@ config CRYPTO_MANAGER
cbc(aes).
config CRYPTO_MANAGER2
tristate "Userspace cryptographic algorithm configuration"
--- a/crypto/algboss.c
+++ b/crypto/algboss.c
-@@ -204,6 +204,10 @@ static int cryptomgr_schedule_test(struc
+@@ -203,6 +203,10 @@ static int cryptomgr_schedule_test(struc
memcpy(param->alg, alg->cra_name, sizeof(param->alg));
param->type = alg->cra_flags;
--- a/lib/crypto/Kconfig
+++ b/lib/crypto/Kconfig
-@@ -15,7 +15,7 @@ config CRYPTO_LIB_AESGCM
+@@ -20,7 +20,7 @@ config CRYPTO_LIB_AESGCM
select CRYPTO_LIB_UTILS
config CRYPTO_LIB_ARC4
* @name: name of the struct -- the string is not copied internally
--- a/net/Makefile
+++ b/net/Makefile
-@@ -52,7 +52,7 @@ obj-$(CONFIG_TIPC) += tipc/
+@@ -51,7 +51,7 @@ obj-$(CONFIG_TIPC) += tipc/
obj-$(CONFIG_NETLABEL) += netlabel/
obj-$(CONFIG_IUCV) += iucv/
obj-$(CONFIG_SMC) += smc/
---
--- a/arch/mips/include/asm/r4kcache.h
+++ b/arch/mips/include/asm/r4kcache.h
-@@ -286,14 +286,46 @@ static inline void prot##extra##blast_##
+@@ -290,14 +290,46 @@ static inline void prot##extra##blast_##
unsigned long end) \
{ \
unsigned long lsize = cpu_##desc##_line_size(); \
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
-@@ -386,19 +386,8 @@ int add_mtd_blktrans_dev(struct mtd_blkt
+@@ -379,19 +379,8 @@ int add_mtd_blktrans_dev(struct mtd_blkt
if (new->readonly)
set_disk_ro(gd, 1);
out_free_tag_set:
blk_mq_free_tag_set(new->tag_set);
out_kfree_tag_set:
-@@ -408,6 +397,35 @@ out_list_del:
+@@ -401,6 +390,35 @@ out_list_del:
return ret;
}
unsigned long flags;
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -33,6 +33,7 @@
+@@ -34,6 +34,7 @@
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include "mtdcore.h"
-@@ -1127,6 +1128,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1132,6 +1133,8 @@ int mtd_device_parse_register(struct mtd
register_reboot_notifier(&mtd->reboot_notifier);
}
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -801,7 +801,8 @@ int add_mtd_device(struct mtd_info *mtd)
+@@ -803,7 +803,8 @@ int add_mtd_device(struct mtd_info *mtd)
mutex_unlock(&mtd_table_mutex);
#include <linux/err.h>
+#include <linux/of.h>
- /* debug macro */
- #if 0
-@@ -323,6 +324,68 @@ static int mtdpart_setup_real(char *s)
+ /* special size referring to all the remaining space in a partition */
+ #define SIZE_REMAINING ULLONG_MAX
+@@ -315,6 +316,68 @@ static int mtdpart_setup_real(char *s)
return 0;
}
/*
* Main function to be called from the MTD mapping driver/device to
* obtain the partitioning information. At this point the command line
-@@ -338,6 +401,7 @@ static int parse_cmdline_partitions(stru
+@@ -330,6 +393,7 @@ static int parse_cmdline_partitions(stru
int i, err;
struct cmdline_mtd_partition *part;
const char *mtd_id = master->name;
/* parse command line */
if (!cmdline_parsed) {
-@@ -382,6 +446,13 @@ static int parse_cmdline_partitions(stru
+@@ -374,6 +438,13 @@ static int parse_cmdline_partitions(stru
sizeof(*part->parts) * (part->num_parts - i));
i--;
}
--- a/include/linux/netdev_features.h
+++ b/include/linux/netdev_features.h
-@@ -243,10 +243,10 @@ static inline int find_next_netdev_featu
+@@ -235,10 +235,10 @@ static inline int find_next_netdev_featu
#define NETIF_F_UPPER_DISABLES NETIF_F_LRO
/* changeable features with no special hardware requirements */
depends on NETFILTER_ADVANCED
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
-@@ -163,6 +163,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
+@@ -168,6 +168,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CLASSIF
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
#include <net/netfilter/nf_flow_table.h>
#include <net/netfilter/nf_conntrack.h>
#include <net/netfilter/nf_conntrack_core.h>
-@@ -377,8 +376,7 @@ flow_offload_lookup(struct nf_flowtable
+@@ -373,8 +372,7 @@ flow_offload_lookup(struct nf_flowtable
}
EXPORT_SYMBOL_GPL(flow_offload_lookup);
void (*iter)(struct nf_flowtable *flowtable,
struct flow_offload *flow, void *data),
void *data)
-@@ -439,6 +437,7 @@ static void nf_flow_offload_gc_step(stru
+@@ -435,6 +433,7 @@ static void nf_flow_offload_gc_step(stru
nf_flow_offload_stats(flow_table, flow);
}
}
+#endif /* _XT_FLOWOFFLOAD_H */
--- a/include/net/netfilter/nf_flow_table.h
+++ b/include/net/netfilter/nf_flow_table.h
-@@ -293,6 +293,11 @@ void nf_flow_table_free(struct nf_flowta
+@@ -294,6 +294,11 @@ void nf_flow_table_free(struct nf_flowta
void flow_offload_teardown(struct flow_offload *flow);
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -157,8 +157,8 @@ static inline bool dev_xmit_complete(int
+@@ -159,8 +159,8 @@ static inline bool dev_xmit_complete(int
#if defined(CONFIG_HYPERV_NET)
# define LL_MAX_HEADER 128
--- a/net/sched/sch_fq_codel.c
+++ b/net/sched/sch_fq_codel.c
-@@ -471,7 +471,11 @@ static int fq_codel_init(struct Qdisc *s
+@@ -480,7 +480,11 @@ static int fq_codel_init(struct Qdisc *s
sch->limit = 10*1024;
q->flows_cnt = 1024;
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
-@@ -2682,7 +2682,7 @@ int nf_conntrack_init_start(void)
+@@ -2631,7 +2631,7 @@ int nf_conntrack_init_start(void)
if (!nf_conntrack_htable_size) {
nf_conntrack_htable_size
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -66,6 +66,80 @@ config SFP
+@@ -77,6 +77,80 @@ config SFP
depends on HWMON || HWMON=n
select MDIO_I2C
config AIR_EN8811H_PHY
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
-@@ -26,6 +26,21 @@ libphy-$(CONFIG_LED_TRIGGER_PHY) += phy_
+@@ -27,6 +27,21 @@ libphy-$(CONFIG_OPEN_ALLIANCE_HELPERS) +
obj-$(CONFIG_PHYLINK) += phylink.o
obj-$(CONFIG_PHYLIB) += libphy.o
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -3405,6 +3405,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -3541,6 +3541,9 @@ static int mv88e6xxx_setup_port(struct m
else
reg = 1 << port;
--- a/drivers/net/phy/aquantia/aquantia_main.c
+++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -96,6 +96,29 @@
+@@ -97,6 +97,29 @@
#define AQR107_OP_IN_PROG_SLEEP 1000
#define AQR107_OP_IN_PROG_TIMEOUT 100000
static int aqr107_get_sset_count(struct phy_device *phydev)
{
return AQR107_SGMII_STAT_SZ;
-@@ -202,6 +225,51 @@ static int aqr_config_aneg(struct phy_de
+@@ -203,6 +226,51 @@ static int aqr_config_aneg(struct phy_de
return genphy_c45_check_and_restart_aneg(phydev, changed);
}
static int aqr_config_intr(struct phy_device *phydev)
{
bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
-@@ -854,7 +922,7 @@ static struct phy_driver aqr_driver[] =
+@@ -972,7 +1040,7 @@ static struct phy_driver aqr_driver[] =
PHY_ID_MATCH_MODEL(PHY_ID_AQR112),
.name = "Aquantia AQR112",
.probe = aqr107_probe,
.config_intr = aqr_config_intr,
.handle_interrupt = aqr_handle_interrupt,
.get_tunable = aqr107_get_tunable,
-@@ -877,7 +945,7 @@ static struct phy_driver aqr_driver[] =
+@@ -995,7 +1063,7 @@ static struct phy_driver aqr_driver[] =
PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
.name = "Aquantia AQR412",
.probe = aqr107_probe,
--- a/drivers/net/phy/aquantia/aquantia_main.c
+++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -258,10 +258,16 @@ static int aqr_config_aneg_set_prot(stru
+@@ -259,10 +259,16 @@ static int aqr_config_aneg_set_prot(stru
phy_write_mmd(phydev, MDIO_MMD_VEND1, AQUANTIA_VND1_GSTART_RATE,
aquantia_syscfg[if_type].start_rate);
--- a/drivers/net/phy/aquantia/aquantia_main.c
+++ b/drivers/net/phy/aquantia/aquantia_main.c
-@@ -31,6 +31,8 @@
- #define PHY_ID_AQR113C 0x31c31c12
+@@ -32,6 +32,8 @@
#define PHY_ID_AQR114C 0x31c31c22
+ #define PHY_ID_AQR115C 0x31c31c33
#define PHY_ID_AQR813 0x31c31cb2
+#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)
-@@ -1061,6 +1063,30 @@ static struct phy_driver aqr_driver[] =
+@@ -1205,6 +1207,30 @@ static struct phy_driver aqr_driver[] =
.led_hw_control_get = aqr_phy_led_hw_control_get,
.led_polarity_set = aqr_phy_led_polarity_set,
},
};
module_phy_driver(aqr_driver);
-@@ -1081,6 +1107,8 @@ static struct mdio_device_id __maybe_unu
- { PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
+@@ -1226,6 +1252,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR114C) },
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR115C) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR813) },
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR112C) },
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR112R) },
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
-@@ -11,6 +11,7 @@
- #include <linux/mii.h>
+@@ -12,6 +12,7 @@
#include <linux/ethtool.h>
+ #include <linux/phy.h>
#include <linux/usb.h>
+#include <linux/of.h>
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/uaccess.h>
-@@ -7044,6 +7045,22 @@ static void rtl_tally_reset(struct r8152
+@@ -7046,6 +7047,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
}
static void r8152b_init(struct r8152 *tp)
{
u32 ocp_data;
-@@ -7085,6 +7102,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -7087,6 +7104,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
}
static void r8153_init(struct r8152 *tp)
-@@ -7225,6 +7244,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -7227,6 +7246,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW;
break;
}
}
static void r8153b_init(struct r8152 *tp)
-@@ -7307,6 +7328,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -7309,6 +7330,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */
+ return gpy_led_write(phydev);
}
- static int gpy_probe(struct phy_device *phydev)
+ static int gpy21x_config_init(struct phy_device *phydev)
#include <linux/bitfield.h>
#include <linux/module.h>
#include <linux/phy.h>
-@@ -53,6 +54,36 @@ static int mt7530_phy_config_init(struct
+@@ -50,6 +51,36 @@ static int mt7530_phy_config_init(struct
return 0;
}
static int mt7531_phy_config_init(struct phy_device *phydev)
{
mtk_gephy_config_init(phydev);
-@@ -65,6 +96,9 @@ static int mt7531_phy_config_init(struct
+@@ -62,6 +93,9 @@ static int mt7531_phy_config_init(struct
phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x13, 0x404);
phy_write_mmd(phydev, MDIO_MMD_VEND1, 0x14, 0x404);
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
-@@ -1084,6 +1084,11 @@ static const struct usb_device_id produc
+@@ -1076,6 +1076,11 @@ static const struct usb_device_id produc
USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x581d, USB_CLASS_VENDOR_SPEC, 1, 7),
.driver_info = (unsigned long)&qmi_wwan_info,
},
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0122)}, /* Quectel RG650V */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0125)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0306)}, /* Quectel EP06/EG06/EM06 */
-@@ -1091,6 +1096,7 @@ static const struct usb_device_id produc
+@@ -1083,6 +1088,7 @@ static const struct usb_device_id produc
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -1129,3 +1131,73 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -1187,3 +1189,73 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(dev_of_node(&chip->gpiodev->dev));
}
+#endif
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
-@@ -644,7 +644,10 @@ static inline struct gpio_desc *acpi_get
+@@ -628,7 +628,10 @@ static inline int devm_acpi_dev_add_driv
#if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
int gpiod_export_link(struct device *dev, const char *name,
struct gpio_desc *desc);
void gpiod_unexport(struct gpio_desc *desc);
-@@ -653,11 +656,25 @@ void gpiod_unexport(struct gpio_desc *de
+@@ -637,11 +640,25 @@ void gpiod_unexport(struct gpio_desc *de
#include <asm/errno.h>
struct gpio_desc *desc)
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
-@@ -558,7 +558,7 @@ static struct class gpio_class = {
- *
- * Returns zero on success, else an error.
+@@ -571,7 +571,7 @@ static struct class gpio_class = {
+ * Returns:
+ * 0 on success, or negative errno on failure.
*/
-int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
{
- struct gpio_chip *chip;
- struct gpio_device *gdev;
-@@ -620,6 +620,8 @@ int gpiod_export(struct gpio_desc *desc,
+ const char *ioname = NULL;
+ struct gpio_device *gdev;
+@@ -629,6 +629,8 @@ int gpiod_export(struct gpio_desc *desc,
offset = gpio_chip_hwgpio(desc);
- if (chip->names && chip->names[offset])
- ioname = chip->names[offset];
+ if (guard.gc->names && guard.gc->names[offset])
+ ioname = guard.gc->names[offset];
+ if (name)
+ ioname = name;
dev = device_create_with_groups(&gpio_class, &gdev->dev,
MKDEV(0, 0), data, gpio_groups,
-@@ -641,8 +643,21 @@ err_unlock:
+@@ -650,8 +652,21 @@ err_unlock:
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
return status;
}
--- a/net/Kconfig
+++ b/net/Kconfig
-@@ -129,6 +129,9 @@ source "net/mptcp/Kconfig"
+@@ -132,6 +132,9 @@ source "net/mptcp/Kconfig"
endif # if INET
+obj-$(CONFIG_SOCK_DIAG) += sock_diag.o
obj-y += net-sysfs.o
- obj-$(CONFIG_PAGE_POOL) += page_pool.o
- obj-$(CONFIG_PROC_FS) += net-procfs.o
+ obj-y += hotdata.o
+ obj-y += netdev_rx_queue.o
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -118,6 +118,7 @@
#include <linux/uaccess.h>
-@@ -150,6 +151,7 @@
+@@ -152,6 +153,7 @@
static DEFINE_MUTEX(proto_list_mutex);
static LIST_HEAD(proto_list);
static void sock_def_write_space_wfree(struct sock *sk);
static void sock_def_write_space(struct sock *sk);
-@@ -590,6 +592,21 @@ discard_and_relse:
+@@ -587,6 +589,21 @@ discard_and_relse:
}
EXPORT_SYMBOL(__sk_receive_skb);
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 *,
-@@ -2239,9 +2256,11 @@ static void __sk_free(struct sock *sk)
+@@ -2318,9 +2335,11 @@ static void __sk_free(struct sock *sk)
if (likely(sk->sk_net_refcnt))
sock_inuse_add(sock_net(sk), -1);
Support for PF_PACKET sockets monitoring interface used by the ss tool.
--- a/net/unix/Kconfig
+++ b/net/unix/Kconfig
-@@ -29,6 +29,7 @@ config AF_UNIX_OOB
+@@ -24,6 +24,7 @@ config AF_UNIX_OOB
config UNIX_DIAG
tristate "UNIX: socket monitoring interface"
depends on UNIX
--- a/fs/locks.c
+++ b/fs/locks.c
-@@ -2895,6 +2895,8 @@ static const struct seq_operations locks
+@@ -2971,6 +2971,8 @@ static const struct seq_operations locks
static int __init proc_locks_init(void)
{
depends on PROC_FS
--- a/fs/proc/consoles.c
+++ b/fs/proc/consoles.c
-@@ -107,6 +107,9 @@ static const struct seq_operations conso
+@@ -110,6 +110,9 @@ static const struct seq_operations conso
static int __init proc_consoles_init(void)
{
IPC_SEM_IDS, sysvipc_sem_proc_show);
--- a/ipc/shm.c
+++ b/ipc/shm.c
-@@ -154,6 +154,8 @@ pure_initcall(ipc_ns_init);
+@@ -155,6 +155,8 @@ pure_initcall(ipc_ns_init);
void __init shm_init(void)
{
}
--- a/kernel/irq/proc.c
+++ b/kernel/irq/proc.c
-@@ -341,6 +341,9 @@ void register_irq_proc(unsigned int irq,
+@@ -339,6 +339,9 @@ void register_irq_proc(unsigned int irq,
void __maybe_unused *irqp = (void *)(unsigned long) irq;
char name [MAX_NAMELEN];
if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip))
return;
-@@ -394,6 +397,9 @@ void unregister_irq_proc(unsigned int ir
+@@ -397,6 +400,9 @@ void unregister_irq_proc(unsigned int ir
{
char name [MAX_NAMELEN];
if (!root_irq_dir || !desc->dir)
return;
#ifdef CONFIG_SMP
-@@ -432,6 +438,9 @@ void init_irq_proc(void)
+@@ -435,6 +441,9 @@ void init_irq_proc(void)
unsigned int irq;
struct irq_desc *desc;
if (!root_irq_dir)
--- a/kernel/time/timer_list.c
+++ b/kernel/time/timer_list.c
-@@ -350,6 +350,8 @@ static int __init init_timer_list_procfs
+@@ -354,6 +354,8 @@ static int __init init_timer_list_procfs
{
struct proc_dir_entry *pe;
if (!pe)
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
-@@ -4448,6 +4448,8 @@ static const struct seq_operations vmall
-
- static int __init proc_vmalloc_init(void)
+@@ -5032,6 +5032,8 @@ static int __init proc_vmalloc_init(void
{
+ void *priv_data = NULL;
+
+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
+ return 0;
if (IS_ENABLED(CONFIG_NUMA))
- proc_create_seq_private("vmallocinfo", 0400, NULL,
- &vmalloc_op,
+ priv_data = kmalloc(nr_node_ids * sizeof(unsigned int), GFP_KERNEL);
+
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
-@@ -2136,10 +2136,12 @@ void __init init_mm_internals(void)
+@@ -2195,10 +2195,12 @@ void __init init_mm_internals(void)
start_shepherd_timer();
#endif
#ifdef CONFIG_PROC_FS
goto err;
--- a/net/core/net-procfs.c
+++ b/net/core/net-procfs.c
-@@ -327,10 +327,12 @@ static int __net_init dev_proc_net_init(
+@@ -295,10 +295,12 @@ static int __net_init dev_proc_net_init(
if (!proc_create_net("dev", 0444, net->proc_net, &dev_seq_ops,
sizeof(struct seq_net_private)))
goto out;
sizeof(struct seq_net_private)))
goto out_softnet;
-@@ -340,9 +342,11 @@ static int __net_init dev_proc_net_init(
+@@ -308,9 +310,11 @@ static int __net_init dev_proc_net_init(
out:
return rc;
out_ptype:
out_dev:
remove_proc_entry("dev", net->proc_net);
goto out;
-@@ -352,8 +356,10 @@ static void __net_exit dev_proc_net_exit
+@@ -320,8 +324,10 @@ static void __net_exit dev_proc_net_exit
{
wext_proc_exit(net);
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -4140,6 +4140,8 @@ static __net_initdata struct pernet_oper
+@@ -4248,6 +4248,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
--- a/net/ipv4/proc.c
+++ b/net/ipv4/proc.c
-@@ -557,5 +557,8 @@ static __net_initdata struct pernet_oper
+@@ -563,5 +563,8 @@ static __net_initdata struct pernet_oper
int __init ip_misc_proc_init(void)
{
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -381,6 +381,9 @@ static struct pernet_operations ip_rt_pr
+@@ -378,6 +378,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
--- a/net/ipv4/inet_timewait_sock.c
+++ b/net/ipv4/inet_timewait_sock.c
-@@ -266,7 +266,7 @@ void __inet_twsk_schedule(struct inet_ti
+@@ -296,7 +296,7 @@ void __inet_twsk_schedule(struct inet_ti
*/
if (!rearm) {
+dma-shared-buffer-objs := $(dma-buf-objs-y)
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
-@@ -1731,4 +1731,5 @@ static void __exit dma_buf_deinit(void)
+@@ -1743,4 +1743,5 @@ static void __exit dma_buf_deinit(void)
kern_unmount(dma_buf_mnt);
dma_buf_uninit_sysfs_statistics();
}
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -4483,6 +4483,7 @@ int wake_up_state(struct task_struct *p,
+@@ -4419,6 +4419,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
lib/kobject_uevent.c | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+)
+--- a/include/linux/kobject.h
++++ b/include/linux/kobject.h
+@@ -219,4 +219,6 @@ int kobject_synth_uevent(struct kobject
+ __printf(2, 3)
+ int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
+
++u64 uevent_next_seqnum(void);
++
+ #endif /* _KOBJECT_H_ */
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
-@@ -179,6 +179,18 @@ out:
+@@ -178,6 +178,18 @@ out:
return r;
}
+ u64 seq;
+
+ mutex_lock(&uevent_sock_mutex);
-+ seq = ++uevent_seqnum;
++ seq = atomic64_inc_return(&uevent_seqnum);
+ mutex_unlock(&uevent_sock_mutex);
+
+ return seq;
#ifdef CONFIG_UEVENT_HELPER
/* path to the userspace helper executed on an event */
extern char uevent_helper[];
-@@ -219,4 +221,7 @@ int kobject_synth_uevent(struct kobject
- __printf(2, 3)
- int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
+@@ -221,4 +223,7 @@ int add_uevent_var(struct kobj_uevent_en
+
+ u64 uevent_next_seqnum(void);
+int broadcast_uevent(struct sk_buff *skb, __u32 pid, __u32 group,
+ gfp_t allocation);
#endif /* _KOBJECT_H_ */
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
-@@ -706,6 +706,43 @@ int add_uevent_var(struct kobj_uevent_en
+@@ -705,6 +705,43 @@ int add_uevent_var(struct kobj_uevent_en
EXPORT_SYMBOL_GPL(add_uevent_var);
#if defined(CONFIG_NET)
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
-@@ -1186,6 +1186,9 @@ int __init early_init_dt_scan_chosen(cha
+@@ -1052,6 +1052,9 @@ int __init early_init_dt_scan_chosen(cha
p = of_get_flat_dt_prop(node, "bootargs", &l);
if (p != NULL && l > 0)
strscpy(cmdline, p, min(l, COMMAND_LINE_SIZE));
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
-@@ -1657,7 +1657,7 @@ static void device_links_purge(struct de
+@@ -1653,7 +1653,7 @@ static void device_links_purge(struct de
#define FW_DEVLINK_FLAGS_RPM (FW_DEVLINK_FLAGS_ON | \
DL_FLAG_PM_RUNTIME)
--static u32 fw_devlink_flags = FW_DEVLINK_FLAGS_ON;
+-static u32 fw_devlink_flags = FW_DEVLINK_FLAGS_RPM;
+static u32 fw_devlink_flags = FW_DEVLINK_FLAGS_PERMISSIVE;
static int __init fw_devlink_setup(char *arg)
{