Linux 4.14.307
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.307 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi | 44 ++++++++++++++++++ arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi | 44 ++++++++++++++++++ arch/powerpc/boot/dts/fsl/t2081si-post.dtsi | 20 +++++++- drivers/net/wireless/marvell/mwifiex/sdio.c | 1 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 8 --- include/linux/nospec.h | 4 + include/linux/random.h | 6 +- kernel/time/alarmtimer.c | 33 +++++++++++-- lib/usercopy.c | 7 ++ 10 files changed, 153 insertions(+), 16 deletions(-)
Bitterblue Smith (1):
wifi: rtl8xxxu: gen2: Turn on the rate control
Dave Hansen (1):
uaccess: Add speculation barrier to copy_from_user()
Greg Kroah-Hartman (1):
Linux 4.14.307
Jason A. Donenfeld (1):
random: always mix cycle counter in add_latent_entropy()
Lukas Wunner (1):
wifi: mwifiex: Add missing compatible string for SD8787
Sean Anderson (2):
powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G
powerpc: dts: t208x: Disable 10G on MAC1 and MAC2
Thomas Gleixner (1):
alarmtimer: Prevent starvation by small intervals and SIG_IGN
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 14 -SUBLEVEL = 306 +SUBLEVEL = 307 EXTRAVERSION = NAME = Petit Gorille
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi new file +44 -0
44 lines not on this page · raw message
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi new file +44 -0
44 lines not on this page · raw message
arch/powerpc/boot/dts/fsl/t2081si-post.dtsi +18 -2
@@ -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; +};
drivers/net/wireless/marvell/mwifiex/sdio.c +1 -0
@@ -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" }, { }
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +2 -6
@@ -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)
include/linux/nospec.h +4 -0
@@ -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
include/linux/random.h +3 -3
@@ -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);
kernel/time/alarmtimer.c +29 -4
@@ -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 (); + +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); +} -return alarm_forward (alarm, base->gettime (), 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 ;
lib/usercopy.c +7 -0
@@ -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 nunsigned 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); }