-LINUX_VERSION-5.15 = .86
-LINUX_KERNEL_HASH-5.15.86 = 80fcd9efa443502de9e2750f6dfb59e8de43a5d87a6d2be09dca748d79b5f2ee
+LINUX_VERSION-5.15 = .87
+LINUX_KERNEL_HASH-5.15.87 = e7359bd2935b54fe8bb821cf748591c36a95bed019e752d3e4d5803d9da1ccb4
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
-@@ -3096,6 +3096,7 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -3098,6 +3098,7 @@ int spi_nor_scan(struct spi_nor *nor, co
struct device *dev = nor->dev;
struct mtd_info *mtd = &nor->mtd;
struct device_node *np = spi_nor_get_flash_node(nor);
int ret;
int i;
-@@ -3150,7 +3151,12 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -3152,7 +3153,12 @@ int spi_nor_scan(struct spi_nor *nor, co
if (ret)
return ret;
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1313,6 +1316,9 @@
+@@ -1316,6 +1319,9 @@
#define USB_VENDOR_ID_XAT 0x2505
#define USB_DEVICE_ID_XAT_CSR 0x0220
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
-@@ -1470,9 +1470,14 @@ static int veth_xdp_set(struct net_devic
+@@ -1471,9 +1471,14 @@ static int veth_xdp_set(struct net_devic
goto err;
}
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
-@@ -485,10 +485,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
+@@ -486,10 +486,14 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
*/
int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{
/* peripheral may have batched packets to us... */
while (likely(skb->len)) {
struct rndis_data_hdr *hdr = (void *)skb->data;
-@@ -523,10 +527,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
+@@ -524,10 +528,17 @@ int rndis_rx_fixup(struct usbnet *dev, s
break;
skb_pull(skb, msg_len - sizeof *hdr);
skb_trim(skb2, data_len);
return 1;
}
EXPORT_SYMBOL_GPL(rndis_rx_fixup);
-@@ -600,6 +611,17 @@ static const struct driver_info rndis_po
+@@ -601,6 +612,17 @@ static const struct driver_info rndis_po
.tx_fixup = rndis_tx_fixup,
};
/*-------------------------------------------------------------------------*/
static const struct usb_device_id products [] = {
-@@ -614,6 +636,16 @@ static const struct usb_device_id produc
+@@ -615,6 +637,16 @@ static const struct usb_device_id produc
USB_CLASS_COMM, 2 /* ACM */, 0x0ff),
.driver_info = (unsigned long)&rndis_info,
}, {
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
-@@ -418,10 +418,7 @@ generic_rndis_bind(struct usbnet *dev, s
+@@ -419,10 +419,7 @@ generic_rndis_bind(struct usbnet *dev, s
goto halt_fail_and_release;
}
/* set a nonzero filter to enable data transfers */
memset(u.set, 0, sizeof *u.set);
-@@ -463,6 +460,16 @@ static int rndis_bind(struct usbnet *dev
+@@ -464,6 +461,16 @@ static int rndis_bind(struct usbnet *dev
return generic_rndis_bind(dev, intf, FLAG_RNDIS_PHYM_NOT_WIRELESS);
}
void rndis_unbind(struct usbnet *dev, struct usb_interface *intf)
{
struct rndis_halt *halt;
-@@ -615,7 +622,7 @@ static const struct driver_info zte_rndi
+@@ -616,7 +623,7 @@ static const struct driver_info zte_rndi
.description = "ZTE RNDIS device",
.flags = FLAG_ETHER | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT,
.data = RNDIS_DRIVER_DATA_DST_MAC_FIXUP,
+++ /dev/null
-From e6866ed4219b8c7754dcd3eb1a654f6f524b0e56 Mon Sep 17 00:00:00 2001
-From: "Johnny S. Lee" <foss@jsl.io>
-Date: Thu, 15 Dec 2022 17:49:04 +0800
-Subject: [PATCH] net: dsa: mv88e6xxx: depend on PTP conditionally
-
-PTP hardware timestamping related objects are not linked when PTP
-support for MV88E6xxx (NET_DSA_MV88E6XXX_PTP) is disabled, therefore
-NET_DSA_MV88E6XXX should not depend on PTP_1588_CLOCK_OPTIONAL
-regardless of NET_DSA_MV88E6XXX_PTP.
-
-Instead, condition more strictly on how NET_DSA_MV88E6XXX_PTP's
-dependencies are met, making sure that it cannot be enabled when
-NET_DSA_MV88E6XXX=y and PTP_1588_CLOCK=m.
-
-In other words, this commit allows NET_DSA_MV88E6XXX to be built-in
-while PTP_1588_CLOCK is a module, as long as NET_DSA_MV88E6XXX_PTP is
-prevented from being enabled.
-
-Fixes: e5f31552674e ("ethernet: fix PTP_1588_CLOCK dependencies")
-Signed-off-by: Johnny S. Lee <foss@jsl.io>
----
- drivers/net/dsa/mv88e6xxx/Kconfig | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/net/dsa/mv88e6xxx/Kconfig
-+++ b/drivers/net/dsa/mv88e6xxx/Kconfig
-@@ -2,7 +2,6 @@
- config NET_DSA_MV88E6XXX
- tristate "Marvell 88E6xxx Ethernet switch fabric support"
- depends on NET_DSA
-- depends on PTP_1588_CLOCK_OPTIONAL
- select IRQ_DOMAIN
- select NET_DSA_TAG_EDSA
- select NET_DSA_TAG_DSA
-@@ -13,7 +12,8 @@ config NET_DSA_MV88E6XXX
- config NET_DSA_MV88E6XXX_PTP
- bool "PTP support for Marvell 88E6xxx"
- default n
-- depends on NET_DSA_MV88E6XXX && PTP_1588_CLOCK
-+ depends on (NET_DSA_MV88E6XXX = y && PTP_1588_CLOCK = y) || \
-+ (NET_DSA_MV88E6XXX = m && PTP_1588_CLOCK)
- help
- Say Y to enable PTP hardware timestamping on Marvell 88E6xxx switch
- chips that support it.
--- a/fs/locks.c
+++ b/fs/locks.c
-@@ -2929,6 +2929,8 @@ static const struct seq_operations locks
+@@ -2952,6 +2952,8 @@ static const struct seq_operations locks
static int __init proc_locks_init(void)
{
return !!nor->params->erase_map.uniform_erase_type;
}
-@@ -2389,6 +2391,7 @@ static int spi_nor_select_erase(struct s
+@@ -2391,6 +2393,7 @@ static int spi_nor_select_erase(struct s
{
struct spi_nor_erase_map *map = &nor->params->erase_map;
const struct spi_nor_erase_type *erase = NULL;
struct mtd_info *mtd = &nor->mtd;
u32 wanted_size = nor->info->sector_size;
int i;
-@@ -2421,8 +2424,9 @@ static int spi_nor_select_erase(struct s
+@@ -2423,8 +2426,9 @@ static int spi_nor_select_erase(struct s
*/
for (i = SNOR_ERASE_TYPE_MAX - 1; i >= 0; i--) {
if (map->erase_type[i].size) {
}
}
-@@ -2430,6 +2434,9 @@ static int spi_nor_select_erase(struct s
+@@ -2432,6 +2436,9 @@ static int spi_nor_select_erase(struct s
return -EINVAL;
mtd->erasesize = erase->size;
+};
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
-@@ -1857,6 +1857,7 @@ static const struct spi_nor_manufacturer
+@@ -1859,6 +1859,7 @@ static const struct spi_nor_manufacturer
&spi_nor_winbond,
&spi_nor_xilinx,
&spi_nor_xmc,
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2082,12 +2084,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2092,12 +2094,12 @@ static int packet_rcv(struct sk_buff *sk
unsigned int snaplen, res;
bool is_drop_n_account = false;
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -2213,12 +2215,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2223,12 +2225,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3329,6 +3331,7 @@ static int packet_create(struct net *net
+@@ -3339,6 +3341,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3969,6 +3972,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3979,6 +3982,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4025,6 +4038,13 @@ static int packet_getsockopt(struct sock
+@@ -4035,6 +4048,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
obj-$(CONFIG_QCOM_RPMHPD) += rpmhpd.o
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
-@@ -191,6 +191,13 @@ config QCOM_SOCINFO
+@@ -192,6 +192,13 @@ config QCOM_SOCINFO
Say yes here to support the Qualcomm socinfo driver, providing
information about the SoC to user space.
if (freq < min_freq) {
freq = min_freq;
-@@ -785,6 +786,7 @@ struct devfreq *devfreq_add_device(struc
+@@ -784,6 +785,7 @@ struct devfreq *devfreq_add_device(struc
{
struct devfreq *devfreq;
struct devfreq_governor *governor;
int err = 0;
if (!dev || !profile || !governor_name) {
-@@ -849,6 +851,8 @@ struct devfreq *devfreq_add_device(struc
+@@ -848,6 +850,8 @@ struct devfreq *devfreq_add_device(struc
goto err_dev;
}
devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
devfreq->opp_table = dev_pm_opp_get_opp_table(dev);
if (IS_ERR(devfreq->opp_table))
-@@ -1561,7 +1565,7 @@ static ssize_t min_freq_show(struct devi
+@@ -1559,7 +1563,7 @@ static ssize_t min_freq_show(struct devi
unsigned long min_freq, max_freq;
mutex_lock(&df->lock);
mutex_unlock(&df->lock);
return sprintf(buf, "%lu\n", min_freq);
-@@ -1615,7 +1619,7 @@ static ssize_t max_freq_show(struct devi
+@@ -1613,7 +1617,7 @@ static ssize_t max_freq_show(struct devi
unsigned long min_freq, max_freq;
mutex_lock(&df->lock);
mutex_unlock(&df->lock);
return sprintf(buf, "%lu\n", max_freq);
-@@ -1929,7 +1933,7 @@ static int devfreq_summary_show(struct s
+@@ -1927,7 +1931,7 @@ static int devfreq_summary_show(struct s
mutex_lock(&devfreq->lock);
cur_freq = devfreq->previous_freq;
struct thermal_cooling_device;
/**
-@@ -288,6 +289,11 @@ struct devfreq_simple_ondemand_data {
+@@ -289,6 +290,11 @@ struct devfreq_simple_ondemand_data {
#endif
#if IS_ENABLED(CONFIG_DEVFREQ_GOV_PASSIVE)
/**
* struct devfreq_passive_data - ``void *data`` fed to struct devfreq
* and devfreq_add_device
-@@ -299,8 +305,11 @@ struct devfreq_simple_ondemand_data {
+@@ -300,8 +306,11 @@ struct devfreq_simple_ondemand_data {
* using governors except for passive governor.
* If the devfreq device has the specific method to decide
* the next frequency, should use this callback.
*
* The devfreq_passive_data have to set the devfreq instance of parent
* device with governors except for the passive governor. But, don't need to
-@@ -314,9 +323,13 @@ struct devfreq_passive_data {
+@@ -315,9 +324,13 @@ struct devfreq_passive_data {
/* Optional callback to decide the next frequency of passvice device */
int (*get_target_freq)(struct devfreq *this, unsigned long *freq);
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
-@@ -309,7 +309,7 @@ enum devfreq_parent_dev_type {
+@@ -310,7 +310,7 @@ enum devfreq_parent_dev_type {
* @this: the devfreq instance of own device.
* @nb: the notifier block for DEVFREQ_TRANSITION_NOTIFIER or
* CPUFREQ_TRANSITION_NOTIFIER list.
*
* The devfreq_passive_data have to set the devfreq instance of parent
* device with governors except for the passive governor. But, don't need to
-@@ -329,7 +329,7 @@ struct devfreq_passive_data {
+@@ -330,7 +330,7 @@ struct devfreq_passive_data {
/* For passive governor's internal use. Don't need to set them */
struct devfreq *this;
struct notifier_block nb;
devfreq->stats.total_trans++;
}
-@@ -835,6 +831,9 @@ struct devfreq *devfreq_add_device(struc
+@@ -834,6 +830,9 @@ struct devfreq *devfreq_add_device(struc
if (err < 0)
goto err_dev;
mutex_lock(&devfreq->lock);
}
devfreq->scaling_min_freq = find_available_min_freq(devfreq);
-@@ -870,8 +869,8 @@ struct devfreq *devfreq_add_device(struc
+@@ -869,8 +868,8 @@ struct devfreq *devfreq_add_device(struc
devfreq->stats.trans_table = devm_kzalloc(&devfreq->dev,
array3_size(sizeof(unsigned int),
GFP_KERNEL);
if (!devfreq->stats.trans_table) {
mutex_unlock(&devfreq->lock);
-@@ -880,7 +879,7 @@ struct devfreq *devfreq_add_device(struc
+@@ -879,7 +878,7 @@ struct devfreq *devfreq_add_device(struc
}
devfreq->stats.time_in_state = devm_kcalloc(&devfreq->dev,
sizeof(*devfreq->stats.time_in_state),
GFP_KERNEL);
if (!devfreq->stats.time_in_state) {
-@@ -1639,9 +1638,9 @@ static ssize_t available_frequencies_sho
+@@ -1637,9 +1636,9 @@ static ssize_t available_frequencies_sho
mutex_lock(&df->lock);
mutex_unlock(&df->lock);
/* Truncate the trailing space */
-@@ -1664,7 +1663,7 @@ static ssize_t trans_stat_show(struct de
+@@ -1662,7 +1661,7 @@ static ssize_t trans_stat_show(struct de
if (!df->profile)
return -EINVAL;
if (max_state == 0)
return sprintf(buf, "Not Supported.\n");
-@@ -1681,19 +1680,17 @@ static ssize_t trans_stat_show(struct de
+@@ -1679,19 +1678,17 @@ static ssize_t trans_stat_show(struct de
len += sprintf(buf + len, " :");
for (i = 0; i < max_state; i++)
len += sprintf(buf + len, "%10lu",
for (j = 0; j < max_state; j++)
len += sprintf(buf + len, "%10u",
df->stats.trans_table[(i * max_state) + j]);
-@@ -1717,7 +1714,7 @@ static ssize_t trans_stat_store(struct d
+@@ -1715,7 +1712,7 @@ static ssize_t trans_stat_store(struct d
if (!df->profile)
return -EINVAL;
return count;
err = kstrtoint(buf, 10, &value);
-@@ -1725,11 +1722,11 @@ static ssize_t trans_stat_store(struct d
+@@ -1723,11 +1720,11 @@ static ssize_t trans_stat_store(struct d
return -EINVAL;
mutex_lock(&df->lock);
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
-@@ -931,8 +931,9 @@ struct devfreq *devfreq_add_device(struc
+@@ -930,8 +930,9 @@ struct devfreq *devfreq_add_device(struc
err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
NULL);
if (err) {
obj-$(CONFIG_QCOM_RPMHPD) += rpmhpd.o
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
-@@ -191,6 +191,13 @@ config QCOM_SOCINFO
+@@ -192,6 +192,13 @@ config QCOM_SOCINFO
Say yes here to support the Qualcomm socinfo driver, providing
information about the SoC to user space.
+};
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
-@@ -1841,6 +1841,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
+@@ -1843,6 +1843,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
static const struct spi_nor_manufacturer *manufacturers[] = {
&spi_nor_atmel,