4.14.180-rc1 review
Greg Kroah-Hartman
maintainercover 4.14.180-rc1 review
This is the start of the stable review cycle for the 4.14.180 release. There are 22 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 Sun, 10 May 2020 12:29:44 +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/v4.x/stable-review/patch-4.14.180-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-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 4.14.180-rc1
Jiri Slaby <[email protected]>
cgroup, netclassid: remove double cond_resched
Thomas Pedersen <[email protected]>
mac80211: add ieee80211_is_any_nullfunc()
Takashi Iwai <[email protected]>
ALSA: hda: Match both PCI ID and SSID for driver blacklist
Steven Rostedt (VMware) <[email protected]>
tracing: Reverse the order of trace_types_lock and event_mutex
Jere Leppänen <[email protected]>
sctp: Fix SHUTDOWN CTSN Ack in the peer restart case
Doug Berger <[email protected]>
net: systemport: suppress warnings on failed Rx SKB allocations
Doug Berger <[email protected]>
net: bcmgenet: suppress warnings on failed Rx SKB allocations
Nathan Chancellor <[email protected]>
lib/mpi: Fix building for powerpc with clang
Florian Fainelli <[email protected]>
net: dsa: b53: Rework ARL bin logic
Jeremie Francois (on alpha) <[email protected]>
scripts/config: allow colons in option strings for sed
Philipp Rudo <[email protected]>
s390/ftrace: fix potential crashes when switching tracers
Ronnie Sahlberg <[email protected]>
cifs: protect updating server->dstaddr with a spinlock
Julien Beraud <[email protected]>
net: stmmac: Fix sub-second increment
Julien Beraud <[email protected]>
net: stmmac: fix enabling socfpga's ptp_ref_clock
Xiyu Yang <[email protected]>
wimax/i2400m: Fix potential urb refcnt leak
Amadeusz Sławiński <[email protected]>
ASoC: codecs: hdac_hdmi: Fix incorrect use of list_for_each_entry
Matthias Blankertz <[email protected]>
ASoC: rsnd: Fix HDMI channel mapping for multi-SSI mode
Sebastian Reichel <[email protected]>
ASoC: sgtl5000: Fix VAG power-on handling
Tyler Hicks <[email protected]>
selftests/ipc: Fix test failure seen after initial test run
Amadeusz Sławiński <[email protected]>
ASoC: topology: Check return value of pcm_new_ver
Alexey Kardashevskiy <[email protected]>
powerpc/pci/of: Parse unassigned resources
Jia He <[email protected]>
vhost: vsock: kick send_pkt worker once device is started
-------------
Diffstat:
Makefile | 4 +-- arch/powerpc/kernel/pci_of_scan.c | 12 ++++++-- arch/s390/kernel/diag.c | 2 +- arch/s390/kernel/smp.c | 4 +-- arch/s390/kernel/trace.c | 2 +- drivers/net/dsa/b53/b53_common.c | 30 ++++++++++++++++--- drivers/net/dsa/b53/b53_regs.h | 3 ++ drivers/net/ethernet/broadcom/bcmsysport.c | 3 +- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 3 +- .../net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 9 ++++-- .../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 12 +++++--- drivers/net/wimax/i2400m/usb-fw.c | 1 + drivers/vhost/vsock.c | 5 ++++ fs/cifs/connect.c | 2 ++ include/linux/ieee80211.h | 9 ++++++ kernel/trace/trace.c | 5 ++++ kernel/trace/trace_events.c | 31 ++++++++++---------- lib/mpi/longlong.h | 34 +++++++++++----------- net/core/netclassid_cgroup.c | 4 +-- net/mac80211/mlme.c | 2 +- net/mac80211/rx.c | 8 ++--- net/mac80211/status.c | 5 ++-- net/mac80211/tx.c | 2 +- net/sctp/sm_make_chunk.c | 6 +++- scripts/config | 5 +++- sound/pci/hda/hda_intel.c | 9 +++--- sound/soc/codecs/hdac_hdmi.c | 6 ++-- sound/soc/codecs/sgtl5000.c | 34 ++++++++++++++++++++++ sound/soc/codecs/sgtl5000.h | 1 + sound/soc/sh/rcar/ssiu.c | 2 +- sound/soc/soc-topology.c | 4 ++- tools/testing/selftests/ipc/msgque.c | 2 +- 32 files changed, 182 insertions(+), 79 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/22 vhost: vsock: kick send_pkt worker once device is started
From: Jia He <[email protected]>
commit 0b841030625cde5f784dd62aec72d6a766faae70 upstream.
Ning Bo reported an abnormal 2-second gap when booting Kata container [1]. The unconditional timeout was caused by VSOCK_DEFAULT_CONNECT_TIMEOUT of connecting from the client side. The vhost vsock client tries to connect an initializing virtio vsock server.
The abnormal flow looks like:
host-userspace vhost vsock guest vsock
============== =========== ============
connect() --------> vhost_transport_send_pkt_work() initializing
| vq->private_data==NULL
| will not be queued
V
schedule_timeout(2s)
vhost_vsock_start() <--------- device ready
set vq->private_datawait for 2s and failedconnect() again vq->private_data!=NULL recv connecting pkt
Details:
1. Host userspace sends a connect pkt, at that time, guest vsock is under initializing, hence the vhost_vsock_start has not been called. So vq->private_data==NULL, and the pkt is not been queued to send to guest
2. Then it sleeps for 2s
3. After guest vsock finishes initializing, vq->private_data is set
4. When host userspace wakes up after 2s, send connecting pkt again, everything is fine.
As suggested by Stefano Garzarella, this fixes it by additional kicking the send_pkt worker in vhost_vsock_start once the virtio device is started. This makes the pending pkt sent again.
After this patch, kata-runtime (with vsock enabled) boot time is reduced from 3s to 1s on a ThunderX2 arm64 server.
[1] https://github.com/kata-containers/runtime/issues/1917
--- drivers/vhost/vsock.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/vhost/vsock.c +5 -0
@@ -499,6 +499,11 @@ static int vhost_vsock_start(struct vhosmutex_unlock (&vq->mutex); } +/* Some packets may have been queued before the device was started, +* let's kick the send worker to send them. +*/ +vhost_work_queue (&vsock->dev, &vsock->send_pkt_work); +mutex_unlock (&vsock->dev.mutex);return 0 ;
Greg Kroah-Hartman
maintainerPATCH 2/22 powerpc/pci/of: Parse unassigned resources
In reply to Greg Kroah-HartmanFrom: Alexey Kardashevskiy <[email protected]>
commit dead1c845dbe97e0061dae2017eaf3bd8f8f06ee upstream.
The pseries platform uses the PCI_PROBE_DEVTREE method of PCI probing which reads "assigned-addresses" of every PCI device and initializes the device resources. However if the property is missing or zero sized, then there is no fallback of any kind and the PCI resources remain undiscovered, i.e. pdev->resource[] array remains empty.
This adds a fallback which parses the "reg" property in pretty much same way except it marks resources as "unset" which later make Linux assign those resources proper addresses.
This has an effect when:
1. a hypervisor failed to assign any resource for a device;
2. /chosen/linux,pci-probe-only=0 is in the DT so the system may try assigning a resource.
Neither is likely to happen under PowerVM.
--- arch/powerpc/kernel/pci_of_scan.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
arch/powerpc/kernel/pci_of_scan.c +10 -2
@@ -82,10 +82,16 @@ static void of_pci_parse_addrs(struct deconst __be32 *addrs;u32 i;int proplen; +bool mark_unset = false; addrs =of_get_property (node,"assigned-addresses" , &proplen); -if (!addrs) -return ; +if (!addrs || !proplen) { + addrs =of_get_property (node,"reg" , &proplen); +if (!addrs || !proplen) +return ; + mark_unset = true; + } +pr_debug (" parse addresses (%d bytes) @ %p\n" , proplen, addrs);for (; proplen >=20 ; proplen -=20 , addrs +=5 ) { flags =pci_parse_of_flags (of_read_number (addrs,1 ),0 );
@@ -110,6 +116,8 @@ static void of_pci_parse_addrs(struct decontinue ; } res->flags = flags; +if (mark_unset) + res->flags |=IORESOURCE_UNSET ; res->name =pci_name (dev); region.start = base; region.end = base + size -1 ;
Greg Kroah-Hartman
maintainerPATCH 3/22 ASoC: topology: Check return value of pcm_new_ver
In reply to Greg Kroah-HartmanFrom: Amadeusz Sławiński <[email protected]>
[ Upstream commit b3677fc3d68dd942c92de52f0bd9dd8b472a40e6 ]
Function pcm_new_ver can fail, so we should check it's return value and handle possible error.
--- sound/soc/soc-topology.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
sound/soc/soc-topology.c +3 -1
@@ -1954,7 +1954,9 @@ static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg, _pcm = pcm; }else { abi_match = false; -pcm_new_ver (tplg, pcm, &_pcm); + ret =pcm_new_ver (tplg, pcm, &_pcm); +if (ret <0 ) +return ret; }/* create the FE DAIs and DAI links */
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 4/22 selftests/ipc: Fix test failure seen after initial test run
In reply to Greg Kroah-HartmanFrom: Tyler Hicks <[email protected]>
[ Upstream commit b87080eab4c1377706c113fc9c0157f19ea8fed1 ]
After successfully running the IPC msgque test once, subsequent runs result in a test failure:
$ sudo ./run_kselftest.sh TAP version 13 1..1 # selftests: ipc: msgque # Failed to get stats for IPC queue with id 0 # Failed to dump queue: -22 # Bail out! # # Pass 0 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 not ok 1 selftests: ipc: msgque # exit=1
The dump_queue() function loops through the possible message queue index values using calls to msgctl(kern_id, MSG_STAT, ...) where kern_id represents the index value. The first time the test is ran, the initial index value of 0 is valid and the test is able to complete. The index value of 0 is not valid in subsequent test runs and the loop attempts to try index values of 1, 2, 3, and so on until a valid index value is found that corresponds to the message queue created earlier in the test.
The msgctl() syscall returns -1 and sets errno to EINVAL when invalid index values are used. The test failure is caused by incorrectly comparing errno to -EINVAL when cycling through possible index values.
Fix invalid test failures on subsequent runs of the msgque test by correctly comparing errno values to a non-negated EINVAL.
--- tools/testing/selftests/ipc/msgque.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/ipc/msgque.c +1 -1
@@ -137,7 +137,7 @@ int dump_queue(struct msgque_data *msgque)for (kern_id =0 ; kern_id <256 ; kern_id++) { ret =msgctl (kern_id,MSG_STAT , &ds);if (ret <0 ) { -if (errno == -EINVAL ) +if (errno ==EINVAL )continue ;printf ("Failed to get stats for IPC queue with id %d\n" , kern_id);
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 5/22 ASoC: sgtl5000: Fix VAG power-on handling
In reply to Greg Kroah-HartmanFrom: Sebastian Reichel <[email protected]>
[ Upstream commit aa7812737f2877e192d57626cbe8825cc7cf6de9 ]
As mentioned slightly out of patch context in the code, there is no reset routine for the chip. On boards where the chip is supplied by a fixed regulator, it might not even be resetted during (e.g. watchdog) reboot and can be in any state.
If the device is probed with VAG enabled, the driver's probe routine will generate a loud pop sound when ANA_POWER is being programmed. Avoid this by properly disabling just the VAG bit and waiting the required power down time.
--- sound/soc/codecs/sgtl5000.c | 34 ++++++++++++++++++++++++++++++++++ sound/soc/codecs/sgtl5000.h | 1 + 2 files changed, 35 insertions(+)
sound/soc/codecs/sgtl5000.c +34 -0
@@ -1563,6 +1563,40 @@ static int sgtl5000_i2c_probe(struct i2c_client *client,dev_err (&client->dev,"Error %d initializing CHIP_CLK_CTRL\n" , ret); +/* Mute everything to avoid pop from the following power-up */ + ret =regmap_write (sgtl5000->regmap,SGTL5000_CHIP_ANA_CTRL , +SGTL5000_CHIP_ANA_CTRL_DEFAULT ); +if (ret) { +dev_err (&client->dev, +"Error %d muting outputs via CHIP_ANA_CTRL\n" , ret); + goto disable_clk; + } + +/* +* If VAG is powered-on (e.g. from previous boot), it would be disabled +* by the write to ANA_POWER in later steps of the probe code. This +* may create a loud pop even with all outputs muted. The proper way +* to circumvent this is disabling the bit first and waiting the proper +* cool-down time. +*/ + ret =regmap_read (sgtl5000->regmap,SGTL5000_CHIP_ANA_POWER , &value); +if (ret) { +dev_err (&client->dev,"Failed to read ANA_POWER: %d\n" , ret); + goto disable_clk; + } +if (value &SGTL5000_VAG_POWERUP ) { + ret =regmap_update_bits (sgtl5000->regmap, +SGTL5000_CHIP_ANA_POWER , +SGTL5000_VAG_POWERUP , +0 ); +if (ret) { +dev_err (&client->dev,"Error %d disabling VAG\n" , ret); + goto disable_clk; + } + +msleep (SGTL5000_VAG_POWERDOWN_DELAY ); + } +/* Follow section 2.2.1.1 of AN3663 */ ana_pwr =SGTL5000_ANA_POWER_DEFAULT ;if (sgtl5000->num_supplies <=VDDD ) {
sound/soc/codecs/sgtl5000.h +1 -0
@@ -236,6 +236,7 @@/* * SGTL5000_CHIP_ANA_CTRL */ +#define SGTL5000_CHIP_ANA_CTRL_DEFAULT 0x0133#define SGTL5000_LINE_OUT_MUTE 0x0100#define SGTL5000_HP_SEL_MASK 0x0040#define SGTL5000_HP_SEL_SHIFT 6
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 6/22 ASoC: rsnd: Fix HDMI channel mapping for multi-SSI mode
In reply to Greg Kroah-HartmanFrom: Matthias Blankertz <[email protected]>
[ Upstream commit b94e164759b82d0c1c80d4b1c8f12c9bee83f11d ]
The HDMI?_SEL register maps up to four stereo SSI data lanes onto the sdata[0..3] inputs of the HDMI output block. The upper half of the register contains four blocks of 4 bits, with the most significant controlling the sdata3 line and the least significant the sdata0 line.
The shift calculation has an off-by-one error, causing the parent SSI to be mapped to sdata3, the first multi-SSI child to sdata0 and so forth. As the parent SSI transmits the stereo L/R channels, and the HDMI core expects it on the sdata0 line, this causes no audio to be output when playing stereo audio on a multichannel capable HDMI out, and multichannel audio has permutated channels.
Fix the shift calculation to map the parent SSI to sdata0, the first child to sdata1 etc.
--- sound/soc/sh/rcar/ssiu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/sh/rcar/ssiu.c +1 -1
@@ -172,7 +172,7 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, i;for_each_rsnd_mod_array (i, pos, io, rsnd_ssi_array) { - shift = (i *4 ) +16 ; + shift = (i *4 ) +20 ; val = (val & ~(0xF << shift)) |rsnd_mod_id (pos) << shift; }
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 7/22 ASoC: codecs: hdac_hdmi: Fix incorrect use of list_for_each_entry
In reply to Greg Kroah-HartmanFrom: Amadeusz Sławiński <[email protected]>
[ Upstream commit 326b509238171d37402dbe308e154cc234ed1960 ]
If we don't find any pcm, pcm will point at address at an offset from the the list head and not a meaningful structure. Fix this by returning correct pcm if found and NULL if not. Found with coccinelle.
--- sound/soc/codecs/hdac_hdmi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
sound/soc/codecs/hdac_hdmi.c +3 -3
@@ -142,14 +142,14 @@ static struct hdac_hdmi_pcm * hdac_hdmi_get_pcm_from_cvt(struct hdac_hdmi_priv *hdmi, struct hdac_hdmi_cvt *cvt) { - struct hdac_hdmi_pcm *pcm = NULL; + struct hdac_hdmi_pcm *pcm;list_for_each_entry (pcm, &hdmi->pcm_list, head) {if (pcm->cvt == cvt) -break ; +return pcm; } -return pcm; +return NULL ; } static void hdac_hdmi_jack_report(struct hdac_hdmi_pcm *pcm,
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 8/22 wimax/i2400m: Fix potential urb refcnt leak
In reply to Greg Kroah-HartmanFrom: Xiyu Yang <[email protected]>
[ Upstream commit 7717cbec172c3554d470023b4020d5781961187e ]
i2400mu_bus_bm_wait_for_ack() invokes usb_get_urb(), which increases the refcount of the "notif_urb".
When i2400mu_bus_bm_wait_for_ack() returns, local variable "notif_urb" becomes invalid, so the refcount should be decreased to keep refcount balanced.
The issue happens in all paths of i2400mu_bus_bm_wait_for_ack(), which forget to decrease the refcnt increased by usb_get_urb(), causing a refcnt leak.
Fix this issue by calling usb_put_urb() before the i2400mu_bus_bm_wait_for_ack() returns.
--- drivers/net/wimax/i2400m/usb-fw.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/wimax/i2400m/usb-fw.c +1 -0
@@ -354,6 +354,7 @@ ssize_t i2400mu_bus_bm_wait_for_ack(struct i2400m *i2400m,usb_autopm_put_interface (i2400mu->usb_iface);d_fnend (8 , dev,"(i2400m %p ack %p size %zu) = %ld\n" , i2400m, ack, ack_size, (long ) result); +usb_put_urb (¬if_urb);return result; error_exceeded:
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 9/22 net: stmmac: fix enabling socfpgas ptp_ref_clock
In reply to Greg Kroah-HartmanFrom: Julien Beraud <[email protected]>
[ Upstream commit 15ce30609d1e88d42fb1cd948f453e6d5f188249 ]
There are 2 registers to write to enable a ptp ref clock coming from the fpga.
One that enables the usage of the clock from the fpga for emac0 and emac1 as a ptp ref clock, and the other to allow signals from the fpga to reach emac0 and emac1.
Currently, if the dwmac-socfpga has phymode set to PHY_INTERFACE_MODE_MII, PHY_INTERFACE_MODE_GMII, or PHY_INTERFACE_MODE_SGMII, both registers will be written and the ptp ref clock will be set as coming from the fpga. Separate the 2 register writes to only enable signals from the fpga to reach emac0 or emac1 when ptp ref clock is not coming from the fpga.
--- drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +6 -3
@@ -274,16 +274,19 @@ static int socfpga_dwmac_set_phy_mode(struct socfpga_dwmac *dwmac) phymode == PHY_INTERFACE_MODE_MII || phymode == PHY_INTERFACE_MODE_GMII || phymode == PHY_INTERFACE_MODE_SGMII) { - ctrl |=SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK << (reg_shift /2 );regmap_read (sys_mgr_base_addr,SYSMGR_FPGAGRP_MODULE_REG , &module); module |= (SYSMGR_FPGAGRP_MODULE_EMAC << (reg_shift /2 ));regmap_write (sys_mgr_base_addr,SYSMGR_FPGAGRP_MODULE_REG , module); - } else { - ctrl &= ~(SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK << (reg_shift /2 )); } +if (dwmac->f2h_ptp_ref_clk) + ctrl |=SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK << (reg_shift /2 ); +else + ctrl &= ~(SYSMGR_EMACGRP_CTRL_PTP_REF_CLK_MASK << + (reg_shift /2 )); +regmap_write (sys_mgr_base_addr, reg_offset, ctrl);/* Deassert reset for the phy configuration to be sampled by
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 10/22 net: stmmac: Fix sub-second increment
In reply to Greg Kroah-HartmanFrom: Julien Beraud <[email protected]>
[ Upstream commit 91a2559c1dc5b0f7e1256d42b1508935e8eabfbf ]
In fine adjustement mode, which is the current default, the sub-second
increment register is the number of nanoseconds that will be added to the clock when the accumulator overflows. At each clock cycle, the value of the addend register is added to the accumulator. Currently, we use 20ns = 1e09ns / 50MHz as this value whatever the frequency of the ptp clock actually is.
The adjustment is then done on the addend register, only incrementing every X clock cycles X being the ratio between 50MHz and ptp_clock_rate (addend = 2^32 * 50MHz/ptp_clock_rate).
This causes the following issues :
- In case the frequency of the ptp clock is inferior or equal to 50MHz, the addend value calculation will overflow and the default addend value will be set to 0, causing the clock to not work at all. (For instance, for ptp_clock_rate = 50MHz, addend = 2^32).
- The resolution of the timestamping clock is limited to 20ns while it is not needed, thus limiting the accuracy of the timestamping to 20ns.
Fix this by setting sub-second increment to 2e09ns / ptp_clock_rate. It will allow to reach the minimum possible frequency for ptp_clk_ref, which is 5MHz for GMII 1000Mps Full-Duplex by setting the sub-second-increment to a higher value. For instance, for 25MHz, it gives ssinc = 80ns and default_addend = 2^31.
It will also allow to use a lower value for sub-second-increment, thus improving the timestamping accuracy with frequencies higher than 100MHz, for instance, for 200MHz, ssinc = 10ns and default_addend = 2^31.
v1->v2:
- Remove modifications to the calculation of default addend, which broke compatibility with clock frequencies for which 2000000000 / ptp_clk_freq is not an integer.
- Modify description according to discussions.
--- .../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c +8 -4
@@ -36,12 +36,16 @@ static u32 stmmac_config_sub_second_increment(void __iomem *ioaddr,unsigned long data;u32 reg_value; -/* For GMAC3.x, 4.x versions, convert the ptp_clock to nano second -* formula = (1/ptp_clock) * 1000000000 -* where ptp_clock is 50MHz if fine method is used to update system +/* For GMAC3.x, 4.x versions, in "fine adjustement mode" set sub-second +* increment to twice the number of nanoseconds of a clock cycle. +* The calculation of the default_addend value by the caller will set it +* to mid-range = 2^31 when the remainder of this division is zero, +* which will make the accumulator overflow once every 2 ptp_clock +* cycles, adding twice the number of nanoseconds of a clock cycle : +* 2000000000ULL / ptp_clock. */ if (value &PTP_TCR_TSCFUPDT ) - data = (1000000000ULL /50000000 ); + data = (2000000000ULL / ptp_clock);else data = (1000000000ULL / ptp_clock);
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 11/22 cifs: protect updating server->dstaddr with a spinlock
In reply to Greg Kroah-HartmanFrom: Ronnie Sahlberg <[email protected]>
[ Upstream commit fada37f6f62995cc449b36ebba1220594bfe55fe ]
We use a spinlock while we are reading and accessing the destination address for a server. We need to also use this spinlock to protect when we are modifying this address from reconn_set_ipaddr().
--- fs/cifs/connect.c | 2 ++ 1 file changed, 2 insertions(+)
fs/cifs/connect.c +2 -0
@@ -348,8 +348,10 @@ static int reconn_set_ipaddr(struct TCP_Server_Info *server)return rc; } +spin_lock (&cifs_tcp_ses_lock); rc =cifs_convert_address ((struct sockaddr *)&server->dstaddr, ipaddr,strlen (ipaddr)); +spin_unlock (&cifs_tcp_ses_lock);kfree (ipaddr);return !rc ?-1 :0 ;
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 12/22 s390/ftrace: fix potential crashes when switching tracers
In reply to Greg Kroah-HartmanFrom: Philipp Rudo <[email protected]>
[ Upstream commit 8ebf6da9db1b2a20bb86cc1bee2552e894d03308 ]
Switching tracers include instruction patching. To prevent that a instruction is patched while it's read the instruction patching is done in stop_machine 'context'. This also means that any function called during stop_machine must not be traced. Thus add 'notrace' to all functions called within stop_machine.
--- arch/s390/kernel/diag.c | 2 +- arch/s390/kernel/smp.c | 4 ++-- arch/s390/kernel/trace.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-)
arch/s390/kernel/diag.c +1 -1
@@ -128,7 +128,7 @@ void diag_stat_inc(enum diag_stat_enum nr) }EXPORT_SYMBOL (diag_stat_inc); -void diag_stat_inc_norecursion (enum diag_stat_enum nr) +void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr) {this_cpu_inc (diag_stat.counter[nr]);trace_s390_diagnose_norecursion (diag_map[nr].code);
arch/s390/kernel/smp.c +2 -2
@@ -406,7 +406,7 @@ int smp_find_processor_id(u16 address)return -1 ; } -bool arch_vcpu_is_preempted (int cpu) +bool notrace arch_vcpu_is_preempted(int cpu) {if (test_cpu_flag_of (CIF_ENABLED_WAIT , cpu))return false;
@@ -416,7 +416,7 @@ bool arch_vcpu_is_preempted(int cpu) }EXPORT_SYMBOL (arch_vcpu_is_preempted); -void smp_yield_cpu (int cpu) +void notrace smp_yield_cpu(int cpu) {if (MACHINE_HAS_DIAG9C ) {diag_stat_inc_norecursion (DIAG_STAT_X09C );
arch/s390/kernel/trace.c +1 -1
@@ -14,7 +14,7 @@ EXPORT_TRACEPOINT_SYMBOL(s390_diagnose); static DEFINE_PER_CPU(unsigned int, diagnose_trace_depth); -void trace_s390_diagnose_norecursion (int diag_nr) +void notrace trace_s390_diagnose_norecursion(int diag_nr) {unsigned long flags;unsigned int *depth;
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 13/22 scripts/config: allow colons in option strings for sed
In reply to Greg Kroah-HartmanFrom: Jeremie Francois (on alpha) <[email protected]>
[ Upstream commit e461bc9f9ab105637b86065d24b0b83f182d477c ]
Sed broke on some strings as it used colon as a separator. I made it more robust by using \001, which is legit POSIX AFAIK.
E.g. ./config --set-str CONFIG_USBNET_DEVADDR "de:ad:be:ef:00:01" failed with: sed: -e expression #1, char 55: unknown option to `s'
--- scripts/config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
scripts/config +4 -1
@@ -7,6 +7,9 @@ myname=${0##*/} # If no prefix forced, use the default CONFIG_ CONFIG_="${CONFIG_-CONFIG_}" +# We use an uncommon delimiter for sed substitutions +SED_DELIM=$(echo -en "\001") + usage() { cat >&2 <<EOL Manipulate options in a .config file from the command line.
@@ -83,7 +86,7 @@ txt_subst() { local infile="$3" local tmpfile="$infile.swp" - sed -e "s:$before:$after:" "$infile" >"$tmpfile" + sed -e "s$SED_DELIM$before$SED_DELIM$after$SED_DELIM" "$infile" >"$tmpfile" # replace original file with the edited one mv "$tmpfile" "$infile" }
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 14/22 net: dsa: b53: Rework ARL bin logic
In reply to Greg Kroah-HartmanFrom: Florian Fainelli <[email protected]>
[ Upstream commit 6344dbde6a27d10d16246d734b968f84887841e2 ]
When asking the ARL to read a MAC address, we will get a number of bins returned in a single read. Out of those bins, there can essentially be 3 states:
- all bins are full, we have no space left, and we can either replace an existing address or return that full condition
- the MAC address was found, then we need to return its bin index and modify that one, and only that one
- the MAC address was not found and we have a least one bin free, we use that bin index location then
The code would unfortunately fail on all counts.
--- drivers/net/dsa/b53/b53_common.c | 30 ++++++++++++++++++++++++++---- drivers/net/dsa/b53/b53_regs.h | 3 +++ 2 files changed, 29 insertions(+), 4 deletions(-)
drivers/net/dsa/b53/b53_common.c +26 -4
@@ -1094,6 +1094,7 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, u16 vid, struct b53_arl_entry *ent, u8 *idx, bool is_valid) { +DECLARE_BITMAP (free_bins ,B53_ARLTBL_MAX_BIN_ENTRIES );unsigned int i;int ret;
@@ -1101,6 +1102,8 @@ static int b53_arl_read(struct b53_device *dev, u64 mac,if (ret)return ret; +bitmap_zero (free_bins, dev->num_arl_entries); +/* Read the bins */ for (i =0 ; i < dev->num_arl_entries; i++) {u64 mac_vid;
@@ -1112,13 +1115,21 @@ static int b53_arl_read(struct b53_device *dev, u64 mac, B53_ARLTBL_DATA_ENTRY(i), &fwd_entry);b53_arl_to_entry (ent, mac_vid, fwd_entry); -if (!(fwd_entry &ARLTBL_VALID )) +if (!(fwd_entry &ARLTBL_VALID )) { +set_bit (i, free_bins);continue ; + }if ((mac_vid &ARLTBL_MAC_MASK ) != mac)continue ; *idx = i; +return 0 ; } +if (bitmap_weight (free_bins, dev->num_arl_entries) ==0 ) +return -ENOSPC ; + + *idx =find_first_bit (free_bins, dev->num_arl_entries); +return -ENOENT ; }
@@ -1148,10 +1159,21 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,if (op)return ret; -/* We could not find a matching MAC, so reset to a new entry */ -if (ret) { +switch (ret) { +case -ENOSPC : +dev_dbg (dev->dev,"{%pM,%.4d} no space left in ARL\n" , + addr, vid); +return is_valid ? ret :0 ; +case -ENOENT : +/* We could not find a matching MAC, so reset to a new entry */ +dev_dbg (dev->dev,"{%pM,%.4d} not found, using idx: %d\n" , + addr, vid, idx); fwd_entry =0 ; - idx =1 ; +break ; +default : +dev_dbg (dev->dev,"{%pM,%.4d} found, using idx: %d\n" , + addr, vid, idx); +break ; }memset (&ent,0 ,sizeof (ent));
drivers/net/dsa/b53/b53_regs.h +3 -0
@@ -313,6 +313,9 @@#define ARLTBL_STATIC BIT(15)#define ARLTBL_VALID BIT(16) +/* Maximum number of bin entries in the ARL for all switches */ +#define B53_ARLTBL_MAX_BIN_ENTRIES 4 +/* ARL Search Control Register (8 bit) */ #define B53_ARL_SRCH_CTL 0x50#define B53_ARL_SRCH_CTL_25 0x20
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 15/22 lib/mpi: Fix building for powerpc with clang
In reply to Greg Kroah-HartmanFrom: Nathan Chancellor <[email protected]>
[ Upstream commit 5990cdee689c6885b27c6d969a3d58b09002b0bc ]
0day reports over and over on an powerpc randconfig with clang:
lib/mpi/generic_mpih-mul1.c:37:13: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
Remove the superfluous casts, which have been done previously for x86 and arm32 in commit dea632cadd12 ("lib/mpi: fix build with clang") and commit 7b7c1df2883d ("lib/mpi/longlong.h: fix building with 32-bit x86").
--- lib/mpi/longlong.h | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-)
lib/mpi/longlong.h +17 -17
@@ -756,22 +756,22 @@ do { \ do { \ if (__builtin_constant_p(bh) && (bh) == 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "%r" ((USItype)(ah)), \ "%r" ((USItype)(al)), \ "rI" ((USItype)(bl))); \ else if (__builtin_constant_p(bh) && (bh) == ~(USItype) 0) \ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "%r" ((USItype)(ah)), \ "%r" ((USItype)(al)), \ "rI" ((USItype)(bl))); \ else \ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "%r" ((USItype)(ah)), \ "r" ((USItype)(bh)), \ "%r" ((USItype)(al)), \
@@ -781,36 +781,36 @@ do { \ do { \ if (__builtin_constant_p(ah) && (ah) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "r" ((USItype)(bh)), \ "rI" ((USItype)(al)), \ "r" ((USItype)(bl))); \ else if (__builtin_constant_p(ah) && (ah) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "r" ((USItype)(bh)), \ "rI" ((USItype)(al)), \ "r" ((USItype)(bl))); \ else if (__builtin_constant_p(bh) && (bh) == 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "r" ((USItype)(ah)), \ "rI" ((USItype)(al)), \ "r" ((USItype)(bl))); \ else if (__builtin_constant_p(bh) && (bh) == ~(USItype) 0) \ __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "r" ((USItype)(ah)), \ "rI" ((USItype)(al)), \ "r" ((USItype)(bl))); \ else \ __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ + : "=r" (sh), \ + "=&r" (sl) \ : "r" ((USItype)(ah)), \ "r" ((USItype)(bh)), \ "rI" ((USItype)(al)), \
@@ -821,7 +821,7 @@ do { \ do { \ USItype __m0 = (m0), __m1 = (m1); \ __asm__ ("mulhwu %0,%1,%2" \ - : "=r" ((USItype) ph) \ + : "=r" (ph) \ : "%r" (__m0), \ "r" (__m1)); \ (pl) = __m0 * __m1; \
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 16/22 net: bcmgenet: suppress warnings on failed Rx SKB allocations
In reply to Greg Kroah-HartmanFrom: Doug Berger <[email protected]>
[ Upstream commit ecaeceb8a8a145d93c7e136f170238229165348f ]
The driver is designed to drop Rx packets and reclaim the buffers when an allocation fails, and the network interface needs to safely handle this packet loss. Therefore, an allocation failure of Rx SKBs is relatively benign.
However, the output of the warning message occurs with a high scheduling priority that can cause excessive jitter/latency for other high priority processing.
This commit suppresses the warning messages to prevent scheduling problems while retaining the failure count in the statistics of the network interface.
--- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/ethernet/broadcom/genet/bcmgenet.c +2 -1
@@ -1674,7 +1674,8 @@ static struct sk_buff *bcmgenet_rx_refill(struct bcmgenet_priv *priv,dma_addr_t mapping;/* Allocate a new Rx skb */ - skb =netdev_alloc_skb (priv->dev, priv->rx_buf_len +SKB_ALIGNMENT ); + skb =__netdev_alloc_skb (priv->dev, priv->rx_buf_len +SKB_ALIGNMENT , +GFP_ATOMIC | __GFP_NOWARN);if (!skb) { priv->mib.alloc_rx_buff_failed++; netif_err(priv, rx_err, priv->dev,
Signature · 1 line
2.20.1
Greg Kroah-Hartman
maintainerPATCH 17/22 net: systemport: suppress warnings on failed Rx SKB allocations
In reply to Greg Kroah-HartmanFrom: Doug Berger <[email protected]>
[ Upstream commit 3554e54a46125030c534820c297ed7f6c3907e24 ]
The driver is designed to drop Rx packets and reclaim the buffers when an allocation fails, and the network interface needs to safely handle this packet loss. Therefore, an allocation failure of Rx SKBs is relatively benign.
However, the output of the warning message occurs with a high scheduling priority that can cause excessive jitter/latency for other high priority processing.
This commit suppresses the warning messages to prevent scheduling problems while retaining the failure count in the statistics of the network interface.
--- drivers/net/ethernet/broadcom/bcmsysport.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/ethernet/broadcom/bcmsysport.c +2 -1
@@ -645,7 +645,8 @@ static struct sk_buff *bcm_sysport_rx_redma_addr_t mapping;/* Allocate a new SKB for a new packet */ - skb =netdev_alloc_skb (priv->netdev,RX_BUF_LENGTH ); + skb =__netdev_alloc_skb (priv->netdev,RX_BUF_LENGTH , +GFP_ATOMIC | __GFP_NOWARN);if (!skb) { priv->mib.alloc_rx_buff_failed++;netif_err (priv, rx_err, ndev,"SKB alloc failed\n" );
Greg Kroah-Hartman
maintainerPATCH 18/22 sctp: Fix SHUTDOWN CTSN Ack in the peer restart case
In reply to Greg Kroah-HartmanFrom: Jere Leppänen <[email protected]>
commit 12dfd78e3a74825e6f0bc8df7ef9f938fbc6bfe3 upstream.
When starting shutdown in sctp_sf_do_dupcook_a(), get the value for SHUTDOWN Cumulative TSN Ack from the new association, which is reconstructed from the cookie, instead of the old association, which the peer doesn't have anymore.
Otherwise the SHUTDOWN is either ignored or replied to with an ABORT by the peer because CTSN Ack doesn't match the peer's Initial TSN.
--- net/sctp/sm_make_chunk.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
net/sctp/sm_make_chunk.c +5 -1
@@ -858,7 +858,11 @@ struct sctp_chunk *sctp_make_shutdown(costruct sctp_chunk *retval;__u32 ctsn; - ctsn =sctp_tsnmap_get_ctsn (&asoc->peer.tsn_map); +if (chunk && chunk->asoc) + ctsn =sctp_tsnmap_get_ctsn (&chunk->asoc->peer.tsn_map); +else + ctsn =sctp_tsnmap_get_ctsn (&asoc->peer.tsn_map); + shut.cum_tsn_ack =htonl (ctsn); retval = sctp_make_control(asoc, SCTP_CID_SHUTDOWN, 0,
Greg Kroah-Hartman
maintainerPATCH 19/22 tracing: Reverse the order of trace_types_lock and event_mutex
In reply to Greg Kroah-HartmanFrom: Steven Rostedt (VMware) <[email protected]>
commit 12ecef0cb12102d8c034770173d2d1363cb97d52 upstream.
In order to make future changes where we need to call tracing_set_clock() from within an event command, the order of trace_types_lock and event_mutex must be reversed, as the event command will hold event_mutex and the trace_types_lock is taken from within tracing_set_clock().
--- kernel/trace/trace.c | 5 +++++ kernel/trace/trace_events.c | 31 +++++++++++++++---------------- 2 files changed, 20 insertions(+), 16 deletions(-)
kernel/trace/trace.c +5 -0
@@ -7720,6 +7720,7 @@ static int instance_mkdir(const char *nastruct trace_array *tr;int ret; +mutex_lock (&event_mutex);mutex_lock (&trace_types_lock); ret = -EEXIST ;
@@ -7775,6 +7776,7 @@ static int instance_mkdir(const char *nalist_add (&tr->list, &ftrace_trace_arrays);mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return 0 ;
@@ -7786,6 +7788,7 @@ static int instance_mkdir(const char *na out_unlock:mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return ret;
@@ -7798,6 +7801,7 @@ static int instance_rmdir(const char *naint ret;int i; +mutex_lock (&event_mutex);mutex_lock (&trace_types_lock); ret = -ENODEV ;
@@ -7843,6 +7847,7 @@ static int instance_rmdir(const char *na out_unlock:mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return ret; }
kernel/trace/trace_events.c +15 -16
@@ -1403,8 +1403,8 @@ static int subsystem_open(struct inode *return -ENODEV ;/* Make sure the system still exists */ -mutex_lock (&trace_types_lock);mutex_lock (&event_mutex); +mutex_lock (&trace_types_lock);list_for_each_entry (tr, &ftrace_trace_arrays, list) {list_for_each_entry (dir, &tr->systems, list) {if (dir == inode->i_private) {
@@ -1418,8 +1418,8 @@ static int subsystem_open(struct inode * } } exit_loop: -mutex_unlock (&event_mutex);mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);if (!system)return -ENODEV ;
@@ -2305,15 +2305,15 @@ static void __add_event_to_tracers(strucint trace_add_event_call (struct trace_event_call *call) {int ret; -mutex_lock (&trace_types_lock);mutex_lock (&event_mutex); +mutex_lock (&trace_types_lock); ret =__register_event (call,NULL );if (ret >=0 )__add_event_to_tracers (call); -mutex_unlock (&event_mutex);mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return ret; }
@@ -2367,13 +2367,13 @@ int trace_remove_event_call(struct trace {int ret; -mutex_lock (&trace_types_lock);mutex_lock (&event_mutex); +mutex_lock (&trace_types_lock);down_write (&trace_event_sem); ret =probe_remove_event_call (call);up_write (&trace_event_sem); -mutex_unlock (&event_mutex);mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return ret; }
@@ -2435,8 +2435,8 @@ static int trace_module_notify(struct no {struct module *mod = data; -mutex_lock (&trace_types_lock);mutex_lock (&event_mutex); +mutex_lock (&trace_types_lock);switch (val) {case MODULE_STATE_COMING :trace_module_add_events (mod);
@@ -2445,8 +2445,8 @@ static int trace_module_notify(struct notrace_module_remove_events (mod);break ; } -mutex_unlock (&event_mutex);mutex_unlock (&trace_types_lock); +mutex_unlock (&event_mutex);return 0 ; }
@@ -2961,24 +2961,24 @@ create_event_toplevel_files(struct dentr* creates the event hierachry in the @parent/events directory. * * Returns 0 on success. +* +* Must be called with event_mutex held. */ int event_trace_add_tracer (struct dentry *parent,struct trace_array *tr) {int ret; -mutex_lock (&event_mutex); +lockdep_assert_held (&event_mutex); ret =create_event_toplevel_files (parent, tr);if (ret) - goto out_unlock; + goto out;down_write (&trace_event_sem);__trace_add_event_dirs (tr);up_write (&trace_event_sem); - out_unlock: -mutex_unlock (&event_mutex); - + out:return ret; }
@@ -3007,9 +3007,10 @@ early_event_add_tracer(struct dentry *pareturn ret; } +/* Must be called with event_mutex held */ int event_trace_del_tracer (struct trace_array *tr) { -mutex_lock (&event_mutex); +lockdep_assert_held (&event_mutex);/* Disable any event triggers and associated soft-disabled events */ clear_event_triggers (tr);
@@ -3030,8 +3031,6 @@ int event_trace_del_tracer(struct trace_ tr->event_dir =NULL ; -mutex_unlock (&event_mutex); -return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 20/22 ALSA: hda: Match both PCI ID and SSID for driver blacklist
In reply to Greg Kroah-HartmanFrom: Takashi Iwai <[email protected]>
commit 977dfef40c8996b69afe23a9094d184049efb7bb upstream.
The commit 3c6fd1f07ed0 ("ALSA: hda: Add driver blacklist") added a new blacklist for the devices that are known to have empty codecs, and one of the entries was ASUS ROG Zenith II (PCI SSID 1043:874f). However, it turned out that the very same PCI SSID is used for the previous model that does have the valid HD-audio codecs and the change broke the sound on it.
Since the empty codec problem appear on the certain AMD platform (PCI ID 1022:1487), this patch changes the blacklist matching to both PCI ID and SSID using pci_match_id(). Also, the entry that was removed by the previous fix for ASUS ROG Zenigh II is re-added.
--- sound/pci/hda/hda_intel.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
sound/pci/hda/hda_intel.c +5 -4
@@ -2172,9 +2172,10 @@ static const struct hdac_io_ops pci_hda_* some HD-audio PCI entries are exposed without any codecs, and such devices * should be ignored from the beginning. */ -static const struct snd_pci_quirk driver_blacklist[] = { -SND_PCI_QUIRK (0x1462 ,0xcb59 ,"MSI TRX40 Creator" ,0 ), -SND_PCI_QUIRK (0x1462 ,0xcb60 ,"MSI TRX40" ,0 ), +static const struct pci_device_id driver_blacklist[] = { + {PCI_DEVICE_SUB (0x1022 ,0x1487 ,0x1043 ,0x874f ) },/* ASUS ROG Zenith II / Strix */ + {PCI_DEVICE_SUB (0x1022 ,0x1487 ,0x1462 ,0xcb59 ) },/* MSI TRX40 Creator */ + {PCI_DEVICE_SUB (0x1022 ,0x1487 ,0x1462 ,0xcb60 ) },/* MSI TRX40 */ {} };
@@ -2197,7 +2198,7 @@ static int azx_probe(struct pci_dev *pcibool schedule_probe;int err; -if (snd_pci_quirk_lookup (pci, driver_blacklist)) { +if (pci_match_id (driver_blacklist, pci)) {dev_info (&pci->dev,"Skipping the blacklisted device\n" );return -ENODEV ; }
Greg Kroah-Hartman
maintainerPATCH 21/22 mac80211: add ieee80211_is_any_nullfunc()
In reply to Greg Kroah-HartmanFrom: Thomas Pedersen <[email protected]>
commit 30b2f0be23fb40e58d0ad2caf8702c2a44cda2e1 upstream.
commit 08a5bdde3812 ("mac80211: consider QoS Null frames for STA_NULLFUNC_ACKED") Fixed a bug where we failed to take into account a
nullfunc frame can be either non-QoS or QoS. It turns out
there is at least one more bug inieee80211_sta_tx_notify(), introduced in
commit 7b6ddeaf27ec ("mac80211: use QoS NDP for AP probing"),
where we forgot to check for the QoS variant and so
assumed the QoS nullfunc frame never went out
Fix this by adding a helper ieee80211_is_any_nullfunc() which consolidates the check for non-QoS and QoS nullfunc frames. Replace existing compound conditionals and add a couple more missing checks for QoS variant.
--- include/linux/ieee80211.h | 9 +++++++++ net/mac80211/mlme.c | 2 +- net/mac80211/rx.c | 8 +++----- net/mac80211/status.c | 5 ++--- net/mac80211/tx.c | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-)
include/linux/ieee80211.h +9 -0
@@ -622,6 +622,15 @@ static inline bool ieee80211_is_qos_null }/** +* ieee80211_is_any_nullfunc - check if frame is regular or QoS nullfunc frame +* @fc: frame control bytes in little-endian byteorder +*/ +static inline bool ieee80211_is_any_nullfunc (__le16 fc) +{ +return (ieee80211_is_nullfunc (fc) ||ieee80211_is_qos_nullfunc (fc)); +} + +/** * ieee80211_is_bufferable_mmpdu - check if frame is bufferable MMPDU * @fc: frame control field in little-endian byteorder */
net/mac80211/mlme.c +1 -1
@@ -2273,7 +2273,7 @@ void ieee80211_sta_tx_notify(struct ieeeif (!ieee80211_is_data (hdr->frame_control))return ; -if (ieee80211_is_nullfunc (hdr->frame_control) && +if (ieee80211_is_any_nullfunc (hdr->frame_control) && sdata->u.mgd.probe_send_count >0 ) {if (ack)ieee80211_sta_reset_conn_monitor (sdata);
net/mac80211/rx.c +3 -5
@@ -1255,8 +1255,7 @@ ieee80211_rx_h_check_dup(struct ieee8021return RX_CONTINUE ;if (ieee80211_is_ctl (hdr->frame_control) || -ieee80211_is_nullfunc (hdr->frame_control) || -ieee80211_is_qos_nullfunc (hdr->frame_control) || +ieee80211_is_any_nullfunc (hdr->frame_control) ||is_multicast_ether_addr (hdr->addr1))return RX_CONTINUE ;
@@ -1643,8 +1642,7 @@ ieee80211_rx_h_sta_process(struct ieee80* Drop (qos-)data::nullfunc frames silently, since they * are used only to control station power saving mode. */ -if (ieee80211_is_nullfunc (hdr->frame_control) || -ieee80211_is_qos_nullfunc (hdr->frame_control)) { +if (ieee80211_is_any_nullfunc (hdr->frame_control)) {I802_DEBUG_INC (rx->local->rx_handlers_drop_nullfunc);/*
@@ -2134,7 +2132,7 @@ static int ieee80211_drop_unencrypted(st/* Drop unencrypted frames if key is set. */ if (unlikely (!ieee80211_has_protected (fc) && - !ieee80211_is_nullfunc (fc) && + !ieee80211_is_any_nullfunc (fc) &&ieee80211_is_data (fc) && rx->key))return -EACCES ;
net/mac80211/status.c +2 -3
@@ -478,8 +478,7 @@ static void ieee80211_report_ack_skb(strrcu_read_lock (); sdata =ieee80211_sdata_from_skb (local, skb);if (sdata) { -if (ieee80211_is_nullfunc (hdr->frame_control) || -ieee80211_is_qos_nullfunc (hdr->frame_control)) +if (ieee80211_is_any_nullfunc (hdr->frame_control))cfg80211_probe_status (sdata->dev, hdr->addr1, cookie, acked,GFP_ATOMIC );
@@ -856,7 +855,7 @@ static void __ieee80211_tx_status(structI802_DEBUG_INC (local->dot11FailedCount); } - if ((ieee80211_is_nullfunc(fc) || ieee80211_is_qos_nullfunc(fc)) && + if (ieee80211_is_any_nullfunc(fc) && ieee80211_has_pm(fc) && ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS) && !(info->flags & IEEE80211_TX_CTL_INJECTED) &&
net/mac80211/tx.c +1 -1
@@ -296,7 +296,7 @@ ieee80211_tx_h_check_assoc(struct ieee80if (unlikely (test_bit (SCAN_SW_SCANNING , &tx->local->scanning)) &&test_bit (SDATA_STATE_OFFCHANNEL , &tx->sdata->state) && !ieee80211_is_probe_req (hdr->frame_control) && - !ieee80211_is_nullfunc (hdr->frame_control)) + !ieee80211_is_any_nullfunc (hdr->frame_control))/* * When software scanning only nullfunc frames (to notify * the sleep state to the AP) and probe requests (for the
Greg Kroah-Hartman
maintainerPATCH 22/22 cgroup, netclassid: remove double cond_resched
In reply to Greg Kroah-HartmanFrom: Jiri Slaby <[email protected]>
commit 526f3d96b8f83b1b13d73bd0b5c79cc2c487ec8e upstream.
Commit 018d26fcd12a ("cgroup, netclassid: periodically release file_lock on classid") added a second cond_resched to write_classid indirectly by update_classid_task. Remove the one in write_classid.
--- net/core/netclassid_cgroup.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
net/core/netclassid_cgroup.c +1 -3
@@ -131,10 +131,8 @@ static int write_classid(struct cgroup_s cs->classid = (u32 )value;css_task_iter_start (css,0 , &it); -while ((p =css_task_iter_next (&it))) { +while ((p =css_task_iter_next (&it)))update_classid_task (p, cs->classid); -cond_resched (); - }css_task_iter_end (&it);return 0 ;
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.14.180 release. There are 22 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 Sun, 10 May 2020 12:29:44 +0000. Anything received after that time might be too late.
Build results:
total: 171 pass: 171 fail: 0 Qemu test results: total: 407 pass: 407 fail: 0
Guenter
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.14.180 release. There are 22 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 Sun, 10 May 2020 12:29:44 +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/v4.x/stable-review/patch-4.14.180-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.14.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: 4.14.180-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.14.y
git commit: 3b98623002348651d84865b1576cdc13caed64ed
git describe: v4.14.179-23-g3b9862300234
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.14-oe/build/v4.14.179-23-g3b9862300234
No regressions (compared to build v4.14.179)
No fixes (compared to build v4.14.179)
Ran 29537 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- i386
- juno-r2 - arm64
- juno-r2-compat
- juno-r2-kasan
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15 - arm
- x86_64
- x86-kasan
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* install-android-platform-tools-r2800
* kselftest
* kselftest/drivers
* kselftest/filesystems
* kselftest/net
* kselftest/networking
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-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-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* perf
* v4l2-compliance
* kvm-unit-tests
* network-basic-tests
* ltp-open-posix-tests
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-native/drivers
* kselftest-vsyscall-mode-native/filesystems
* kselftest-vsyscall-mode-native/net
* kselftest-vsyscall-mode-native/networking
* kselftest-vsyscall-mode-none
* kselftest-vsyscall-mode-none/drivers
* kselftest-vsyscall-mode-none/filesystems
* kselftest-vsyscall-mode-none/net
* kselftest-vsyscall-mode-none/networking
Signature · 2 lines
Linaro LKFT https://lkft.linaro.org
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.14.180 release. There are 22 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 Sun, 10 May 2020 12:29:44 +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/v4.x/stable-review/patch-4.14.180-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.14.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah