This is the 4.14.307 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmP55/0ACgkQONu9yGCS aT5srxAAtxZRHC8JIePsfBadu54P6Qw06Eh3jH42zhYM39vR3BUiU6kK9w1uug+d yIGefwBkne3+qyflaJFSWDVS8CjiUO8+QhegjHK58E9Tn64MxOaTkwyJJUTwmlbx 7gUQ2F9QGMN+wDea2+JTEd9EgPmerZJHK6/7x3zD7598uJQRlhnJz9o9/WmwYEy0 IH1uuCHPzXJncCyZmfWedMbpEMHYkKjUwMrcK99xacpJXLAPDUIEHUdcUfSxKS+T 4FZRlEbykRdgZor9efrLOGY1hVi1AIOzOY1KeqcNt7c+MSXkMFIV7cWToQ6tkMfN poc7hwMRfqy+cdK8cLrmo6JI9QXTfR+MCb4yjadlkBqnaYKUd4Z2Hh82wY2hArzZ O9+/JNdciiQcgiFTo/nXYWs5ck3jaf6sz58DmD4wQzjuHO+806AHr0UWZkyx58fe MItDSumCXg91HRHpkjlRbVu6N+L6i/9/PExj3Xaiq2vRTSbzc8QQVBKXqQMMDe4c W4CEHpIHwazYkZnk+2JU2gqnMda2Ah26mYDQ0PebZerGA8FKVP14brqlhhevwpta 0Wrd1UEyALokK5ZHdGPv2YHmy5bJdTtrZRNs9ezNFpzeil8jIFFz98R8Pj6ZkHe6 57TV7q5kvZ91oDg8KFyUNoLfwHcPrt4xM3eHqiyUWvZBOb499zo= =HzRy -----END PGP SIGNATURE----- Merge 4.14.307 into android-4.14-q Changes in 4.14.307 wifi: rtl8xxxu: gen2: Turn on the rate control powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G random: always mix cycle counter in add_latent_entropy() powerpc: dts: t208x: Disable 10G on MAC1 and MAC2 alarmtimer: Prevent starvation by small intervals and SIG_IGN uaccess: Add speculation barrier to copy_from_user() wifi: mwifiex: Add missing compatible string for SD8787 Linux 4.14.307 Change-Id: I210b9d5fe107dc6f63e41788c78bed83e9e77c42 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
ef7460eabd
10 changed files with 153 additions and 16 deletions
2
Makefile
2
Makefile
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 14
|
||||
SUBLEVEL = 306
|
||||
SUBLEVEL = 307
|
||||
EXTRAVERSION =
|
||||
NAME = Petit Gorille
|
||||
|
||||
|
|
|
|||
44
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi
Normal file
44
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later
|
||||
/*
|
||||
* QorIQ FMan v3 10g port #2 device tree stub [ controller @ offset 0x400000 ]
|
||||
*
|
||||
* Copyright 2022 Sean Anderson <sean.anderson@seco.com>
|
||||
* Copyright 2012 - 2015 Freescale Semiconductor Inc.
|
||||
*/
|
||||
|
||||
fman@400000 {
|
||||
fman0_rx_0x08: port@88000 {
|
||||
cell-index = <0x8>;
|
||||
compatible = "fsl,fman-v3-port-rx";
|
||||
reg = <0x88000 0x1000>;
|
||||
fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
fman0_tx_0x28: port@a8000 {
|
||||
cell-index = <0x28>;
|
||||
compatible = "fsl,fman-v3-port-tx";
|
||||
reg = <0xa8000 0x1000>;
|
||||
fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
ethernet@e0000 {
|
||||
cell-index = <0>;
|
||||
compatible = "fsl,fman-memac";
|
||||
reg = <0xe0000 0x1000>;
|
||||
fsl,fman-ports = <&fman0_rx_0x08 &fman0_tx_0x28>;
|
||||
ptp-timer = <&ptp_timer0>;
|
||||
pcsphy-handle = <&pcsphy0>;
|
||||
};
|
||||
|
||||
mdio@e1000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
|
||||
reg = <0xe1000 0x1000>;
|
||||
fsl,erratum-a011043; /* must ignore read errors */
|
||||
|
||||
pcsphy0: ethernet-phy@0 {
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
44
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi
Normal file
44
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-or-later
|
||||
/*
|
||||
* QorIQ FMan v3 10g port #3 device tree stub [ controller @ offset 0x400000 ]
|
||||
*
|
||||
* Copyright 2022 Sean Anderson <sean.anderson@seco.com>
|
||||
* Copyright 2012 - 2015 Freescale Semiconductor Inc.
|
||||
*/
|
||||
|
||||
fman@400000 {
|
||||
fman0_rx_0x09: port@89000 {
|
||||
cell-index = <0x9>;
|
||||
compatible = "fsl,fman-v3-port-rx";
|
||||
reg = <0x89000 0x1000>;
|
||||
fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
fman0_tx_0x29: port@a9000 {
|
||||
cell-index = <0x29>;
|
||||
compatible = "fsl,fman-v3-port-tx";
|
||||
reg = <0xa9000 0x1000>;
|
||||
fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
ethernet@e2000 {
|
||||
cell-index = <1>;
|
||||
compatible = "fsl,fman-memac";
|
||||
reg = <0xe2000 0x1000>;
|
||||
fsl,fman-ports = <&fman0_rx_0x09 &fman0_tx_0x29>;
|
||||
ptp-timer = <&ptp_timer0>;
|
||||
pcsphy-handle = <&pcsphy1>;
|
||||
};
|
||||
|
||||
mdio@e3000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,fman-memac-mdio", "fsl,fman-xmdio";
|
||||
reg = <0xe3000 0x1000>;
|
||||
fsl,erratum-a011043; /* must ignore read errors */
|
||||
|
||||
pcsphy1: ethernet-phy@0 {
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -631,8 +631,8 @@
|
|||
/include/ "qoriq-bman1.dtsi"
|
||||
|
||||
/include/ "qoriq-fman3-0.dtsi"
|
||||
/include/ "qoriq-fman3-0-1g-0.dtsi"
|
||||
/include/ "qoriq-fman3-0-1g-1.dtsi"
|
||||
/include/ "qoriq-fman3-0-10g-2.dtsi"
|
||||
/include/ "qoriq-fman3-0-10g-3.dtsi"
|
||||
/include/ "qoriq-fman3-0-1g-2.dtsi"
|
||||
/include/ "qoriq-fman3-0-1g-3.dtsi"
|
||||
/include/ "qoriq-fman3-0-1g-4.dtsi"
|
||||
|
|
@ -681,3 +681,19 @@
|
|||
interrupts = <16 2 1 9>;
|
||||
};
|
||||
};
|
||||
|
||||
&fman0_rx_0x08 {
|
||||
/delete-property/ fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
&fman0_tx_0x28 {
|
||||
/delete-property/ fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
&fman0_rx_0x09 {
|
||||
/delete-property/ fsl,fman-10g-port;
|
||||
};
|
||||
|
||||
&fman0_tx_0x29 {
|
||||
/delete-property/ fsl,fman-10g-port;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ static struct memory_type_mapping mem_type_mapping_tbl[] = {
|
|||
};
|
||||
|
||||
static const struct of_device_id mwifiex_sdio_of_match_table[] = {
|
||||
{ .compatible = "marvell,sd8787" },
|
||||
{ .compatible = "marvell,sd8897" },
|
||||
{ .compatible = "marvell,sd8997" },
|
||||
{ }
|
||||
|
|
|
|||
|
|
@ -4375,12 +4375,9 @@ void rtl8xxxu_gen1_report_connect(struct rtl8xxxu_priv *priv,
|
|||
void rtl8xxxu_gen2_report_connect(struct rtl8xxxu_priv *priv,
|
||||
u8 macid, bool connect)
|
||||
{
|
||||
#ifdef RTL8XXXU_GEN2_REPORT_CONNECT
|
||||
/*
|
||||
* Barry Day reports this causes issues with 8192eu and 8723bu
|
||||
* devices reconnecting. The reason for this is unclear, but
|
||||
* until it is better understood, leave the code in place but
|
||||
* disabled, so it is not lost.
|
||||
* The firmware turns on the rate control when it knows it's
|
||||
* connected to a network.
|
||||
*/
|
||||
struct h2c_cmd h2c;
|
||||
|
||||
|
|
@ -4393,7 +4390,6 @@ void rtl8xxxu_gen2_report_connect(struct rtl8xxxu_priv *priv,
|
|||
h2c.media_status_rpt.parm &= ~BIT(0);
|
||||
|
||||
rtl8xxxu_gen2_h2c_cmd(priv, &h2c, sizeof(h2c.media_status_rpt));
|
||||
#endif
|
||||
}
|
||||
|
||||
void rtl8xxxu_gen1_init_aggregation(struct rtl8xxxu_priv *priv)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@
|
|||
|
||||
struct task_struct;
|
||||
|
||||
#ifndef barrier_nospec
|
||||
# define barrier_nospec() do { } while (0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* array_index_mask_nospec() - generate a ~0 mask when index < size, 0 otherwise
|
||||
* @index: array element index
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@ void add_input_randomness(unsigned int type, unsigned int code,
|
|||
void add_interrupt_randomness(int irq) __latent_entropy;
|
||||
void add_hwgenerator_randomness(const void *buf, size_t len, size_t entropy);
|
||||
|
||||
#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
|
||||
static inline void add_latent_entropy(void)
|
||||
{
|
||||
#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
|
||||
add_device_randomness((const void *)&latent_entropy, sizeof(latent_entropy));
|
||||
}
|
||||
#else
|
||||
static inline void add_latent_entropy(void) { }
|
||||
add_device_randomness(NULL, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void get_random_bytes(void *buf, size_t len);
|
||||
size_t __must_check get_random_bytes_arch(void *buf, size_t len);
|
||||
|
|
|
|||
|
|
@ -476,11 +476,35 @@ u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(alarm_forward);
|
||||
|
||||
u64 alarm_forward_now(struct alarm *alarm, ktime_t interval)
|
||||
static u64 __alarm_forward_now(struct alarm *alarm, ktime_t interval, bool throttle)
|
||||
{
|
||||
struct alarm_base *base = &alarm_bases[alarm->type];
|
||||
ktime_t now = base->gettime();
|
||||
|
||||
return alarm_forward(alarm, base->gettime(), interval);
|
||||
if (IS_ENABLED(CONFIG_HIGH_RES_TIMERS) && throttle) {
|
||||
/*
|
||||
* Same issue as with posix_timer_fn(). Timers which are
|
||||
* periodic but the signal is ignored can starve the system
|
||||
* with a very small interval. The real fix which was
|
||||
* promised in the context of posix_timer_fn() never
|
||||
* materialized, but someone should really work on it.
|
||||
*
|
||||
* To prevent DOS fake @now to be 1 jiffie out which keeps
|
||||
* the overrun accounting correct but creates an
|
||||
* inconsistency vs. timer_gettime(2).
|
||||
*/
|
||||
ktime_t kj = NSEC_PER_SEC / HZ;
|
||||
|
||||
if (interval < kj)
|
||||
now = ktime_add(now, kj);
|
||||
}
|
||||
|
||||
return alarm_forward(alarm, now, interval);
|
||||
}
|
||||
|
||||
u64 alarm_forward_now(struct alarm *alarm, ktime_t interval)
|
||||
{
|
||||
return __alarm_forward_now(alarm, interval, false);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(alarm_forward_now);
|
||||
|
||||
|
|
@ -554,9 +578,10 @@ static enum alarmtimer_restart alarm_handle_timer(struct alarm *alarm,
|
|||
if (posix_timer_event(ptr, si_private) && ptr->it_interval) {
|
||||
/*
|
||||
* Handle ignored signals and rearm the timer. This will go
|
||||
* away once we handle ignored signals proper.
|
||||
* away once we handle ignored signals proper. Ensure that
|
||||
* small intervals cannot starve the system.
|
||||
*/
|
||||
ptr->it_overrun += alarm_forward_now(alarm, ptr->it_interval);
|
||||
ptr->it_overrun += __alarm_forward_now(alarm, ptr->it_interval, true);
|
||||
++ptr->it_requeue_pending;
|
||||
ptr->it_active = 1;
|
||||
result = ALARMTIMER_RESTART;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/nospec.h>
|
||||
|
||||
/* out-of-line parts */
|
||||
|
||||
|
|
@ -9,6 +10,12 @@ unsigned long _copy_from_user(void *to, const void __user *from, unsigned long n
|
|||
unsigned long res = n;
|
||||
might_fault();
|
||||
if (likely(access_ok(VERIFY_READ, from, n))) {
|
||||
/*
|
||||
* Ensure that bad access_ok() speculation will not
|
||||
* lead to nasty side effects *after* the copy is
|
||||
* finished:
|
||||
*/
|
||||
barrier_nospec();
|
||||
kasan_check_write(to, n);
|
||||
res = raw_copy_from_user(to, from, n);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue