5.7.2-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 5.7.2-rc1 review
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.7.2-rc1
Oleg Nesterov <[email protected]>
uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
Josh Poimboeuf <[email protected]>
x86/speculation: Add Ivy Bridge to affected list
Mark Gross <[email protected]>
x86/speculation: Add SRBDS vulnerability and mitigation documentation
Mark Gross <[email protected]>
x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
Mark Gross <[email protected]>
x86/cpu: Add 'table' argument to cpu_matches()
Mark Gross <[email protected]>
x86/cpu: Add a steppings field to struct x86_cpu_id
Srinivas Kandagatla <[email protected]>
nvmem: qfprom: remove incorrect write support
Oliver Neukum <[email protected]>
CDC-ACM: heed quirk also in error handling
Pascal Terjan <[email protected]>
staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
Jiri Slaby <[email protected]>
tty: hvc_console, fix crashes on parallel open/close
Dmitry Torokhov <[email protected]>
vt: keyboard: avoid signed integer overflow in k_ascii
Josh Triplett <[email protected]>
serial: 8250: Enable 16550A variants by default on non-x86
Paul Cercueil <[email protected]>
usb: musb: jz4740: Prevent lockup when CONFIG_SMP is set
Dinghao Liu <[email protected]>
usb: musb: Fix runtime PM imbalance on error
Bin Liu <[email protected]>
usb: musb: start session in resume for host port
Fabrice Gasnier <[email protected]>
iio: adc: stm32-adc: fix a wrong error message when probing interrupts
Jonathan Cameron <[email protected]>
iio:chemical:pms7003: Fix timestamp alignment and prevent data leak.
Mathieu Othacehe <[email protected]>
iio: vcnl4000: Fix i2c swapped word reading.
Jonathan Cameron <[email protected]>
iio:chemical:sps30: Fix timestamp alignment
Johan Hovold <[email protected]>
USB: serial: ch341: fix lockup of devices with limited prescaler
Michael Hanselmann <[email protected]>
USB: serial: ch341: add basis for quirk detection
Daniele Palmas <[email protected]>
USB: serial: option: add Telit LE910C1-EUX compositions
Bin Liu <[email protected]>
USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
Matt Jolly <[email protected]>
USB: serial: qcserial: add DW5816e QDL support
-------------
Diffstat:
Documentation/ABI/testing/sysfs-devices-system-cpu | 1 + Documentation/admin-guide/hw-vuln/index.rst | 1 + .../special-register-buffer-data-sampling.rst | 149 +++++++++++++++++++++ Documentation/admin-guide/kernel-parameters.txt | 20 +++ Makefile | 4 +- arch/x86/include/asm/cpu_device_id.h | 27 +++- arch/x86/include/asm/cpufeatures.h | 2 + arch/x86/include/asm/msr-index.h | 4 + arch/x86/kernel/cpu/bugs.c | 106 +++++++++++++++ arch/x86/kernel/cpu/common.c | 56 ++++++-- arch/x86/kernel/cpu/cpu.h | 1 + arch/x86/kernel/cpu/match.c | 7 +- drivers/base/cpu.c | 8 ++ drivers/iio/adc/stm32-adc-core.c | 34 ++--- drivers/iio/chemical/pms7003.c | 17 ++- drivers/iio/chemical/sps30.c | 9 +- drivers/iio/light/vcnl4000.c | 6 +- drivers/nvmem/qfprom.c | 14 -- drivers/staging/rtl8712/wifi.h | 9 +- drivers/tty/hvc/hvc_console.c | 23 ++-- drivers/tty/serial/8250/Kconfig | 1 + drivers/tty/vt/keyboard.c | 26 ++-- drivers/usb/class/cdc-acm.c | 2 +- drivers/usb/musb/jz4740.c | 4 +- drivers/usb/musb/musb_core.c | 7 + drivers/usb/musb/musb_debugfs.c | 10 +- drivers/usb/serial/ch341.c | 68 +++++++++- drivers/usb/serial/option.c | 4 + drivers/usb/serial/qcserial.c | 1 + drivers/usb/serial/usb_wwan.c | 4 + include/linux/mod_devicetable.h | 2 + kernel/events/uprobes.c | 16 ++- 32 files changed, 532 insertions(+), 111 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/24 USB: serial: qcserial: add DW5816e QDL support
From: Matt Jolly <[email protected]>
commit 3429444abdd9dbd5faebd9bee552ec6162b17ad6 upstream.
Add support for Dell Wireless 5816e Download Mode (AKA boot & hold mode / QDL download mode) to drivers/usb/serial/qcserial.c
This is required to update device firmware.
--- drivers/usb/serial/qcserial.c | 1 + 1 file changed, 1 insertion(+)
drivers/usb/serial/qcserial.c +1 -0
@@ -173,6 +173,7 @@ static const struct usb_device_id id_tab {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */ {DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */ + {DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */ {DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */ {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */ {DEVICE_SWI(0x413c, 0x81d0)}, /* Dell Wireless 5819 */
Greg Kroah-Hartman
maintainerPATCH 2/24 USB: serial: usb_wwan: do not resubmit rx urb on fatal errors
In reply to Greg Kroah-HartmanFrom: Bin Liu <[email protected]>
commit 986c1748c84d7727defeaeca74a73b37f7d5cce1 upstream.
usb_wwan_indat_callback() shouldn't resubmit rx urb if the previous urb status is a fatal error. Or the usb controller would keep processing the new urbs then run into interrupt storm, and has no chance to recover.
--- drivers/usb/serial/usb_wwan.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/usb/serial/usb_wwan.c +4 -0
@@ -270,6 +270,10 @@ static void usb_wwan_indat_callback(struif (status) {dev_dbg (dev,"%s: nonzero status: %d on endpoint %02x.\n" , __func__, status, endpoint); + +/* don't resubmit on fatal errors */ +if (status == -ESHUTDOWN || status == -ENOENT ) +return ; }else {if (urb->actual_length) { tty_insert_flip_string(&port->port, data,
Greg Kroah-Hartman
maintainerPATCH 3/24 USB: serial: option: add Telit LE910C1-EUX compositions
In reply to Greg Kroah-HartmanFrom: Daniele Palmas <[email protected]>
commit 399ad9477c523f721f8e51d4f824bdf7267f120c upstream.
Add Telit LE910C1-EUX compositions:
0x1031: tty, tty, tty, rmnet 0x1033: tty, tty, tty, ecm
--- drivers/usb/serial/option.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/usb/serial/option.c +4 -0
@@ -1157,6 +1157,10 @@ static const struct usb_device_id option { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1031, 0xff), /* Telit LE910C1-EUX */ + .driver_info = NCTRL(0) | RSVD(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1033, 0xff), /* Telit LE910C1-EUX (ECM) */ + .driver_info = NCTRL(0) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG0), .driver_info = RSVD(0) | RSVD(1) | NCTRL(2) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE922_USBCFG1),
Greg Kroah-Hartman
maintainerPATCH 4/24 USB: serial: ch341: add basis for quirk detection
In reply to Greg Kroah-HartmanFrom: Michael Hanselmann <[email protected]>
commit c404bf4aa9236cb4d1068e499ae42acf48a6ff97 upstream.
A subset of CH341 devices does not support all features, namely the prescaler is limited to a reduced precision and there is no support for sending a RS232 break condition. This patch adds a detection function which will be extended to set quirk flags as they're implemented.
The author's affected device has an imprint of "340" on the turquoise-colored plug, but not all such devices appear to be affected.
[ johan: use long type for quirks; rephrase and use port device for
messages; handle short reads; set quirk flags directly in helper function ]
--- drivers/usb/serial/ch341.c | 53 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+)
drivers/usb/serial/ch341.c +53 -0
@@ -87,6 +87,7 @@ struct ch341_private {u8 mcr;u8 msr;u8 lcr; +unsigned long quirks; }; static void ch341_set_termios(struct tty_struct *tty,
@@ -308,6 +309,53 @@ out: kfree(buffer);return r; } +static int ch341_detect_quirks (struct usb_serial_port *port) +{ +struct ch341_private *priv =usb_get_serial_port_data (port); +struct usb_device *udev = port->serial->dev; +const unsigned int size =2 ; +unsigned long quirks =0 ; +char *buffer; +int r; + + buffer =kmalloc (size,GFP_KERNEL ); +if (!buffer) +return -ENOMEM ; + +/* +* A subset of CH34x devices does not support all features. The +* prescaler is limited and there is no support for sending a RS232 +* break condition. A read failure when trying to set up the latter is +* used to detect these devices. +*/ + r =usb_control_msg (udev,usb_rcvctrlpipe (udev,0 ),CH341_REQ_READ_REG , +USB_TYPE_VENDOR |USB_RECIP_DEVICE |USB_DIR_IN , +CH341_REG_BREAK ,0 , buffer, size,DEFAULT_TIMEOUT ); +if (r == -EPIPE ) { +dev_dbg (&port->dev,"break control not supported\n" ); + r =0 ; + goto out; + } + +if (r != size) { +if (r >=0 ) + r = -EIO ; +dev_err (&port->dev,"failed to read break control: %d\n" , r); + goto out; + } + + r =0 ; +out: +kfree (buffer); + +if (quirks) { +dev_dbg (&port->dev,"enabling quirk flags: 0x%02lx\n" , quirks); + priv->quirks |= quirks; + } + +return r; +} +static int ch341_port_probe (struct usb_serial_port *port) {struct ch341_private *priv;
@@ -330,6 +378,11 @@ static int ch341_port_probe(struct usb_s goto error;usb_set_serial_port_data (port, priv); + + r =ch341_detect_quirks (port); +if (r <0 ) + goto error; +return 0 ; error:kfree (priv);
Greg Kroah-Hartman
maintainerPATCH 5/24 USB: serial: ch341: fix lockup of devices with limited prescaler
In reply to Greg Kroah-HartmanFrom: Johan Hovold <[email protected]>
commit c432df155919582a3cefa35a8f86256c830fa9a4 upstream.
Michael Hanselmann reports that
[a] subset of all CH341 devices stop responding to bulk transfers, usually after the third byte, when the highest prescaler bit (0b100) is set. There is one exception, namely a prescaler of exactly 0b111 (fact=1, ps=3).
Fix this by forcing a lower base clock (fact = 0) whenever needed.
This specifically makes the standard rates 110, 134 and 200 bps work again with these devices.
--- drivers/usb/serial/ch341.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
drivers/usb/serial/ch341.c +12 -3
@@ -73,6 +73,8 @@#define CH341_LCR_CS6 0x01#define CH341_LCR_CS5 0x00 +#define CH341_QUIRK_LIMITED_PRESCALER BIT(0) +static const struct usb_device_id id_table[] = { {USB_DEVICE (0x4348 ,0x5523 ) }, {USB_DEVICE (0x1a86 ,0x7523 ) },
@@ -160,9 +162,11 @@ static const speed_t ch341_min_rates[] =* 2 <= div <= 256 if fact = 0, or * 9 <= div <= 256 if fact = 1 */ -static int ch341_get_divisor (speed_t speed) +static int ch341_get_divisor (struct ch341_private *priv) {unsigned int fact, div, clk_div; +speed_t speed = priv->baud_rate; +bool force_fact0 = false;int ps;/*
@@ -188,8 +192,12 @@ static int ch341_get_divisor(speed_t spe clk_div =CH341_CLK_DIV (ps, fact); div =CH341_CLKRATE / (clk_div * speed); +/* Some devices require a lower base clock if ps < 3. */ +if (ps <3 && (priv->quirks &CH341_QUIRK_LIMITED_PRESCALER )) + force_fact0 = true; +/* Halve base clock (fact = 0) if required. */ -if (div <9 || div >255 ) { +if (div <9 || div >255 || force_fact0) { div /=2 ; clk_div *=2 ; fact =0 ;
@@ -228,7 +236,7 @@ static int ch341_set_baudrate_lcr(structif (!priv->baud_rate)return -EINVAL ; - val =ch341_get_divisor (priv->baud_rate); + val =ch341_get_divisor (priv);if (val <0 )return -EINVAL ;
@@ -333,6 +341,7 @@ static int ch341_detect_quirks(struct us CH341_REG_BREAK, 0, buffer, size, DEFAULT_TIMEOUT);if (r == -EPIPE ) {dev_dbg (&port->dev,"break control not supported\n" ); + quirks =CH341_QUIRK_LIMITED_PRESCALER ; r =0 ; goto out; }
Greg Kroah-Hartman
maintainerPATCH 6/24 iio:chemical:sps30: Fix timestamp alignment
In reply to Greg Kroah-HartmanFrom: Jonathan Cameron <[email protected]>
commit a5bf6fdd19c327bcfd9073a8740fa19ca4525fd4 upstream.
One of a class of bugs pointed out by Lars in a recent review. iio_push_to_buffers_with_timestamp assumes the buffer used is aligned to the size of the timestamp (8 bytes). This is not guaranteed in this driver which uses an array of smaller elements on the stack.
--- drivers/iio/chemical/sps30.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/iio/chemical/sps30.c +6 -3
@@ -230,15 +230,18 @@ static irqreturn_t sps30_trigger_handlerstruct iio_dev *indio_dev = pf->indio_dev;struct sps30_state *state =iio_priv (indio_dev);int ret; -s32 data[4 +2 ];/* PM1, PM2P5, PM4, PM10, timestamp */ +struct { +s32 data[4 ];/* PM1, PM2P5, PM4, PM10 */ +s64 ts; + } scan;mutex_lock (&state->lock); - ret =sps30_do_meas (state, data,4 ); + ret =sps30_do_meas (state, scan.data,ARRAY_SIZE (scan.data));mutex_unlock (&state->lock);if (ret) goto err; -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, &scan,iio_get_time_ns (indio_dev)); err:iio_trigger_notify_done (indio_dev->trig);
Greg Kroah-Hartman
maintainerPATCH 7/24 iio: vcnl4000: Fix i2c swapped word reading.
In reply to Greg Kroah-HartmanFrom: Mathieu Othacehe <[email protected]>
commit 18dfb5326370991c81a6d1ed6d1aeee055cb8c05 upstream.
The bytes returned by the i2c reading need to be swapped unconditionally. Otherwise, on be16 platforms, an incorrect value will be returned.
Taking the slow path via next merge window as its been around a while and we have a patch set dependent on this which would be held up.
--- drivers/iio/light/vcnl4000.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/iio/light/vcnl4000.c +2 -4
@@ -219,7 +219,6 @@ static int vcnl4000_measure(struct vcnl4 u8 rdy_mask, u8 data_reg, int *val) { int tries = 20; -__be16 buf;int ret;mutex_lock (&data->vcnl4000_lock);
@@ -246,13 +245,12 @@ static int vcnl4000_measure(struct vcnl4 goto fail; } - ret =i2c_smbus_read_i2c_block_data (data->client, - data_reg,sizeof (buf), (u8 *) &buf); + ret =i2c_smbus_read_word_swapped (data->client, data_reg);if (ret <0 ) goto fail;mutex_unlock (&data->vcnl4000_lock); - *val =be16_to_cpu (buf); + *val = ret;return 0 ;
Greg Kroah-Hartman
maintainerPATCH 8/24 iio:chemical:pms7003: Fix timestamp alignment and prevent data leak.
In reply to Greg Kroah-HartmanFrom: Jonathan Cameron <[email protected]>
commit 13e945631c2ffb946c0af342812a3cd39227de6e upstream.
One of a class of bugs pointed out by Lars in a recent review. iio_push_to_buffers_with_timestamp assumes the buffer used is aligned to the size of the timestamp (8 bytes). This is not guaranteed in this driver which uses an array of smaller elements on the stack. As Lars also noted this anti pattern can involve a leak of data to userspace and that indeed can happen here. We close both issues by moving to a suitable structure in the iio_priv() data with alignment explicitly requested. This data is allocated with kzalloc so no data can leak appart from previous readings.
--- drivers/iio/chemical/pms7003.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)
drivers/iio/chemical/pms7003.c +12 -5
@@ -73,6 +73,11 @@ struct pms7003_state {struct pms7003_frame frame;struct completion frame_ready;struct mutex lock;/* must be held whenever state gets touched */ +/* Used to construct scan to push to the IIO buffer */ +struct { +u16 data[3 ];/* PM1, PM2P5, PM10 */ +s64 ts; + } scan; };static int pms7003_do_cmd (struct pms7003_state *state,enum pms7003_cmd cmd)
@@ -104,7 +109,6 @@ static irqreturn_t pms7003_trigger_handlstruct iio_dev *indio_dev = pf->indio_dev;struct pms7003_state *state =iio_priv (indio_dev);struct pms7003_frame *frame = &state->frame; -u16 data[3 +1 +4 ];/* PM1, PM2P5, PM10, padding, timestamp */ int ret;mutex_lock (&state->lock);
@@ -114,12 +118,15 @@ static irqreturn_t pms7003_trigger_handl goto err; } - data[PM1 ] =pms7003_get_pm (frame->data +PMS7003_PM1_OFFSET ); - data[PM2P5 ] =pms7003_get_pm (frame->data +PMS7003_PM2P5_OFFSET ); - data[PM10 ] =pms7003_get_pm (frame->data +PMS7003_PM10_OFFSET ); + state->scan.data[PM1 ] = +pms7003_get_pm (frame->data +PMS7003_PM1_OFFSET ); + state->scan.data[PM2P5 ] = +pms7003_get_pm (frame->data +PMS7003_PM2P5_OFFSET ); + state->scan.data[PM10 ] = +pms7003_get_pm (frame->data +PMS7003_PM10_OFFSET );mutex_unlock (&state->lock); -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, &state->scan,iio_get_time_ns (indio_dev)); err:iio_trigger_notify_done (indio_dev->trig);
Greg Kroah-Hartman
maintainerPATCH 9/24 iio: adc: stm32-adc: fix a wrong error message when probing interrupts
In reply to Greg Kroah-HartmanFrom: Fabrice Gasnier <[email protected]>
commit 10134ec3f8cefa6a40fe84987f1795e9e0da9715 upstream.
A wrong error message is printed out currently, like on STM32MP15:
- stm32-adc-core 48003000.adc: IRQ index 2 not found.
This is seen since commit 7723f4c5ecdb ("driver core: platform: Add an error message to platform_get_irq*()").
The STM32 ADC core driver wrongly requests up to 3 interrupt lines. It should request only the necessary IRQs, based on the compatible:
- stm32f4/h7 ADCs share a common interrupt
- stm32mp1, has one interrupt line per ADC.
So add the number of required interrupts to the compatible data.
--- drivers/iio/adc/stm32-adc-core.c | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-)
drivers/iio/adc/stm32-adc-core.c +14 -20
@@ -65,12 +65,14 @@ struct stm32_adc_priv;* @clk_sel: clock selection routine * @max_clk_rate_hz: maximum analog clock rate (Hz, from datasheet) * @has_syscfg: SYSCFG capability flags +* @num_irqs: number of interrupt lines */ struct stm32_adc_priv_cfg {const struct stm32_adc_common_regs *regs;int (*clk_sel)(struct platform_device *,struct stm32_adc_priv *);u32 max_clk_rate_hz;unsigned int has_syscfg; +unsigned int num_irqs; };/**
@@ -375,21 +377,15 @@ static int stm32_adc_irq_probe(struct plstruct device_node *np = pdev->dev.of_node;unsigned int i; -for (i =0 ; i <STM32_ADC_MAX_ADCS ; i++) { +/* +* Interrupt(s) must be provided, depending on the compatible: +* - stm32f4/h7 shares a common interrupt line. +* - stm32mp1, has one line per ADC +*/ +for (i =0 ; i < priv->cfg->num_irqs; i++) { priv->irq[i] =platform_get_irq (pdev, i); -if (priv->irq[i] <0 ) { -/* -* At least one interrupt must be provided, make others -* optional: -* - stm32f4/h7 shares a common interrupt. -* - stm32mp1, has one line per ADC (either for ADC1, -* ADC2 or both). -*/ -if (i && priv->irq[i] == -ENXIO ) -continue ; - +if (priv->irq[i] <0 )return priv->irq[i]; - } } priv->domain = irq_domain_add_simple(np, STM32_ADC_MAX_ADCS, 0,
@@ -400,9 +396,7 @@ static int stm32_adc_irq_probe(struct plreturn -ENOMEM ; } -for (i =0 ; i <STM32_ADC_MAX_ADCS ; i++) { -if (priv->irq[i] <0 ) -continue ; +for (i =0 ; i < priv->cfg->num_irqs; i++) {irq_set_chained_handler (priv->irq[i], stm32_adc_irq_handler);irq_set_handler_data (priv->irq[i], priv); }
@@ -420,11 +414,8 @@ static void stm32_adc_irq_remove(structirq_dispose_mapping (irq_find_mapping (priv->domain, hwirq));irq_domain_remove (priv->domain); -for (i =0 ; i <STM32_ADC_MAX_ADCS ; i++) { -if (priv->irq[i] <0 ) -continue ; +for (i =0 ; i < priv->cfg->num_irqs; i++)irq_set_chained_handler (priv->irq[i],NULL ); - } } static int stm32_adc_core_switches_supply_en(struct stm32_adc_priv *priv,
@@ -817,6 +808,7 @@ static const struct stm32_adc_priv_cfg s .regs = &stm32f4_adc_common_regs, .clk_sel = stm32f4_adc_clk_sel, .max_clk_rate_hz = 36000000, + .num_irqs = 1, };static const struct stm32_adc_priv_cfg stm32h7_adc_priv_cfg = {
@@ -824,6 +816,7 @@ static const struct stm32_adc_priv_cfg s .clk_sel = stm32h7_adc_clk_sel, .max_clk_rate_hz = 36000000, .has_syscfg = HAS_VBOOSTER, + .num_irqs = 1, };static const struct stm32_adc_priv_cfg stm32mp1_adc_priv_cfg = {
@@ -831,6 +824,7 @@ static const struct stm32_adc_priv_cfg s .clk_sel = stm32h7_adc_clk_sel, .max_clk_rate_hz = 40000000, .has_syscfg = HAS_VBOOSTER | HAS_ANASWVDD, + .num_irqs = 2, };static const struct of_device_id stm32_adc_of_match[] = {
Greg Kroah-Hartman
maintainerPATCH 10/24 usb: musb: start session in resume for host port
In reply to Greg Kroah-HartmanFrom: Bin Liu <[email protected]>
commit 7f88a5ac393f39319f69b8b20cc8d5759878d1a1 upstream.
Commit 17539f2f4f0b ("usb: musb: fix enumeration after resume") replaced musb_start() in musb_resume() to not override softconnect bit, but it doesn't restart the session for host port which was done in musb_start(). The session could be disabled in musb_suspend(), which leads the host port doesn't stay in host mode.
So let's start the session specifically for host port in musb_resume().
--- drivers/usb/musb/musb_core.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/usb/musb/musb_core.c +7 -0
@@ -2877,6 +2877,13 @@ static int musb_resume(struct device *demusb_enable_interrupts (musb);musb_platform_enable (musb); +/* session might be disabled in suspend */ +if (musb->port_mode ==MUSB_HOST && + !(musb->ops->quirks &MUSB_PRESERVE_SESSION )) { + devctl |=MUSB_DEVCTL_SESSION ; +musb_writeb (musb->mregs,MUSB_DEVCTL , devctl); + } +spin_lock_irqsave (&musb->lock, flags); error =musb_run_resume_work (musb);if (error)
Greg Kroah-Hartman
maintainerPATCH 11/24 usb: musb: Fix runtime PM imbalance on error
In reply to Greg Kroah-HartmanFrom: Dinghao Liu <[email protected]>
commit e4befc121df03dc8ed2ac1031c98f9538e244bae upstream.
When copy_from_user() returns an error code, there is a runtime PM usage counter imbalance.
Fix this by moving copy_from_user() to the beginning of this function.
--- drivers/usb/musb/musb_debugfs.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/usb/musb/musb_debugfs.c +5 -5
@@ -168,6 +168,11 @@ static ssize_t musb_test_mode_write(struu8 test;char buf[24 ]; +memset (buf,0x00 ,sizeof (buf)); + +if (copy_from_user (buf, ubuf,min_t (size_t,sizeof (buf) -1 , count))) +return -EFAULT ; +pm_runtime_get_sync (musb->controller); test =musb_readb (musb->mregs,MUSB_TESTMODE );if (test) {
@@ -176,11 +181,6 @@ static ssize_t musb_test_mode_write(stru goto ret; } -memset (buf,0x00 ,sizeof (buf)); - -if (copy_from_user (buf, ubuf,min_t (size_t,sizeof (buf) -1 , count))) -return -EFAULT ; -if (strstarts (buf,"force host full-speed" )) test =MUSB_TEST_FORCE_HOST |MUSB_TEST_FORCE_FS ;
Greg Kroah-Hartman
maintainerPATCH 12/24 usb: musb: jz4740: Prevent lockup when CONFIG_SMP is set
In reply to Greg Kroah-HartmanFrom: Paul Cercueil <[email protected]>
commit 685f5f24108a5f3481da70ee75a1b18b9de34257 upstream.
The function dma_controller_irq() locks up the exact same spinlock we locked before calling it, which obviously resulted in a deadlock when CONFIG_SMP was enabled. This flew under the radar as none of the boards supported by this driver needs SMP.
--- drivers/usb/musb/jz4740.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/usb/musb/jz4740.c +2 -2
@@ -30,11 +30,11 @@ static irqreturn_t jz4740_musb_interruptirqreturn_t retval =IRQ_NONE , retval_dma =IRQ_NONE ;struct musb *musb = __hci; -spin_lock_irqsave (&musb->lock, flags); -if (IS_ENABLED (CONFIG_USB_INVENTRA_DMA ) && musb->dma_controller) retval_dma =dma_controller_irq (irq, musb->dma_controller); +spin_lock_irqsave (&musb->lock, flags); + musb->int_usb =musb_readb (musb->mregs,MUSB_INTRUSB ); musb->int_tx =musb_readw (musb->mregs,MUSB_INTRTX ); musb->int_rx =musb_readw (musb->mregs,MUSB_INTRRX );
Greg Kroah-Hartman
maintainerPATCH 13/24 serial: 8250: Enable 16550A variants by default on non-x86
In reply to Greg Kroah-HartmanFrom: Josh Triplett <[email protected]>
commit 15a3f03d5ec0118f1e5db3fc1018686e72744e37 upstream.
Some embedded devices still use these serial ports; make sure they're still enabled by default on architectures more likely to have them, to avoid rendering someone's console unavailable.
--- drivers/tty/serial/8250/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/tty/serial/8250/Kconfig +1 -0
@@ -63,6 +63,7 @@ config SERIAL_8250_PNP config SERIAL_8250_16550A_VARIANTS bool "Support for variants of the 16550A serial port" depends on SERIAL_8250 + default !X86 help The 8250 driver can probe for many variants of the venerable 16550A serial port. Doing so takes additional time at boot.
Greg Kroah-Hartman
maintainerPATCH 14/24 vt: keyboard: avoid signed integer overflow in k_ascii
In reply to Greg Kroah-HartmanFrom: Dmitry Torokhov <[email protected]>
commit b86dab054059b970111b5516ae548efaae5b3aae upstream.
When k_ascii is invoked several times in a row there is a potential for signed integer overflow:
UBSAN: Undefined behaviour in drivers/tty/vt/keyboard.c:888:19 signed integer overflow: 10 * 1111111111 cannot be represented in type 'int' CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.6.11 #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011 Call Trace: <IRQ> __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0xce/0x128 lib/dump_stack.c:118 ubsan_epilogue+0xe/0x30 lib/ubsan.c:154 handle_overflow+0xdc/0xf0 lib/ubsan.c:184 __ubsan_handle_mul_overflow+0x2a/0x40 lib/ubsan.c:205 k_ascii+0xbf/0xd0 drivers/tty/vt/keyboard.c:888 kbd_keycode drivers/tty/vt/keyboard.c:1477 [inline] kbd_event+0x888/0x3be0 drivers/tty/vt/keyboard.c:1495
While it can be worked around by using check_mul_overflow()/ check_add_overflow(), it is better to introduce a separate flag to signal that number pad is being used to compose a symbol, and change type of the accumulator from signed to unsigned, thus avoiding undefined behavior when it overflows.
--- drivers/tty/vt/keyboard.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
drivers/tty/vt/keyboard.c +16 -10
@@ -127,7 +127,11 @@ static DEFINE_SPINLOCK(func_buf_lock); /static unsigned long key_down[BITS_TO_LONGS (KEY_CNT )];/* keyboard key bitmap */ static unsigned char shift_down[NR_SHIFT ];/* shift state counters.. */ static bool dead_key_next; -static int npadch =-1 ;/* -1 or number assembled on pad */ + +/* Handles a number being assembled on the number pad */ +static bool npadch_active; +static unsigned int npadch_value; +static unsigned int diacr;static char rep;/* flag telling character repeat */
@@ -845,12 +849,12 @@ static void k_shift(struct vc_data *vc, shift_state &= ~(1 << value);/* kludge */ -if (up_flag && shift_state != old_state && npadch !=-1 ) { +if (up_flag && shift_state != old_state && npadch_active) {if (kbd->kbdmode ==VC_UNICODE ) -to_utf8 (vc, npadch); +to_utf8 (vc, npadch_value);else -put_queue (vc, npadch &0xff ); - npadch =-1 ; +put_queue (vc, npadch_value &0xff ); + npadch_active = false; } }
@@ -868,7 +872,7 @@ static void k_meta(struct vc_data *vc, ustatic void k_ascii (struct vc_data *vc,unsigned char value,char up_flag) { -int base; +unsigned int base;if (up_flag)return ;
@@ -882,10 +886,12 @@ static void k_ascii(struct vc_data *vc, base =16 ; } -if (npadch ==-1 ) - npadch = value; -else - npadch = npadch * base + value; +if (!npadch_active) { + npadch_value =0 ; + npadch_active = true; + } + + npadch_value = npadch_value * base + value; }static void k_lock (struct vc_data *vc,unsigned char value,char up_flag)
Greg Kroah-Hartman
maintainerPATCH 15/24 tty: hvc_console, fix crashes on parallel open/close
In reply to Greg Kroah-HartmanFrom: Jiri Slaby <[email protected]>
commit 24eb2377f977fe06d84fca558f891f95bc28a449 upstream.
hvc_open sets tty->driver_data to NULL when open fails at some point. Typically, the failure happens in hp->ops->notifier_add(). If there is a racing process which tries to open such mangled tty, which was not closed yet, the process will crash in hvc_open as tty->driver_data is NULL.
All this happens because close wants to know whether open failed or not. But ->open should not NULL this and other tty fields for ->close to be happy. ->open should call tty_port_set_initialized(true) and close should check by tty_port_initialized() instead. So do this properly in this driver.
So this patch removes these from ->open:
* tty_port_tty_set(&hp->port, NULL). This happens on last close.
* tty->driver_data = NULL. Dtto.
* tty_port_put(&hp->port). This happens in shutdown and until now, this must have been causing a reference underflow, if I am not missing something.
--- drivers/tty/hvc/hvc_console.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-)
drivers/tty/hvc/hvc_console.c +8 -15
@@ -371,15 +371,14 @@ static int hvc_open(struct tty_struct *t* tty fields and return the kref reference. */ if (rc) { -tty_port_tty_set (&hp->port,NULL ); - tty->driver_data =NULL ; -tty_port_put (&hp->port);printk (KERN_ERR "hvc_open: request_irq failed with rc %d.\n" , rc); - }else + }else {/* We are ready... raise DTR/RTS */ if (C_BAUD (tty))if (hp->ops->dtr_rts) hp->ops->dtr_rts (hp,1 ); +tty_port_set_initialized (&hp->port, true); + }/* Force wakeup of the polling thread */ hvc_kick ();
@@ -389,22 +388,12 @@ static int hvc_open(struct tty_struct *tstatic void hvc_close (struct tty_struct *tty,struct file * filp) { -struct hvc_struct *hp; +struct hvc_struct *hp = tty->driver_data;unsigned long flags;if (tty_hung_up_p (filp))return ; -/* -* No driver_data means that this close was issued after a failed -* hvc_open by the tty layer's release_dev() function and we can just -* exit cleanly because the kref reference wasn't made. -*/ -if (!tty->driver_data) -return ; - - hp = tty->driver_data; -spin_lock_irqsave (&hp->port.lock, flags);if (--hp->port.count ==0 ) {
@@ -412,6 +401,9 @@ static void hvc_close(struct tty_struct/* We are done with the tty pointer now. */ tty_port_tty_set (&hp->port,NULL ); +if (!tty_port_initialized (&hp->port)) +return ; +if (C_HUPCL (tty))if (hp->ops->dtr_rts) hp->ops->dtr_rts (hp,0 );
@@ -428,6 +420,7 @@ static void hvc_close(struct tty_struct* waking periodically to check chars_in_buffer(). */ tty_wait_until_sent (tty,HVC_CLOSE_WAIT ); +tty_port_set_initialized (&hp->port, false); }else {if (hp->port.count <0 ) printk(KERN_ERR "hvc_close %X: oops, count is %d\n",
Greg Kroah-Hartman
maintainerPATCH 16/24 staging: rtl8712: Fix IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK
In reply to Greg Kroah-HartmanFrom: Pascal Terjan <[email protected]>
commit 15ea976a1f12b5fd76b1bd6ff3eb5132fd28047f upstream.
The value in shared headers was fixed 9 years ago in commit 8d661f1e462d ("ieee80211: correct IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK macro") and while looking at using shared headers for other duplicated constants I noticed this driver uses the old value.
The macros are also defined twice in this file so I am deleting the second definition.
--- drivers/staging/rtl8712/wifi.h | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
drivers/staging/rtl8712/wifi.h +1 -8
@@ -440,7 +440,7 @@ static inline unsigned char *get_hdr_bss/* block-ack parameters */ #define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C -#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 +#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFC0#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800
@@ -532,13 +532,6 @@ struct ieee80211_ht_addt_info {#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 -/* block-ack parameters */ -#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 -#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C -#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 -#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000 -#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800 -/* * A-PMDU buffer sizes * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2)
Greg Kroah-Hartman
maintainerPATCH 17/24 CDC-ACM: heed quirk also in error handling
In reply to Greg Kroah-HartmanFrom: Oliver Neukum <[email protected]>
commit 97fe809934dd2b0b37dfef3a2fc70417f485d7af upstream.
If buffers are iterated over in the error case, the lower limits for quirky devices must be heeded.
--- drivers/usb/class/cdc-acm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/usb/class/cdc-acm.c +1 -1
@@ -584,7 +584,7 @@ static void acm_softint(struct work_stru }if (test_and_clear_bit (ACM_ERROR_DELAY , &acm->flags)) { -for (i =0 ; i <ACM_NR ; i++) +for (i =0 ; i < acm->rx_buflimit; i++)if (test_and_clear_bit (i, &acm->urbs_in_error_delay))acm_submit_read_urb (acm, i,GFP_NOIO ); }
Greg Kroah-Hartman
maintainerPATCH 18/24 nvmem: qfprom: remove incorrect write support
In reply to Greg Kroah-HartmanFrom: Srinivas Kandagatla <[email protected]>
commit 8d9eb0d6d59a5d7028c80a30831143d3e75515a7 upstream.
qfprom has different address spaces for read and write. Reads are always done from corrected address space, where as writes are done on raw address space.
Writing to corrected address space is invalid and ignored, so it does not make sense to have this support in the driver which only supports corrected address space regions at the moment.
--- drivers/nvmem/qfprom.c | 14 -------------- 1 file changed, 14 deletions(-)
drivers/nvmem/qfprom.c +0 -14
@@ -27,25 +27,11 @@ static int qfprom_reg_read(void *contextreturn 0 ; } -static int qfprom_reg_write (void *context, -unsigned int reg,void *_val,size_t bytes) -{ -struct qfprom_priv *priv = context; -u8 *val = _val; -int i =0 , words = bytes; - -while (words--) -writeb (*val++, priv->base + reg + i++); - -return 0 ; -} -static struct nvmem_config econfig = { .name ="qfprom" , .stride =1 , .word_size =1 , .reg_read = qfprom_reg_read, - .reg_write = qfprom_reg_write, };static int qfprom_probe (struct platform_device *pdev)
Greg Kroah-Hartman
maintainerPATCH 19/24 x86/cpu: Add a steppings field to struct x86_cpu_id
In reply to Greg Kroah-HartmanFrom: Mark Gross <[email protected]>
commit e9d7144597b10ff13ff2264c059f7d4a7fbc89ac upstream
Intel uses the same family/model for several CPUs. Sometimes the stepping must be checked to tell them apart.
On x86 there can be at most 16 steppings. Add a steppings bitmask to x86_cpu_id and a X86_MATCH_VENDOR_FAMILY_MODEL_STEPPING_FEATURE macro and support for matching against family/model/stepping.
[ bp: Massage. ]
--- arch/x86/include/asm/cpu_device_id.h | 27 ++++++++++++++++++++++++--- arch/x86/kernel/cpu/match.c | 7 ++++++- include/linux/mod_devicetable.h | 2 ++ 3 files changed, 32 insertions(+), 4 deletions(-)
arch/x86/include/asm/cpu_device_id.h +24 -3
@@ -20,12 +20,14 @@#define X86_CENTAUR_FAM6_C7_D 0xd#define X86_CENTAUR_FAM6_NANO 0xf +#define X86_STEPPINGS (mins, maxs) GENMASK(maxs, mins)/** -* X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching +* X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY * The name is expanded to X86_VENDOR_@_vendor * @_family: The family number or X86_FAMILY_ANY * @_model: The model number, model constant or X86_MODEL_ANY +* @_steppings: Bitmask for steppings, stepping constant or X86_STEPPING_ANY * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY * @_data: Driver specific data or NULL. The internal storage * format is unsigned long. The supplied value, pointer
@@ -37,16 +39,35 @@* into another macro at the usage site for good reasons, then please * start this local macro with X86_MATCH to allow easy grepping. */ -#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE (_vendor, _family, _model, \ - _feature, _data) { \ +#define X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE (_vendor, _family, _model, \ + _steppings, _feature, _data) { \ .vendor = X86_VENDOR_##_vendor, \ .family = _family, \ .model = _model, \ + .steppings = _steppings, \ .feature = _feature, \ .driver_data = (unsigned long) _data \ }/** +* X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Macro for CPU matching +* @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY +* The name is expanded to X86_VENDOR_@_vendor +* @_family: The family number or X86_FAMILY_ANY +* @_model: The model number, model constant or X86_MODEL_ANY +* @_feature: A X86_FEATURE bit or X86_FEATURE_ANY +* @_data: Driver specific data or NULL. The internal storage +* format is unsigned long. The supplied value, pointer +* etc. is casted to unsigned long internally. +* +* The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is +* set to wildcards. +*/ +#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE (vendor, family, model, feature, data) \ + X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \ + X86_STEPPING_ANY, feature, data) + +/** * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY * The name is expanded to X86_VENDOR_@vendor
arch/x86/kernel/cpu/match.c +6 -1
@@ -39,13 +39,18 @@ const struct x86_cpu_id *x86_match_cpu(cconst struct x86_cpu_id *m;struct cpuinfo_x86 *c = &boot_cpu_data; -for (m = match; m->vendor | m->family | m->model | m->feature; m++) { +for (m = match; + m->vendor | m->family | m->model | m->steppings | m->feature; + m++) {if (m->vendor !=X86_VENDOR_ANY && c->x86_vendor != m->vendor)continue ;if (m->family !=X86_FAMILY_ANY && c->x86 != m->family)continue ;if (m->model !=X86_MODEL_ANY && c->x86_model != m->model)continue ; +if (m->steppings !=X86_STEPPING_ANY && + !(BIT (c->x86_stepping) & m->steppings)) +continue ;if (m->feature !=X86_FEATURE_ANY && !cpu_has (c, m->feature))continue ;return m;
include/linux/mod_devicetable.h +2 -0
@@ -663,6 +663,7 @@ struct x86_cpu_id {__u16 vendor;__u16 family;__u16 model; +__u16 steppings;__u16 feature;/* bit index */ kernel_ulong_t driver_data; };
@@ -671,6 +672,7 @@ struct x86_cpu_id {#define X86_VENDOR_ANY 0xffff#define X86_FAMILY_ANY 0#define X86_MODEL_ANY 0 +#define X86_STEPPING_ANY 0#define X86_FEATURE_ANY 0/* Same as FPU, you can't test for that */ /*
Greg Kroah-Hartman
maintainerPATCH 20/24 x86/cpu: Add table argument to cpu_matches()
In reply to Greg Kroah-HartmanFrom: Mark Gross <[email protected]>
commit 93920f61c2ad7edb01e63323832585796af75fc9 upstream
To make cpu_matches() reusable for other matching tables, have it take a pointer to a x86_cpu_id table as an argument.
[ bp: Flip arguments order. ]
--- arch/x86/kernel/cpu/common.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
arch/x86/kernel/cpu/common.c +14 -11
@@ -1075,9 +1075,9 @@ static const __initconst struct x86_cpu_ {} }; -static bool __init cpu_matches (unsigned long which) +static bool __init cpu_matches (const struct x86_cpu_id *table,unsigned long which) { -const struct x86_cpu_id *m =x86_match_cpu (cpu_vuln_whitelist); +const struct x86_cpu_id *m =x86_match_cpu (table);return m && !!(m->driver_data & which); }
@@ -1097,31 +1097,34 @@ static void __init cpu_set_bug_bits(struu64 ia32_cap =x86_read_arch_cap_msr ();/* Set ITLB_MULTIHIT bug if cpu is not in the whitelist and not mitigated */ -if (!cpu_matches (NO_ITLB_MULTIHIT ) && !(ia32_cap &ARCH_CAP_PSCHANGE_MC_NO )) +if (!cpu_matches (cpu_vuln_whitelist,NO_ITLB_MULTIHIT ) && + !(ia32_cap &ARCH_CAP_PSCHANGE_MC_NO ))setup_force_cpu_bug (X86_BUG_ITLB_MULTIHIT ); -if (cpu_matches (NO_SPECULATION )) +if (cpu_matches (cpu_vuln_whitelist,NO_SPECULATION ))return ;setup_force_cpu_bug (X86_BUG_SPECTRE_V1 ); -if (!cpu_matches (NO_SPECTRE_V2 )) +if (!cpu_matches (cpu_vuln_whitelist,NO_SPECTRE_V2 ))setup_force_cpu_bug (X86_BUG_SPECTRE_V2 ); -if (!cpu_matches (NO_SSB ) && !(ia32_cap &ARCH_CAP_SSB_NO ) && +if (!cpu_matches (cpu_vuln_whitelist,NO_SSB ) && + !(ia32_cap &ARCH_CAP_SSB_NO ) && !cpu_has (c,X86_FEATURE_AMD_SSB_NO ))setup_force_cpu_bug (X86_BUG_SPEC_STORE_BYPASS );if (ia32_cap &ARCH_CAP_IBRS_ALL )setup_force_cpu_cap (X86_FEATURE_IBRS_ENHANCED ); -if (!cpu_matches (NO_MDS ) && !(ia32_cap &ARCH_CAP_MDS_NO )) { +if (!cpu_matches (cpu_vuln_whitelist,NO_MDS ) && + !(ia32_cap &ARCH_CAP_MDS_NO )) {setup_force_cpu_bug (X86_BUG_MDS ); -if (cpu_matches (MSBDS_ONLY )) +if (cpu_matches (cpu_vuln_whitelist,MSBDS_ONLY ))setup_force_cpu_bug (X86_BUG_MSBDS_ONLY ); } -if (!cpu_matches (NO_SWAPGS )) +if (!cpu_matches (cpu_vuln_whitelist,NO_SWAPGS ))setup_force_cpu_bug (X86_BUG_SWAPGS );/*
@@ -1139,7 +1142,7 @@ static void __init cpu_set_bug_bits(stru (ia32_cap & ARCH_CAP_TSX_CTRL_MSR)))setup_force_cpu_bug (X86_BUG_TAA ); -if (cpu_matches (NO_MELTDOWN )) +if (cpu_matches (cpu_vuln_whitelist,NO_MELTDOWN ))return ;/* Rogue Data Cache Load? No! */
@@ -1148,7 +1151,7 @@ static void __init cpu_set_bug_bits(strusetup_force_cpu_bug (X86_BUG_CPU_MELTDOWN ); -if (cpu_matches (NO_L1TF )) +if (cpu_matches (cpu_vuln_whitelist,NO_L1TF ))return ;setup_force_cpu_bug (X86_BUG_L1TF );
Greg Kroah-Hartman
maintainerPATCH 21/24 x86/speculation: Add Special Register Buffer Data Sampling (SRBDS) mitigation
In reply to Greg Kroah-HartmanFrom: Mark Gross <[email protected]>
commit 7e5b3c267d256822407a22fdce6afdf9cd13f9fb upstream
SRBDS is an MDS-like speculative side channel that can leak bits from the random number generator (RNG) across cores and threads. New microcode serializes the processor access during the execution of RDRAND and RDSEED. This ensures that the shared buffer is overwritten before it is released for reuse.
While it is present on all affected CPU models, the microcode mitigation is not needed on models that enumerate ARCH_CAPABILITIES[MDS_NO] in the cases where TSX is not supported or has been disabled with TSX_CTRL.
The mitigation is activated by default on affected processors and it increases latency for RDRAND and RDSEED instructions. Among other effects this will reduce throughput from /dev/urandom.
* Enable administrator to configure the mitigation off when desired using either mitigations=off or srbds=off.
* Export vulnerability status via sysfs
* Rename file-scoped macros to apply for non-whitelist table initializations.
[ bp: Massage,
- s/VULNBL_INTEL_STEPPING/VULNBL_INTEL_STEPPINGS/g,
- do not read arch cap MSR a second time in tsx_fused_off() - just pass it in,
- flip check in cpu_set_bug_bits() to save an indentation level,
- reflow comments.
jpoimboe: s/Mitigated/Mitigation/ in user-visible strings
tglx: Dropped the fused off magic for now
]
--- Documentation/ABI/testing/sysfs-devices-system-cpu | 1 Documentation/admin-guide/kernel-parameters.txt | 20 +++ arch/x86/include/asm/cpufeatures.h | 2 arch/x86/include/asm/msr-index.h | 4 arch/x86/kernel/cpu/bugs.c | 106 +++++++++++++++++++++ arch/x86/kernel/cpu/common.c | 31 ++++++ arch/x86/kernel/cpu/cpu.h | 1 drivers/base/cpu.c | 8 + 8 files changed, 173 insertions(+)
Documentation/ABI/testing/sysfs-devices-system-cpu +1 -0
@@ -492,6 +492,7 @@ What: /sys/devices/system/cpu/vulnerabi /sys/devices/system/cpu/vulnerabilities/spec_store_bypass /sys/devices/system/cpu/vulnerabilities/l1tf /sys/devices/system/cpu/vulnerabilities/mds + /sys/devices/system/cpu/vulnerabilities/srbds /sys/devices/system/cpu/vulnerabilities/tsx_async_abort /sys/devices/system/cpu/vulnerabilities/itlb_multihit Date: January 2018
Documentation/admin-guide/kernel-parameters.txt +20 -0
@@ -4757,6 +4757,26 @@ the kernel will oops in either "warn" or "fatal" mode. + srbds= [X86,INTEL] + Control the Special Register Buffer Data Sampling + (SRBDS) mitigation. + + Certain CPUs are vulnerable to an MDS-like + exploit which can leak bits from the random + number generator. + + By default, this issue is mitigated by + microcode. However, the microcode fix can cause + the RDRAND and RDSEED instructions to become + much slower. Among other effects, this will + result in reduced throughput from /dev/urandom. + + The microcode mitigation can be disabled with + the following option: + + off: Disable mitigation and remove + performance impact to RDRAND and RDSEED + srcutree.counter_wrap_check [KNL] Specifies how frequently to check for grace-period sequence counter wrap for the
arch/x86/include/asm/cpufeatures.h +2 -0
@@ -362,6 +362,7 @@#define X86_FEATURE_AVX512_4FMAPS (18*32+ 3)/* AVX-512 Multiply Accumulation Single precision */ #define X86_FEATURE_FSRM (18*32+ 4)/* Fast Short Rep Mov */ #define X86_FEATURE_AVX512_VP2INTERSECT (18*32+ 8)/* AVX-512 Intersect for D/Q */ +#define X86_FEATURE_SRBDS_CTRL (18*32+ 9)/* "" SRBDS mitigation MSR available */ #define X86_FEATURE_MD_CLEAR (18*32+10)/* VERW clears CPU buffers */ #define X86_FEATURE_TSX_FORCE_ABORT (18*32+13)/* "" TSX_FORCE_ABORT */ #define X86_FEATURE_PCONFIG (18*32+18)/* Intel PCONFIG */
@@ -407,5 +408,6 @@#define X86_BUG_SWAPGS X86_BUG(21)/* CPU is affected by speculation through SWAPGS */ #define X86_BUG_TAA X86_BUG(22)/* CPU is affected by TSX Async Abort(TAA) */ #define X86_BUG_ITLB_MULTIHIT X86_BUG(23)/* CPU may incur MCE during certain page attribute changes */ +#define X86_BUG_SRBDS X86_BUG(24)/* CPU may leak RNG bits if not mitigated */ #endif /* _ASM_X86_CPUFEATURES_H */
arch/x86/include/asm/msr-index.h +4 -0
@@ -128,6 +128,10 @@#define TSX_CTRL_RTM_DISABLE BIT(0)/* Disable RTM feature */ #define TSX_CTRL_CPUID_CLEAR BIT(1)/* Disable TSX enumeration */ +/* SRBDS support */ +#define MSR_IA32_MCU_OPT_CTRL 0x00000123 +#define RNGDS_MITG_DIS BIT(0) +#define MSR_IA32_SYSENTER_CS 0x00000174#define MSR_IA32_SYSENTER_ESP 0x00000175#define MSR_IA32_SYSENTER_EIP 0x00000176
arch/x86/kernel/cpu/bugs.c +106 -0
140 lines not on this page · raw message
arch/x86/kernel/cpu/common.c +31 -0
@@ -1075,6 +1075,27 @@ static const __initconst struct x86_cpu_ {} }; +#define VULNBL_INTEL_STEPPINGS (model, steppings, issues) \ + X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(INTEL, 6, \ + INTEL_FAM6_##model, steppings, \ + X86_FEATURE_ANY, issues) + +#define SRBDS BIT(0) + +static const struct x86_cpu_id cpu_vuln_blacklist[]__initconst = { +VULNBL_INTEL_STEPPINGS (IVYBRIDGE ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (HASWELL ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (HASWELL_L ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (HASWELL_G ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (BROADWELL_G ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (BROADWELL ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (SKYLAKE_L ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (SKYLAKE ,X86_STEPPING_ANY ,SRBDS ), +VULNBL_INTEL_STEPPINGS (KABYLAKE_L ,X86_STEPPINGS (0x0 ,0xC ),SRBDS ), +VULNBL_INTEL_STEPPINGS (KABYLAKE ,X86_STEPPINGS (0x0 ,0xD ),SRBDS ), + {} +}; +static bool __init cpu_matches (const struct x86_cpu_id *table,unsigned long which) {const struct x86_cpu_id *m =x86_match_cpu (table);
@@ -1142,6 +1163,15 @@ static void __init cpu_set_bug_bits(stru (ia32_cap & ARCH_CAP_TSX_CTRL_MSR)))setup_force_cpu_bug (X86_BUG_TAA ); +/* +* SRBDS affects CPUs which support RDRAND or RDSEED and are listed +* in the vulnerability blacklist. +*/ +if ((cpu_has (c,X86_FEATURE_RDRAND ) || +cpu_has (c,X86_FEATURE_RDSEED )) && +cpu_matches (cpu_vuln_blacklist,SRBDS )) +setup_force_cpu_bug (X86_BUG_SRBDS ); +if (cpu_matches (cpu_vuln_whitelist,NO_MELTDOWN ))return ;
@@ -1594,6 +1624,7 @@ void identify_secondary_cpu(struct cpuinmtrr_ap_init ();validate_apic_and_package_id (c);x86_spec_ctrl_setup_ap (); +update_srbds_msr (); }static __init int setup_noclflush (char *arg)
arch/x86/kernel/cpu/cpu.h +1 -0
@@ -77,6 +77,7 @@ extern void detect_ht(struct cpuinfo_x86unsigned int aperfmperf_get_khz (int cpu);extern void x86_spec_ctrl_setup_ap (void ); +extern void update_srbds_msr (void );extern u64 x86_read_arch_cap_msr (void );
drivers/base/cpu.c +8 -0
@@ -562,6 +562,12 @@ ssize_t __weak cpu_show_itlb_multihit(streturn sprintf (buf,"Not affected\n" ); } +ssize_t __weak cpu_show_srbds (struct device *dev, +struct device_attribute *attr,char *buf) +{ +return sprintf (buf,"Not affected\n" ); +} + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL);
@@ -570,6 +576,7 @@ static DEVICE_ATTR(l1tf, 0444, cpu_show_ static DEVICE_ATTR(mds, 0444, cpu_show_mds, NULL); static DEVICE_ATTR(tsx_async_abort, 0444, cpu_show_tsx_async_abort, NULL); static DEVICE_ATTR(itlb_multihit, 0444, cpu_show_itlb_multihit, NULL); +static DEVICE_ATTR(srbds, 0444, cpu_show_srbds, NULL);static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr,
@@ -580,6 +587,7 @@ static struct attribute *cpu_root_vulner &dev_attr_mds.attr, &dev_attr_tsx_async_abort.attr, &dev_attr_itlb_multihit.attr, + &dev_attr_srbds.attr, NULL };
Greg Kroah-Hartman
maintainerPATCH 22/24 x86/speculation: Add SRBDS vulnerability and mitigation documentation
In reply to Greg Kroah-HartmanFrom: Mark Gross <[email protected]>
commit 7222a1b5b87417f22265c92deea76a6aecd0fb0f upstream
Add documentation for the SRBDS vulnerability and its mitigation.
[ bp: Massage.
jpoimboe: sysfs table strings. ]
--- Documentation/admin-guide/hw-vuln/index.rst | 1 Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst | 148 ++++++++++ 2 files changed, 149 insertions(+) create mode 100644 Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst
Documentation/admin-guide/hw-vuln/index.rst +1 -0
@@ -14,3 +14,4 @@ are configurable at compile, boot or run mds tsx_async_abort multihit.rst + special-register-buffer-data-sampling.rst
Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst new file +148 -0
148 lines not on this page · raw message
Greg Kroah-Hartman
maintainerPATCH 23/24 x86/speculation: Add Ivy Bridge to affected list
In reply to Greg Kroah-HartmanFrom: Josh Poimboeuf <[email protected]>
commit 3798cc4d106e91382bfe016caa2edada27c2bb3f upstream
Make the docs match the code.
--- Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
Documentation/admin-guide/hw-vuln/special-register-buffer-data-sampling.rst +4 -3
@@ -27,6 +27,8 @@ by software using TSX_CTRL_MSR otherwise ============= ============ ======== common name Family_Model Stepping ============= ============ ======== + IvyBridge 06_3AH All + Haswell 06_3CH All Haswell_L 06_45H All Haswell_G 06_46H All
@@ -37,9 +39,8 @@ by software using TSX_CTRL_MSR otherwise Skylake_L 06_4EH All Skylake 06_5EH All - Kabylake_L 06_8EH <=0xC - - Kabylake 06_9EH <=0xD + Kabylake_L 06_8EH <= 0xC + Kabylake 06_9EH <= 0xD ============= ============ ======== Related CVEs
Greg Kroah-Hartman
maintainerPATCH 24/24 uprobes: ensure that uprobe->offset and ->ref_ctr_offset are properly aligned
In reply to Greg Kroah-HartmanFrom: Oleg Nesterov <[email protected]>
commit 013b2deba9a6b80ca02f4fafd7dedf875e9b4450 upstream.
uprobe_write_opcode() must not cross page boundary; prepare_uprobe() relies on arch_uprobe_analyze_insn() which should validate "vaddr" but some architectures (csky, s390, and sparc) don't do this.
We can remove the BUG_ON() check in prepare_uprobe() and validate the offset early in __uprobe_register(). The new IS_ALIGNED() check matches the alignment check in arch_prepare_kprobe() on supported architectures, so I think that all insns must be aligned to UPROBE_SWBP_INSN_SIZE.
Another problem is __update_ref_ctr() which was wrong from the very beginning, it can read/write outside of kmap'ed page unless "vaddr" is aligned to sizeof(short), __uprobe_register() should check this too.
--- kernel/events/uprobes.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
kernel/events/uprobes.c +12 -4
@@ -867,10 +867,6 @@ static int prepare_uprobe(struct uprobeif (ret) goto out; -/* uprobe_write_opcode() assumes we don't cross page boundary */ -BUG_ON ((uprobe->offset & ~PAGE_MASK ) + -UPROBE_SWBP_INSN_SIZE >PAGE_SIZE ); -smp_wmb ();/* pairs with the smp_rmb() in handle_swbp() */ set_bit (UPROBE_COPY_INSN , &uprobe->flags);
@@ -1166,6 +1162,15 @@ static int __uprobe_register(struct inodif (offset >i_size_read (inode))return -EINVAL ; +/* +* This ensures that copy_from_page(), copy_to_page() and +* __update_ref_ctr() can't cross page boundary. +*/ +if (!IS_ALIGNED (offset,UPROBE_SWBP_INSN_SIZE )) +return -EINVAL ; +if (!IS_ALIGNED (ref_ctr_offset,sizeof (short ))) +return -EINVAL ; + retry: uprobe =alloc_uprobe (inode, offset, ref_ctr_offset);if (!uprobe)
@@ -2014,6 +2019,9 @@ static int is_trap_at_addr(struct mm_struprobe_opcode_t opcode;int result; +if (WARN_ON_ONCE (!IS_ALIGNED (vaddr,UPROBE_SWBP_INSN_SIZE ))) +return -EINVAL ; +pagefault_disable (); result =__get_user (opcode, (uprobe_opcode_t __user *)vaddr);pagefault_enable ();
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.7.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
Summary
------------------------------------------------------------------------
kernel: 5.7.2-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-5.7.y
git commit: 00f7cc67908be43cf52f961c4c880108b00d68e8
git describe: v5.7.1-25-g00f7cc67908b
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-5.7-oe/build/v5.7.1-25-g00f7cc67908b
No regressions (compared to build v5.7-15-g676bb83805a9)
No fixes (compared to build v5.7-15-g676bb83805a9)
Ran 36794 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c
- hi6220-hikey
- i386
- juno-r2
- juno-r2-compat
- juno-r2-kasan
- nxp-ls2088
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15
- x86
- x86-kasan
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* install-android-platform-tools-r2800
* kselftest
* kselftest/drivers
* kselftest/filesystems
* kselftest/net
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-controllers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-sched-tests
* ltp-syscalls-tests
* perf
* v4l2-compliance
* libgpiod
* ltp-cve-tests
* ltp-hugetlb-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-securebits-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-io-tests
* ltp-open-posix-tests
* network-basic-tests
* kvm-unit-tests
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-native/drivers
* kselftest-vsyscall-mode-native/filesystems
* kselftest-vsyscall-mode-native/net
* kselftest-vsyscall-mode-none
* kselftest-vsyscall-mode-none/drivers
* kselftest-vsyscall-mode-none/filesystems
* kselftest-vsyscall-mode-none/net
Signature · 2 lines
Linaro LKFT https://lkft.linaro.org
Greg Kroah-Hartman
maintainerQuoted 17 lines · Naresh Kamboju
Quoted 15 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.7.y
and the diffstat can be found below.
Quoted 6 lines
Quoted 3 lines
thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm,x86_64, and i386.
Thanks for testing all of these and letting me know.
greg k-h
Jon Hunter
maintainerQuoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.7.y
and the diffstat can be found below.thanks,
greg k-h
All tests are passing for Tegra ...
Test results for stable-v5.7:
11 builds: 11 pass, 0 fail
26 boots: 26 pass, 0 fail
50 tests: 50 pass, 0 failLinux version: 5.7.2-rc1-g00f7cc67908b
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra20-ventana,
tegra210-p2371-2180, tegra210-p3450-0000,
tegra30-cardhu-a04Cheers
Jon
Signature · 1 line
nvpublic
Greg Kroah-Hartman
maintainerQuoted 27 lines · Jon Hunter
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.7.y
and the diffstat can be found below.thanks,
greg k-h
All tests are passing for Tegra ...
Test results for stable-v5.7:
11 builds: 11 pass, 0 fail 26 boots: 26 pass, 0 fail 50 tests: 50 pass, 0 fail
Quoted 5 lines
Linux version: 5.7.2-rc1-g00f7cc67908b
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,tegra194-p2972-0000, tegra20-ventana, tegra210-p2371-2180, tegra210-p3450-0000, tegra30-cardhu-a04
Wonderful, thanks for testing all of these and letting me know.
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.2-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.7.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
Build results:
total: 155 pass: 155 fail: 0 Qemu test results: total: 431 pass: 431 fail: 0
Guenter
Greg Kroah-Hartman
maintainerQuoted 6 lines · Guenter Roeck
Quoted 5 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.7.2 release. There are 24 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Quoted 8 lines
Quoted 3 lines
Responses should be made by Thu, 11 Jun 2020 17:41:38 +0000. Anything received after that time might be too late.
Build results:
total: 155 pass: 155 fail: 0 Qemu test results: total: 431 pass: 431 fail: 0
Thanks for testing all of these and letting me know.
greg k-h