3.18.91-stable review
Greg Kroah-Hartman
maintainercover 3.18.91-stable review
This is the start of the stable review cycle for the 3.18.91 release. There are 32 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 Wed Jan 3 13:59:44 UTC 2018. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.18.91-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-3.18.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 3.18.91-rc1
Linus Torvalds <[email protected]>
n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
Daniel Thompson <[email protected]>
usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
Oliver Neukum <[email protected]>
usb: add RESET_RESUME for ELSA MicroLink 56K
Dmitry Fleytman Dmitry Fleytman <[email protected]>
usb: Add device quirk for Logitech HD Pro Webcam C925e
Daniele Palmas <[email protected]>
USB: serial: option: add support for Telit ME910 PID 0x1101
Mohamed Ghannam <[email protected]>
net: ipv4: fix for a race condition in raw_sendmsg
Tonghao Zhang <[email protected]>
sctp: Replace use of sockets_allocated with specified macro.
Tobias Jordan <[email protected]>
net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
Brian King <[email protected]>
tg3: Fix rx hang on MTU change with 5717/5719
Christoph Paasch <[email protected]>
tcp md5sig: Use skb's saddr when replying to an incoming segment
Sebastian Sjoholm <[email protected]>
net: qmi_wwan: add Sierra EM7565 1199:9091
Kevin Cernekee <[email protected]>
netlink: Add netns check on taps
Kevin Cernekee <[email protected]>
net: igmp: Use correct source address on IGMPv3 reports
Eric Dumazet <[email protected]>
ipv6: mcast: better catch silly mtu values
Eric Dumazet <[email protected]>
ipv4: igmp: guard against silly MTU values
Linus Torvalds <[email protected]>
kbuild: add '-fno-stack-check' to kernel build options
Johan Hovold <[email protected]>
ASoC: twl4030: fix child-node lookup
Steven Rostedt (VMware) <[email protected]>
ring-buffer: Mask out the info bits when returning buffer page length
Jing Xia <[email protected]>
tracing: Fix crash when it fails to alloc ring buffer
Steven Rostedt (VMware) <[email protected]>
tracing: Fix possible double free on failure of allocating trace buffer
Steven Rostedt (VMware) <[email protected]>
tracing: Remove extra zeroing out of the ring buffer page
Yelena Krivosheev <[email protected]>
net: mvneta: clear interface link status on port disable
Ravi Bangoria <[email protected]>
powerpc/perf: Dereference BHRB entries safely
Wanpeng Li <[email protected]>
KVM: X86: Fix load RFLAGS w/o the fixed bit
Helge Deller <[email protected]>
parisc: Hide Diva-built-in serial aux and graphics card
Rafael J. Wysocki <[email protected]>
PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
Takashi Iwai <[email protected]>
ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
Takashi Iwai <[email protected]>
ALSA: rawmidi: Avoid racy info ioctl via ctl device
Johan Hovold <[email protected]>
mfd: twl6040: Fix child-node lookup
Johan Hovold <[email protected]>
mfd: twl4030-audio: Fix sibling-node lookup
Sebastian Andrzej Siewior <[email protected]>
crypto: mcryptd - protect the per-CPU queue with a lock
Takashi Iwai <[email protected]>
ACPI: APEI / ERST: Fix missing error handling in erst_reader()
-------------
Diffstat:
Makefile | 7 ++++-- arch/powerpc/perf/core-book3s.c | 8 +++++-- arch/x86/kvm/x86.c | 2 +- crypto/mcryptd.c | 23 ++++++++---------- drivers/acpi/apei/erst.c | 2 +- drivers/mfd/twl4030-audio.c | 9 +++++-- drivers/mfd/twl6040.c | 12 ++++++---- drivers/net/ethernet/broadcom/tg3.c | 4 +++- drivers/net/ethernet/marvell/mvmdio.c | 3 ++- drivers/net/ethernet/marvell/mvneta.c | 4 ++++ drivers/net/usb/qmi_wwan.c | 1 + drivers/parisc/lba_pci.c | 33 ++++++++++++++++++++++++++ drivers/pci/pci-driver.c | 7 +++++- drivers/tty/n_tty.c | 4 ++-- drivers/usb/core/quirks.c | 6 ++++- drivers/usb/host/xhci-pci.c | 3 +++ drivers/usb/serial/option.c | 8 +++++++ include/crypto/mcryptd.h | 1 + include/net/ip.h | 2 ++ kernel/trace/ring_buffer.c | 6 ++++- kernel/trace/trace.c | 13 ++++------- net/ipv4/devinet.c | 2 +- net/ipv4/igmp.c | 44 +++++++++++++++++++++++++++-------- net/ipv4/ip_tunnel.c | 4 ++-- net/ipv4/raw.c | 15 ++++++++---- net/ipv4/tcp_ipv4.c | 2 +- net/ipv6/mcast.c | 25 ++++++++++++-------- net/ipv6/tcp_ipv6.c | 2 +- net/netlink/af_netlink.c | 3 +++ net/sctp/socket.c | 4 ++-- sound/core/rawmidi.c | 15 +++++++++--- sound/soc/codecs/twl4030.c | 4 +++- sound/usb/mixer.c | 27 ++++++++++++--------- 33 files changed, 217 insertions(+), 88 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/32 ACPI: APEI / ERST: Fix missing error handling in erst_reader()
3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit bb82e0b4a7e96494f0c1004ce50cec3d7b5fb3d1 upstream.
The commit f6f828513290 ("pstore: pass allocated memory region back to caller") changed the check of the return value from erst_read() in erst_reader() in the following way:
if (len == -ENOENT)
goto skip;
- else if (len < 0) {
- rc = -1;
+ else if (len < sizeof(*rcd)) {
+ rc = -EIO;
goto out;This introduced another bug: since the comparison with sizeof() is cast to unsigned, a negative len value doesn't hit any longer. As a result, when an error is returned from erst_read(), the code falls through, and it may eventually lead to some weird thing like memory corruption.
This patch adds the negative error value check more explicitly for addressing the issue.
--- drivers/acpi/apei/erst.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/apei/erst.c +1 -1
@@ -1023,7 +1023,7 @@ skip:/* The record may be cleared by others, try read next record */ if (len == -ENOENT ) goto skip; -else if (len <sizeof (*rcd)) { +else if (len <0 || len <sizeof (*rcd)) { rc = -EIO ; goto out; }
Greg Kroah-Hartman
maintainerPATCH 2/32 crypto: mcryptd - protect the per-CPU queue with a lock
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <[email protected]>
commit 9abffc6f2efe46c3564c04312e52e07622d40e51 upstream.
mcryptd_enqueue_request() grabs the per-CPU queue struct and protects access to it with disabled preemption. Then it schedules a worker on the same CPU. The worker in mcryptd_queue_worker() guards access to the same per-CPU variable with disabled preemption.
If we take CPU-hotplug into account then it is possible that between queue_work_on() and the actual invocation of the worker the CPU goes down and the worker will be scheduled on _another_ CPU. And here the preempt_disable() protection does not work anymore. The easiest thing is to add a spin_lock() to guard access to the list.
Another detail: mcryptd_queue_worker() is not processing more than MCRYPTD_BATCH invocation in a row. If there are still items left, then it will invoke queue_work() to proceed with more later. *I* would suggest to simply drop that check because it does not use a system workqueue and the workqueue is already marked as "CPU_INTENSIVE". And if preemption is required then the scheduler should do it. However if queue_work() is used then the work item is marked as CPU unbound. That means it will try to run on the local CPU but it may run on another CPU as well. Especially with CONFIG_DEBUG_WQ_FORCE_RR_CPU=y. Again, the preempt_disable() won't work here but lock which was introduced will help.
In order to keep work-item on the local CPU (and avoid RR) I changed it to queue_work_on().
--- crypto/mcryptd.c | 23 ++++++++++------------- include/crypto/mcryptd.h | 1 + 2 files changed, 11 insertions(+), 13 deletions(-)
crypto/mcryptd.c +10 -13
@@ -80,6 +80,7 @@ static int mcryptd_init_queue(struct mcrpr_debug ("cpu_queue #%d %p\n" , cpu, queue->cpu_queue);crypto_init_queue (&cpu_queue->queue, max_cpu_qlen);INIT_WORK (&cpu_queue->work, mcryptd_queue_worker); +spin_lock_init (&cpu_queue->q_lock); }return 0 ; }
@@ -103,15 +104,16 @@ static int mcryptd_enqueue_request(strucint cpu, err;struct mcryptd_cpu_queue *cpu_queue; - cpu =get_cpu (); - cpu_queue =this_cpu_ptr (queue->cpu_queue); - rctx->tag.cpu = cpu; + cpu_queue =raw_cpu_ptr (queue->cpu_queue); +spin_lock (&cpu_queue->q_lock); + cpu =smp_processor_id (); + rctx->tag.cpu =smp_processor_id (); err =crypto_enqueue_request (&cpu_queue->queue, request);pr_debug ("enqueue request: cpu %d cpu_queue %p request %p\n" , cpu, cpu_queue, request); +spin_unlock (&cpu_queue->q_lock);queue_work_on (cpu, kcrypto_wq, &cpu_queue->work); -put_cpu ();return err; }
@@ -164,16 +166,11 @@ static void mcryptd_queue_worker(struct cpu_queue = container_of(work, struct mcryptd_cpu_queue, work); i =0 ;while (i <MCRYPTD_BATCH ||single_task_running ()) { -/* -* preempt_disable/enable is used to prevent -* being preempted by mcryptd_enqueue_request() -*/ -local_bh_disable (); -preempt_disable (); + +spin_lock_bh (&cpu_queue->q_lock); backlog =crypto_get_backlog (&cpu_queue->queue); req =crypto_dequeue_request (&cpu_queue->queue); -preempt_enable (); -local_bh_enable (); +spin_unlock_bh (&cpu_queue->q_lock);if (!req) {mcryptd_opportunistic_flush ();
@@ -188,7 +185,7 @@ static void mcryptd_queue_worker(struct ++i; }if (cpu_queue->queue.qlen) -queue_work (kcrypto_wq, &cpu_queue->work); +queue_work_on (smp_processor_id (), kcrypto_wq, &cpu_queue->work); }void mcryptd_flusher (struct work_struct *__work)
include/crypto/mcryptd.h +1 -0
@@ -26,6 +26,7 @@ static inline struct mcryptd_ahash *__mcstruct mcryptd_cpu_queue {struct crypto_queue queue; +spinlock_t q_lock;struct work_struct work; };
Greg Kroah-Hartman
maintainerPATCH 3/32 mfd: twl4030-audio: Fix sibling-node lookup
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <[email protected]>
commit 0a423772de2f3d7b00899987884f62f63ae00dcb upstream.
A helper purported to look up a child node based on its name was using the wrong of-helper and ended up prematurely freeing the parent of-node while leaking any matching node.
To make things worse, any matching node would not even necessarily be a child node as the whole device tree was searched depth-first starting at the parent.
--- drivers/mfd/twl4030-audio.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/mfd/twl4030-audio.c +7 -2
@@ -159,13 +159,18 @@ unsigned int twl4030_audio_get_mclk(voidEXPORT_SYMBOL_GPL (twl4030_audio_get_mclk);static bool twl4030_audio_has_codec (struct twl4030_audio_data *pdata, -struct device_node *node) +struct device_node *parent) { +struct device_node *node; +if (pdata && pdata->codec)return true; -if (of_find_node_by_name (node,"codec" )) + node =of_get_child_by_name (parent,"codec" ); +if (node) { +of_node_put (node);return true; + }return false; }
Greg Kroah-Hartman
maintainerPATCH 4/32 mfd: twl6040: Fix child-node lookup
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <[email protected]>
commit 85e9b13cbb130a3209f21bd7933933399c389ffe upstream.
Fix child-node lookup during probe, which ended up searching the whole device tree depth-first starting at the parent rather than just matching on its children.
To make things worse, the parent node was prematurely freed, while the child node was leaked.
Note that the CONFIG_OF compile guard can be removed as of_get_child_by_name() provides a !CONFIG_OF implementation which always fails.
--- drivers/mfd/twl6040.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
drivers/mfd/twl6040.c +8 -4
@@ -97,12 +97,16 @@ static struct reg_default twl6040_patch[ }; -static bool twl6040_has_vibra (struct device_node *node) +static bool twl6040_has_vibra (struct device_node *parent) { -#ifdef CONFIG_OF -if (of_find_node_by_name (node,"vibra" )) +struct device_node *node; + + node =of_get_child_by_name (parent,"vibra" ); +if (node) { +of_node_put (node);return true; -#endif + } +return false; }
Greg Kroah-Hartman
maintainerPATCH 5/32 ALSA: rawmidi: Avoid racy info ioctl via ctl device
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit c1cfd9025cc394fd137a01159d74335c5ac978ce upstream.
The rawmidi also allows to obtaining the information via ioctl of ctl API. It means that user can issue an ioctl to the rawmidi device even when it's being removed as long as the control device is present. Although the code has some protection via the global register_mutex, its range is limited to the search of the corresponding rawmidi object, and the mutex is already unlocked at accessing the rawmidi object. This may lead to a use-after-free.
For avoiding it, this patch widens the application of register_mutex to the whole snd_rawmidi_info_select() function. We have another mutex per rawmidi object, but this operation isn't very hot path, so it shouldn't matter from the performance POV.
--- sound/core/rawmidi.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
sound/core/rawmidi.c +12 -3
@@ -589,15 +589,14 @@ static int snd_rawmidi_info_user(structreturn 0 ; } -int snd_rawmidi_info_select (struct snd_card *card,struct snd_rawmidi_info *info) +static int __snd_rawmidi_info_select (struct snd_card *card, +struct snd_rawmidi_info *info) {struct snd_rawmidi *rmidi;struct snd_rawmidi_str *pstr;struct snd_rawmidi_substream *substream; -mutex_lock (®ister_mutex); rmidi =snd_rawmidi_search (card, info->device); -mutex_unlock (®ister_mutex);if (!rmidi)return -ENXIO ;if (info->stream <0 || info->stream >1 )
@@ -613,6 +612,16 @@ int snd_rawmidi_info_select(struct snd_c }return -ENXIO ; } + +int snd_rawmidi_info_select (struct snd_card *card,struct snd_rawmidi_info *info) +{ +int ret; + +mutex_lock (®ister_mutex); + ret =__snd_rawmidi_info_select (card, info); +mutex_unlock (®ister_mutex); +return ret; +}EXPORT_SYMBOL (snd_rawmidi_info_select); static int snd_rawmidi_info_select_user(struct snd_card *card,
Greg Kroah-Hartman
maintainerPATCH 6/32 ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 5a15f289ee87eaf33f13f08a4909ec99d837ec5f upstream.
The commit 89b89d121ffc ("ALSA: usb-audio: Add check return value for usb_string()") added the check of the return value from snd_usb_copy_string_desc(), which is correct per se, but it introduced a regression. In the original code, either the "Clock Source", "Playback Source" or "Capture Source" suffix is added after the terminal string, while the commit changed it to add the suffix only when get_term_name() is failing. It ended up with an incorrect ctl name like "PCM" instead of "PCM Capture Source".
Also, even the original code has a similar bug: when the ctl name is generated from snd_usb_copy_string_desc() for the given iSelector, it also doesn't put the suffix.
This patch addresses these issues: the suffix is added always when no static mapping is found. Also the patch tries to put more comments and cleans up the if/else block for better readability in order to avoid the same pitfall again.
--- sound/usb/mixer.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)
sound/usb/mixer.c +16 -11
@@ -2094,20 +2094,25 @@ static int parse_audio_selector_unit(str kctl->private_value = (unsigned long )namelist; kctl->private_free = usb_mixer_selector_elem_free; - nameid =uac_selector_unit_iSelector (desc); +/* check the static mapping table at first */ len =check_mapped_name (map, kctl->id.name,sizeof (kctl->id.name)); -if (len) - ; -else if (nameid) - len =snd_usb_copy_string_desc (state, nameid, kctl->id.name, -sizeof (kctl->id.name)); -else - len =get_term_name (state, &state->oterm, - kctl->id.name,sizeof (kctl->id.name),0 ); -if (!len) { -strlcpy (kctl->id.name,"USB" ,sizeof (kctl->id.name)); +/* no mapping ? */ +/* if iSelector is given, use it */ + nameid =uac_selector_unit_iSelector (desc); +if (nameid) + len =snd_usb_copy_string_desc (state, nameid, + kctl->id.name, +sizeof (kctl->id.name)); +/* ... or pick up the terminal name at next */ +if (!len) + len =get_term_name (state, &state->oterm, + kctl->id.name,sizeof (kctl->id.name),0 ); +/* ... or use the fixed string "USB" as the last resort */ +if (!len) +strlcpy (kctl->id.name,"USB" ,sizeof (kctl->id.name)); +/* and add the proper suffix */ if (desc->bDescriptorSubtype ==UAC2_CLOCK_SELECTOR )append_ctl_name (kctl," Clock Source" );else if ((state->oterm.type &0xff00 ) ==0x0100 )
Greg Kroah-Hartman
maintainerPATCH 7/32 PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafael J. Wysocki <[email protected]>
commit 5839ee7389e893a31e4e3c9cf17b50d14103c902 upstream.
It is incorrect to call pci_restore_state() for devices in low-power states (D1-D3), as that involves the restoration of MSI setup which requires MMIO to be operational and that is only the case in D0.
However, pci_pm_thaw_noirq() may do that if the driver's "freeze" callbacks put the device into a low-power state, so fix it by making it force devices into D0 via pci_set_power_state() instead of trying to "update" their power state which is pointless.
--- drivers/pci/pci-driver.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/pci/pci-driver.c +6 -1
@@ -924,7 +924,12 @@ static int pci_pm_thaw_noirq(struct deviif (pci_has_legacy_pm_support (pci_dev))return pci_legacy_resume_early (dev); -pci_update_current_state (pci_dev,PCI_D0 ); +/* +* pci_restore_state() requires the device to be in D0 (because of MSI +* restoration among other things), so force it into D0 in case the +* driver's "freeze" callbacks put it into a low-power state directly. +*/ +pci_set_power_state (pci_dev,PCI_D0 );pci_restore_state (pci_dev);if (drv && drv->pm && drv->pm->thaw_noirq)
Greg Kroah-Hartman
maintainerPATCH 8/32 parisc: Hide Diva-built-in serial aux and graphics card
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Helge Deller <[email protected]>
commit bcf3f1752a622f1372d3252d0fea8855d89812e7 upstream.
Diva GSP card has built-in serial AUX port and ATI graphic card which simply don't work and which both don't have external connectors. User Guides even mention that those devices shouldn't be used.
So, prevent that Linux drivers try to enable those devices.
--- drivers/parisc/lba_pci.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
drivers/parisc/lba_pci.c +33 -0
@@ -1652,3 +1652,36 @@ void lba_set_iregs(struct parisc_deviceiounmap (base_addr); } + +/* +* The design of the Diva management card in rp34x0 machines (rp3410, rp3440) +* seems rushed, so that many built-in components simply don't work. +* The following quirks disable the serial AUX port and the built-in ATI RV100 +* Radeon 7000 graphics card which both don't have any external connectors and +* thus are useless, and even worse, e.g. the AUX port occupies ttyS0 and as +* such makes those machines the only PARISC machines on which we can't use +* ttyS0 as boot console. +*/ +static void quirk_diva_ati_card (struct pci_dev *dev) +{ +if (dev->subsystem_vendor !=PCI_VENDOR_ID_HP || + dev->subsystem_device !=0x1292 ) +return ; + +dev_info (&dev->dev,"Hiding Diva built-in ATI card" ); + dev->device =0 ; +} +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_ATI ,PCI_DEVICE_ID_ATI_RADEON_QY , + quirk_diva_ati_card); + +static void quirk_diva_aux_disable (struct pci_dev *dev) +{ +if (dev->subsystem_vendor !=PCI_VENDOR_ID_HP || + dev->subsystem_device !=0x1291 ) +return ; + +dev_info (&dev->dev,"Hiding Diva built-in AUX serial device" ); + dev->device =0 ; +} +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_HP ,PCI_DEVICE_ID_HP_DIVA_AUX , + quirk_diva_aux_disable);
Greg Kroah-Hartman
maintainerPATCH 9/32 KVM: X86: Fix load RFLAGS w/o the fixed bit
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wanpeng Li <[email protected]>
commit d73235d17ba63b53dc0e1051dbc10a1f1be91b71 upstream.
*** Guest State ***
CR0: actual=0x0000000000000030, shadow=0x0000000060000010, gh_mask=fffffffffffffff7
CR4: actual=0x0000000000002050, shadow=0x0000000000000000, gh_mask=ffffffffffffe871 CR3 = 0x00000000fffbc000
RSP = 0x0000000000000000 RIP = 0x0000000000000000
RFLAGS=0x00000000 DR7 = 0x0000000000000400
^^^^^^^^^^
The failed vmentry is triggered by the following testcase when ept=Y:
#include <unistd.h>
#include <sys/syscall.h>
#include <string.h>
#include <stdint.h>
#include <linux/kvm.h>
#include <fcntl.h>
#include <sys/ioctl.h>
long r[5];
int main()
{
r[2] = open("/dev/kvm", O_RDONLY);
r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
struct kvm_regs regs = {
.rflags = 0,
};
ioctl(r[4], KVM_SET_REGS, ®s);
ioctl(r[4], KVM_RUN, 0);
}X86 RFLAGS bit 1 is fixed set, userspace can simply clearing bit 1 of RFLAGS with KVM_SET_REGS ioctl which results in vmentry fails. This patch fixes it by oring X86_EFLAGS_FIXED during ioctl.
--- arch/x86/kvm/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/kvm/x86.c +1 -1
@@ -6644,7 +6644,7 @@ int kvm_arch_vcpu_ioctl_set_regs(struct#endif kvm_rip_write (vcpu, regs->rip); -kvm_set_rflags (vcpu, regs->rflags); +kvm_set_rflags (vcpu, regs->rflags |X86_EFLAGS_FIXED ); vcpu->arch.exception.pending = false;
Greg Kroah-Hartman
maintainerPATCH 10/32 powerpc/perf: Dereference BHRB entries safely
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ravi Bangoria <[email protected]>
commit f41d84dddc66b164ac16acf3f584c276146f1c48 upstream.
It's theoretically possible that branch instructions recorded in BHRB (Branch History Rolling Buffer) entries have already been unmapped before they are processed by the kernel. Hence, trying to dereference such memory location will result in a crash. eg:
Unable to handle kernel paging request for data at address 0xd000000019c41764
Faulting instruction address: 0xc000000000084a14
NIP [c000000000084a14] branch_target+0x4/0x70
LR [c0000000000eb828] record_and_restart+0x568/0x5c0
Call Trace:
[c0000000000eb3b4] record_and_restart+0xf4/0x5c0 (unreliable)
[c0000000000ec378] perf_event_interrupt+0x298/0x460
[c000000000027964] performance_monitor_exception+0x54/0x70
[c000000000009ba4] performance_monitor_common+0x114/0x120Fix it by deferefencing the addresses safely.
--- arch/powerpc/perf/core-book3s.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
arch/powerpc/perf/core-book3s.c +6 -2
@@ -396,8 +396,12 @@ static __u64 power_pmu_bhrb_to(u64 addr)int ret;__u64 target; -if (is_kernel_addr (addr)) -return branch_target ((unsigned int *)addr); +if (is_kernel_addr (addr)) { +if (probe_kernel_read (&instr, (void *)addr,sizeof (instr))) +return 0 ; + +return branch_target (&instr); + }/* Userspace: need copy instruction here then translate it */ pagefault_disable ();
Greg Kroah-Hartman
maintainerPATCH 11/32 net: mvneta: clear interface link status on port disable
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yelena Krivosheev <[email protected]>
commit 4423c18e466afdfb02a36ee8b9f901d144b3c607 upstream.
When port connect to PHY in polling mode (with poll interval 1 sec), port and phy link status must be synchronize in order don't loss link change event.
--- drivers/net/ethernet/marvell/mvneta.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/net/ethernet/marvell/mvneta.c +4 -0
@@ -851,6 +851,10 @@ static void mvneta_port_disable(struct m val &= ~MVNETA_GMAC0_PORT_ENABLE ;mvreg_write (pp,MVNETA_GMAC_CTRL_0 , val); + pp->link =0 ; + pp->duplex =-1 ; + pp->speed =0 ; +udelay (200 ); }
Greg Kroah-Hartman
maintainerPATCH 12/32 tracing: Remove extra zeroing out of the ring buffer page
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt (VMware) <[email protected]>
commit 6b7e633fe9c24682df550e5311f47fb524701586 upstream.
The ring_buffer_read_page() takes care of zeroing out any extra data in the page that it returns. There's no need to zero it out again from the consumer. It was removed from one consumer of this function, but read_buffers_splice_read() did not remove it, and worse, it contained a nasty bug because of it.
--- kernel/trace/trace.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-)
kernel/trace/trace.c +1 -9
@@ -5502,7 +5502,7 @@ tracing_buffers_splice_read(struct file .spd_release = buffer_spd_release, };struct buffer_ref *ref; -int entries, size, i; +int entries, i;ssize_t ret =0 ;mutex_lock (&trace_types_lock);
@@ -5563,14 +5563,6 @@ tracing_buffers_splice_read(struct filebreak ; } -/* -* zero out any left over data, this is going to -* user land. -*/ - size =ring_buffer_page_len (ref->page); -if (size <PAGE_SIZE ) -memset (ref->page + size,0 ,PAGE_SIZE - size); - page =virt_to_page (ref->page); spd.pages[i] = page;
Greg Kroah-Hartman
maintainerPATCH 13/32 tracing: Fix possible double free on failure of allocating trace buffer
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt (VMware) <[email protected]>
commit 4397f04575c44e1440ec2e49b6302785c95fd2f8 upstream.
Jing Xia and Chunyan Zhang reported that on failing to allocate part of the tracing buffer, memory is freed, but the pointers that point to them are not initialized back to NULL, and later paths may try to free the freed memory again. Jing and Chunyan fixed one of the locations that does this, but missed a spot.
--- kernel/trace/trace.c | 1 + 1 file changed, 1 insertion(+)
kernel/trace/trace.c +1 -0
@@ -6244,6 +6244,7 @@ allocate_trace_buffer(struct trace_array buf->data = alloc_percpu(struct trace_array_cpu);if (!buf->data) {ring_buffer_free (buf->buffer); + buf->buffer =NULL ;return -ENOMEM ; }
Greg Kroah-Hartman
maintainerPATCH 14/32 tracing: Fix crash when it fails to alloc ring buffer
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jing Xia <[email protected]>
commit 24f2aaf952ee0b59f31c3a18b8b36c9e3d3c2cf5 upstream.
Double free of the ring buffer happens when it fails to alloc new ring buffer instance for max_buffer if TRACER_MAX_TRACE is configured. The root cause is that the pointer is not set to NULL after the buffer is freed in allocate_trace_buffers(), and the freeing of the ring buffer is invoked again later if the pointer is not equal to Null, as:
instance_mkdir()
|-allocate_trace_buffers()
|-allocate_trace_buffer(tr, &tr->trace_buffer...)
|-allocate_trace_buffer(tr, &tr->max_buffer...)
// allocate fail(-ENOMEM),first free
// and the buffer pointer is not set to null
|-ring_buffer_free(tr->trace_buffer.buffer)
// out_free_tr
|-free_trace_buffers()
|-free_trace_buffer(&tr->trace_buffer);
//if trace_buffer is not null, free again
|-ring_buffer_free(buf->buffer)
|-rb_free_cpu_buffer(buffer->buffers[cpu])
// ring_buffer_per_cpu is null, and
// crash in ring_buffer_per_cpu->pages--- kernel/trace/trace.c | 2 ++ 1 file changed, 2 insertions(+)
kernel/trace/trace.c +2 -0
@@ -6268,7 +6268,9 @@ static int allocate_trace_buffers(struct allocate_snapshot ? size : 1);if (WARN_ON (ret)) {ring_buffer_free (tr->trace_buffer.buffer); + tr->trace_buffer.buffer =NULL ;free_percpu (tr->trace_buffer.data); + tr->trace_buffer.data =NULL ;return -ENOMEM ; } tr->allocated_snapshot = allocate_snapshot;
Greg Kroah-Hartman
maintainerPATCH 15/32 ring-buffer: Mask out the info bits when returning buffer page length
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt (VMware) <[email protected]>
commit 45d8b80c2ac5d21cd1e2954431fb676bc2b1e099 upstream.
Two info bits were added to the "commit" part of the ring buffer data page when returned to be consumed. This was to inform the user space readers that events have been missed, and that the count may be stored at the end of the page.
What wasn't handled, was the splice code that actually called a function to return the length of the data in order to zero out the rest of the page before sending it up to user space. These data bits were returned with the length making the value negative, and that negative value was not checked. It was compared to PAGE_SIZE, and only used if the size was less than PAGE_SIZE. Luckily PAGE_SIZE is unsigned long which made the compare an unsigned compare, meaning the negative size value did not end up causing a large portion of memory to be randomly zeroed out.
--- kernel/trace/ring_buffer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
kernel/trace/ring_buffer.c +5 -1
@@ -336,6 +336,8 @@ EXPORT_SYMBOL_GPL(ring_buffer_event_data/* Missed count stored at end */ #define RB_MISSED_STORED (1 << 30) +#define RB_MISSED_FLAGS (RB_MISSED_EVENTS|RB_MISSED_STORED) +struct buffer_data_page {u64 time_stamp;/* page time stamp */ local_t commit;/* write committed index */
@@ -387,7 +389,9 @@ static void rb_init_page(struct buffer_d*/ size_t ring_buffer_page_len (void *page) { -return local_read (&((struct buffer_data_page *)page)->commit) +struct buffer_data_page *bpage = page; + +return (local_read (&bpage->commit) & ~RB_MISSED_FLAGS ) +BUF_PAGE_HDR_SIZE ; }
Greg Kroah-Hartman
maintainerPATCH 16/32 ASoC: twl4030: fix child-node lookup
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <[email protected]>
commit 15f8c5f2415bfac73f33a14bcd83422bcbfb5298 upstream.
Fix child-node lookup during probe, which ended up searching the whole device tree depth-first starting at the parent rather than just matching on its children.
To make things worse, the parent codec node was also prematurely freed, while the child node was leaked.
--- sound/soc/codecs/twl4030.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
sound/soc/codecs/twl4030.c +3 -1
@@ -232,7 +232,7 @@ static struct twl4030_codec_data *twl403struct twl4030_codec_data *pdata =dev_get_platdata (codec->dev);struct device_node *twl4030_codec_node =NULL ; - twl4030_codec_node =of_find_node_by_name (codec->dev->parent->of_node, + twl4030_codec_node =of_get_child_by_name (codec->dev->parent->of_node,"codec" );if (!pdata && twl4030_codec_node) {
@@ -241,9 +241,11 @@ static struct twl4030_codec_data *twl403 GFP_KERNEL);if (!pdata) {dev_err (codec->dev,"Can not allocate memory\n" ); +of_node_put (twl4030_codec_node);return NULL ; }twl4030_setup_pdata_of (pdata, twl4030_codec_node); +of_node_put (twl4030_codec_node); }return pdata;
Greg Kroah-Hartman
maintainerPATCH 17/32 kbuild: add -fno-stack-check to kernel build options
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Torvalds <[email protected]>
commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream.
It appears that hardened gentoo enables "-fstack-check" by default for gcc.
That doesn't work _at_all_ for the kernel, because the kernel stack doesn't act like a user stack at all: it's much smaller, and it doesn't auto-expand on use. So the extra "probe one page below the stack" code generated by -fstack-check just breaks the kernel in horrible ways, causing infinite double faults etc.
[ I have to say, that the particular code gcc generates looks very
stupid even for user space where it works, but that's a separate issue. ]
--- Makefile | 3 +++ 1 file changed, 3 insertions(+)
Makefile +3 -0
@@ -762,6 +762,9 @@ KBUILD_CFLAGS += $(call cc-disable-warni # disable invalid "can't wrap" optimizations for signed / pointers KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) +# Make sure -fstack-check isn't enabled (like gentoo apparently did) +KBUILD_CFLAGS += $(call cc-option,-fno-stack-check,) + # conserve stack if available KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
Greg Kroah-Hartman
maintainerPATCH 18/32 ipv4: igmp: guard against silly MTU values
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit b5476022bbada3764609368f03329ca287528dc8 ]
IPv4 stack reacts to changes to small MTU, by disabling itself under RTNL.
But there is a window where threads not using RTNL can see a wrong device mtu. This can lead to surprises, in igmp code where it is assumed the mtu is suitable.
Fix this by reading device mtu once and checking IPv4 minimal MTU.
This patch adds missing IPV4_MIN_MTU define, to not abuse ETH_MIN_MTU anymore.
--- include/net/ip.h | 2 ++ net/ipv4/devinet.c | 2 +- net/ipv4/igmp.c | 24 +++++++++++++++--------- net/ipv4/ip_tunnel.c | 4 ++-- 4 files changed, 20 insertions(+), 12 deletions(-)
include/net/ip.h +2 -0
@@ -33,6 +33,8 @@#include <net/flow.h> #include <net/flow_keys.h> +#define IPV4_MIN_MTU 68/* RFC 791 */ +struct sock ;struct inet_skb_parm {
net/ipv4/devinet.c +1 -1
@@ -1328,7 +1328,7 @@ skip:static bool inetdev_valid_mtu (unsigned int mtu) { -return mtu >=68 ; +return mtu >=IPV4_MIN_MTU ; } static void inetdev_send_gratuitous_arp(struct net_device *dev,
net/ipv4/igmp.c +15 -9
@@ -402,16 +402,17 @@ static int grec_size(struct ip_mc_list * }static struct sk_buff *add_grhead (struct sk_buff *skb,struct ip_mc_list *pmc, -int type,struct igmpv3_grec **ppgr) +int type,struct igmpv3_grec **ppgr,unsigned int mtu) {struct net_device *dev = pmc->interface->dev;struct igmpv3_report *pih;struct igmpv3_grec *pgr; -if (!skb) - skb =igmpv3_newpack (dev, dev->mtu); -if (!skb) -return NULL ; +if (!skb) { + skb =igmpv3_newpack (dev, mtu); +if (!skb) +return NULL ; + } pgr = (struct igmpv3_grec *)skb_put (skb,sizeof (struct igmpv3_grec )); pgr->grec_type = type; pgr->grec_auxwords =0 ;
@@ -433,10 +434,15 @@ static struct sk_buff *add_grec(struct sstruct igmpv3_grec *pgr =NULL ;struct ip_sf_list *psf, *psf_next, *psf_prev, **psf_list;int scount, stotal, first, isquery, truncate; +unsigned int mtu;if (pmc->multiaddr ==IGMP_ALL_HOSTS )return skb; + mtu =READ_ONCE (dev->mtu); +if (mtu <IPV4_MIN_MTU ) +return skb; + isquery = type ==IGMPV3_MODE_IS_INCLUDE || type ==IGMPV3_MODE_IS_EXCLUDE ; truncate = type == IGMPV3_MODE_IS_EXCLUDE ||
@@ -457,7 +463,7 @@ static struct sk_buff *add_grec(struct s AVAILABLE(skb) < grec_size(pmc, type, gdeleted, sdeleted)) {if (skb)igmpv3_sendpack (skb); - skb =igmpv3_newpack (dev, dev->mtu); + skb =igmpv3_newpack (dev, mtu); } } first =1 ;
@@ -484,12 +490,12 @@ static struct sk_buff *add_grec(struct s pgr->grec_nsrcs =htons (scount);if (skb)igmpv3_sendpack (skb); - skb =igmpv3_newpack (dev, dev->mtu); + skb =igmpv3_newpack (dev, mtu); first =1 ; scount =0 ; }if (first) { - skb =add_grhead (skb, pmc, type, &pgr); + skb =add_grhead (skb, pmc, type, &pgr, mtu); first =0 ; }if (!skb)
@@ -523,7 +529,7 @@ empty_source:igmpv3_sendpack (skb); skb =NULL ;/* add_grhead will get a new one */ } - skb =add_grhead (skb, pmc, type, &pgr); + skb =add_grhead (skb, pmc, type, &pgr, mtu); } }if (pgr)
net/ipv4/ip_tunnel.c +2 -2
@@ -395,8 +395,8 @@ static int ip_tunnel_bind_dev(struct net dev->needed_headroom = t_hlen + hlen; mtu -= (dev->hard_header_len + t_hlen); -if (mtu <68 ) - mtu =68 ; +if (mtu <IPV4_MIN_MTU ) + mtu =IPV4_MIN_MTU ;return mtu; }
Greg Kroah-Hartman
maintainerPATCH 19/32 ipv6: mcast: better catch silly mtu values
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit b9b312a7a451e9c098921856e7cfbc201120e1a7 ]
syzkaller reported crashes in IPv6 stack [1]
Xin Long found that lo MTU was set to silly values.
IPv6 stack reacts to changes to small MTU, by disabling itself under RTNL.
But there is a window where threads not using RTNL can see a wrong device mtu. This can lead to surprises, in mld code where it is assumed the mtu is suitable.
Fix this by reading device mtu once and checking IPv6 minimal MTU.
[1]
skbuff: skb_over_panic: text:0000000010b86b8d len:196 put:20 head:000000003b477e60 data:000000000e85441e tail:0xd4 end:0xc0 dev:lo
------------[ cut here ]------------
kernel BUG at net/core/skbuff.c:104!
invalid opcode: 0000 [#1] SMP KASAN
Dumping ftrace buffer:
(ftrace buffer empty)
Modules linked in:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.15.0-rc2-mm1+ #39
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
RIP: 0010:skb_panic+0x15c/0x1f0 net/core/skbuff.c:100
RSP: 0018:ffff8801db307508 EFLAGS: 00010286
RAX: 0000000000000082 RBX: ffff8801c517e840 RCX: 0000000000000000
RDX: 0000000000000082 RSI: 1ffff1003b660e61 RDI: ffffed003b660e95
RBP: ffff8801db307570 R08: 1ffff1003b660e23 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff85bd4020
R13: ffffffff84754ed2 R14: 0000000000000014 R15: ffff8801c4e26540
FS: 0000000000000000(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000463610 CR3: 00000001c6698000 CR4: 00000000001406e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<IRQ>
skb_over_panic net/core/skbuff.c:109 [inline]
skb_put+0x181/0x1c0 net/core/skbuff.c:1694
add_grhead.isra.24+0x42/0x3b0 net/ipv6/mcast.c:1695
add_grec+0xa55/0x1060 net/ipv6/mcast.c:1817
mld_send_cr net/ipv6/mcast.c:1903 [inline]
mld_ifc_timer_expire+0x4d2/0x770 net/ipv6/mcast.c:2448
call_timer_fn+0x23b/0x840 kernel/time/timer.c:1320
expire_timers kernel/time/timer.c:1357 [inline]
__run_timers+0x7e1/0xb60 kernel/time/timer.c:1660
run_timer_softirq+0x4c/0xb0 kernel/time/timer.c:1686
__do_softirq+0x29d/0xbb2 kernel/softirq.c:285
invoke_softirq kernel/softirq.c:365 [inline]
irq_exit+0x1d3/0x210 kernel/softirq.c:405
exiting_irq arch/x86/include/asm/apic.h:540 [inline]
smp_apic_timer_interrupt+0x16b/0x700 arch/x86/kernel/apic/apic.c:1052
apic_timer_interrupt+0xa9/0xb0 arch/x86/entry/entry_64.S:920--- net/ipv6/mcast.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)
net/ipv6/mcast.c +15 -10
@@ -1670,16 +1670,16 @@ static int grec_size(struct ifmcaddr6 *p }static struct sk_buff *add_grhead (struct sk_buff *skb,struct ifmcaddr6 *pmc, -int type,struct mld2_grec **ppgr) +int type,struct mld2_grec **ppgr,unsigned int mtu) { -struct net_device *dev = pmc->idev->dev;struct mld2_report *pmr;struct mld2_grec *pgr; -if (!skb) - skb =mld_newpack (pmc->idev, dev->mtu); -if (!skb) -return NULL ; +if (!skb) { + skb =mld_newpack (pmc->idev, mtu); +if (!skb) +return NULL ; + } pgr = (struct mld2_grec *)skb_put (skb,sizeof (struct mld2_grec )); pgr->grec_type = type; pgr->grec_auxwords =0 ;
@@ -1702,10 +1702,15 @@ static struct sk_buff *add_grec(struct sstruct mld2_grec *pgr =NULL ;struct ip6_sf_list *psf, *psf_next, *psf_prev, **psf_list;int scount, stotal, first, isquery, truncate; +unsigned int mtu;if (pmc->mca_flags &MAF_NOREPORT )return skb; + mtu =READ_ONCE (dev->mtu); +if (mtu <IPV6_MIN_MTU ) +return skb; + isquery = type ==MLD2_MODE_IS_INCLUDE || type ==MLD2_MODE_IS_EXCLUDE ; truncate = type == MLD2_MODE_IS_EXCLUDE ||
@@ -1726,7 +1731,7 @@ static struct sk_buff *add_grec(struct s AVAILABLE(skb) < grec_size(pmc, type, gdeleted, sdeleted)) {if (skb)mld_sendpack (skb); - skb =mld_newpack (idev, dev->mtu); + skb =mld_newpack (idev, mtu); } } first =1 ;
@@ -1753,12 +1758,12 @@ static struct sk_buff *add_grec(struct s pgr->grec_nsrcs =htons (scount);if (skb)mld_sendpack (skb); - skb =mld_newpack (idev, dev->mtu); + skb =mld_newpack (idev, mtu); first =1 ; scount =0 ; }if (first) { - skb =add_grhead (skb, pmc, type, &pgr); + skb =add_grhead (skb, pmc, type, &pgr, mtu); first =0 ; }if (!skb)
@@ -1792,7 +1797,7 @@ empty_source:mld_sendpack (skb); skb =NULL ;/* add_grhead will get a new one */ } - skb =add_grhead (skb, pmc, type, &pgr); + skb =add_grhead (skb, pmc, type, &pgr, mtu); } }if (pgr)
Greg Kroah-Hartman
maintainerPATCH 20/32 net: igmp: Use correct source address on IGMPv3 reports
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kevin Cernekee <[email protected]>
[ Upstream commit a46182b00290839fa3fa159d54fd3237bd8669f0 ]
Closing a multicast socket after the final IPv4 address is deleted from an interface can generate a membership report that uses the source IP from a different interface. The following test script, run from an isolated netns, reproduces the issue:
#!/bin/bash
ip link add dummy0 type dummy
ip link add dummy1 type dummy
ip link set dummy0 up
ip link set dummy1 up
ip addr add 10.1.1.1/24 dev dummy0
ip addr add 192.168.99.99/24 dev dummy1
tcpdump -U -i dummy0 &
socat EXEC:"sleep 2" \
UDP4-DATAGRAM:239.101.1.68:8889,ip-add-membership=239.0.1.68:10.1.1.1 &
sleep 1
ip addr del 10.1.1.1/24 dev dummy0
sleep 5
kill %tcpdumpRFC 3376 specifies that the report must be sent with a valid IP source address from the destination subnet, or from address 0.0.0.0. Add an extra check to make sure this is the case.
--- net/ipv4/igmp.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
net/ipv4/igmp.c +19 -1
@@ -89,6 +89,7 @@#include <linux/rtnetlink.h> #include <linux/times.h> #include <linux/pkt_sched.h> +#include <linux/byteorder/generic.h> #include <net/net_namespace.h> #include <net/arp.h>
@@ -318,6 +319,23 @@ igmp_scount(struct ip_mc_list *pmc, intreturn scount; } +/* source address selection per RFC 3376 section 4.2.13 */ +static __be32 igmpv3_get_srcaddr (struct net_device *dev, +const struct flowi4 *fl4) +{ +struct in_device *in_dev =__in_dev_get_rcu (dev); + +if (!in_dev) +return htonl (INADDR_ANY ); + +for_ifa (in_dev) { +if (inet_ifa_match (fl4->saddr, ifa)) +return fl4->saddr; + }endfor_ifa (in_dev); + +return htonl (INADDR_ANY ); +} +static struct sk_buff *igmpv3_newpack (struct net_device *dev,unsigned int mtu) {struct sk_buff *skb;
@@ -366,7 +384,7 @@ static struct sk_buff *igmpv3_newpack(st pip->frag_off =htons (IP_DF ); pip->ttl =1 ; pip->daddr = fl4.daddr; - pip->saddr = fl4.saddr; + pip->saddr =igmpv3_get_srcaddr (dev, &fl4); pip->protocol =IPPROTO_IGMP ; pip->tot_len =0 ;/* filled in later */ ip_select_ident (skb,NULL );
Greg Kroah-Hartman
maintainerPATCH 21/32 netlink: Add netns check on taps
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kevin Cernekee <[email protected]>
[ Upstream commit 93c647643b48f0131f02e45da3bd367d80443291 ]
Currently, a nlmon link inside a child namespace can observe systemwide netlink activity. Filter the traffic so that nlmon can only sniff netlink messages from its own netns.
Test case:
vpnns -- bash -c "ip link add nlmon0 type nlmon; \
ip link set nlmon0 up; \
tcpdump -i nlmon0 -q -w /tmp/nlmon.pcap -U" &
sudo ip xfrm state add src 10.1.1.1 dst 10.1.1.2 proto esp \
spi 0x1 mode transport \
auth sha1 0x6162633132330000000000000000000000000000 \
enc aes 0x00000000000000000000000000000000
grep --binary abc123 /tmp/nlmon.pcap--- net/netlink/af_netlink.c | 3 +++ 1 file changed, 3 insertions(+)
net/netlink/af_netlink.c +3 -0
@@ -270,6 +270,9 @@ static int __netlink_deliver_tap_skb(strstruct sock *sk = skb->sk;int ret = -ENOMEM ; +if (!net_eq (dev_net (dev),sock_net (sk))) +return 0 ; +dev_hold (dev);if (is_vmalloc_addr (skb->head))
Greg Kroah-Hartman
maintainerPATCH 22/32 net: qmi_wwan: add Sierra EM7565 1199:9091
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sebastian Sjoholm <[email protected]>
[ Upstream commit aceef61ee56898cfa7b6960fb60b9326c3860441 ]
Sierra Wireless EM7565 is an Qualcomm MDM9x50 based M.2 modem. The USB id is added to qmi_wwan.c to allow QMI communication with the EM7565.
--- drivers/net/usb/qmi_wwan.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/usb/qmi_wwan.c +1 -0
@@ -778,6 +778,7 @@ static const struct usb_device_id produc {QMI_FIXED_INTF(0x1199, 0x9079, 10)}, /* Sierra Wireless EM74xx */ {QMI_FIXED_INTF(0x1199, 0x907b, 8)}, /* Sierra Wireless EM74xx */ {QMI_FIXED_INTF(0x1199, 0x907b, 10)}, /* Sierra Wireless EM74xx */ + {QMI_FIXED_INTF(0x1199, 0x9091, 8)}, /* Sierra Wireless EM7565 */ {QMI_FIXED_INTF(0x1bbb, 0x011e, 4)}, /* Telekom Speedstick LTE II (Alcatel One Touch L100V LTE) */ {QMI_FIXED_INTF(0x1bbb, 0x0203, 2)}, /* Alcatel L800MA */ {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */
Greg Kroah-Hartman
maintainerPATCH 23/32 tcp md5sig: Use skbs saddr when replying to an incoming segment
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Paasch <[email protected]>
[ Upstream commit 30791ac41927ebd3e75486f9504b6d2280463bf0 ]
The MD5-key that belongs to a connection is identified by the peer's IP-address. When we are in tcp_v4(6)_reqsk_send_ack(), we are replying to an incoming segment from tcp_check_req() that failed the seq-number checks.
Thus, to find the correct key, we need to use the skb's saddr and not the daddr.
This bug seems to have been there since quite a while, but probably got unnoticed because the consequences are not catastrophic. We will call tcp_v4_reqsk_send_ack only to send a challenge-ACK back to the peer, thus the connection doesn't really fail.
--- net/ipv4/tcp_ipv4.c | 2 +- net/ipv6/tcp_ipv6.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
net/ipv4/tcp_ipv4.c +1 -1
@@ -810,7 +810,7 @@ static void tcp_v4_reqsk_send_ack(struct tcp_time_stamp, req->ts_recent,0 , -tcp_md5_do_lookup (sk, (union tcp_md5_addr *)&ip_hdr (skb)->daddr, +tcp_md5_do_lookup (sk, (union tcp_md5_addr *)&ip_hdr (skb)->saddr,AF_INET ),inet_rsk (req)->no_srccheck ?IP_REPLY_ARG_NOSRCCHECK :0 , ip_hdr(skb)->tos);
net/ipv6/tcp_ipv6.c +1 -1
@@ -1001,7 +1001,7 @@ static void tcp_v6_reqsk_send_ack(struct tcp_rsk(req)->snt_isn + 1 : tcp_sk(sk)->snd_nxt,tcp_rsk (req)->rcv_nxt, req->rcv_wnd, tcp_time_stamp, req->ts_recent, sk->sk_bound_dev_if, -tcp_v6_md5_do_lookup (sk, &ipv6_hdr (skb)->daddr), +tcp_v6_md5_do_lookup (sk, &ipv6_hdr (skb)->saddr), 0, 0); }
Greg Kroah-Hartman
maintainerPATCH 24/32 tg3: Fix rx hang on MTU change with 5717/5719
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brian King <[email protected]>
[ Upstream commit 748a240c589824e9121befb1cba5341c319885bc ]
This fixes a hang issue seen when changing the MTU size from 1500 MTU to 9000 MTU on both 5717 and 5719 chips. In discussion with Broadcom, they've indicated that these chipsets have the same phy as the 57766 chipset, so the same workarounds apply. This has been tested by IBM on both Power 8 and Power 9 systems as well as by Broadcom on x86 hardware and has been confirmed to resolve the hang issue.
--- drivers/net/ethernet/broadcom/tg3.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/net/ethernet/broadcom/tg3.c +3 -1
@@ -14202,7 +14202,9 @@ static int tg3_change_mtu(struct net_dev/* Reset PHY, otherwise the read DMA engine will be in a mode that * breaks all requests to 256 bytes. */ -if (tg3_asic_rev (tp) ==ASIC_REV_57766 ) +if (tg3_asic_rev (tp) ==ASIC_REV_57766 || +tg3_asic_rev (tp) ==ASIC_REV_5717 || +tg3_asic_rev (tp) ==ASIC_REV_5719 ) reset_phy = true; err =tg3_restart_hw (tp, reset_phy);
Greg Kroah-Hartman
maintainerPATCH 25/32 net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tobias Jordan <[email protected]>
[ Upstream commit 589bf32f09852041fbd3b7ce1a9e703f95c230ba ]
add appropriate calls to clk_disable_unprepare() by jumping to out_mdio in case orion_mdio_probe() returns -EPROBE_DEFER.
Found by Linux Driver Verification project (linuxtesting.org).
--- drivers/net/ethernet/marvell/mvmdio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/net/ethernet/marvell/mvmdio.c +2 -1
@@ -241,7 +241,8 @@ static int orion_mdio_probe(struct platf dev->regs + MVMDIO_ERR_INT_MASK); }else if (dev->err_interrupt == -EPROBE_DEFER ) { -return -EPROBE_DEFER ; + ret = -EPROBE_DEFER ; + goto out_mdio; }mutex_init (&dev->lock);
Greg Kroah-Hartman
maintainerPATCH 26/32 sctp: Replace use of sockets_allocated with specified macro.
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tonghao Zhang <[email protected]>
[ Upstream commit 8cb38a602478e9f806571f6920b0a3298aabf042 ]
The patch(180d8cd942ce) replaces all uses of struct sock fields' memory_pressure, memory_allocated, sockets_allocated, and sysctl_mem to accessor macros. But the sockets_allocated field of sctp sock is not replaced at all. Then replace it now for unifying the code.
--- net/sctp/socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/sctp/socket.c +2 -2
@@ -4166,7 +4166,7 @@ static int sctp_init_sock(struct sock *sSCTP_DBG_OBJCNT_INC (sock);local_bh_disable (); -percpu_counter_inc (&sctp_sockets_allocated); +sk_sockets_allocated_inc (sk);sock_prot_inuse_add (net, sk->sk_prot,1 );/* Nothing can fail after this block, otherwise
@@ -4210,7 +4210,7 @@ static void sctp_destroy_sock(struct soc }sctp_endpoint_free (sp->ep);local_bh_disable (); -percpu_counter_dec (&sctp_sockets_allocated); +sk_sockets_allocated_dec (sk);sock_prot_inuse_add (sock_net (sk), sk->sk_prot,-1 );local_bh_enable (); }
Greg Kroah-Hartman
maintainerPATCH 27/32 net: ipv4: fix for a race condition in raw_sendmsg
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mohamed Ghannam <[email protected]>
[ Upstream commit 8f659a03a0ba9289b9aeb9b4470e6fb263d6f483 ]
inet->hdrincl is racy, and could lead to uninitialized stack pointer usage, so its value should be read only once.
--- net/ipv4/raw.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
net/ipv4/raw.c +10 -5
@@ -483,11 +483,16 @@ static int raw_sendmsg(struct kiocb *iocu8 tos;int err;struct ip_options_data opt_copy; +int hdrincl; err = -EMSGSIZE ;if (len >0xFFFF ) goto out; +/* hdrincl should be READ_ONCE(inet->hdrincl) +* but READ_ONCE() doesn't work with bit fields +*/ + hdrincl = inet->hdrincl;/* * Check the flags. */
@@ -560,7 +565,7 @@ static int raw_sendmsg(struct kiocb *ioc/* Linux does not mangle headers on raw sockets, * so that IP options + IP_HDRINCL is non-sense. */ -if (inet->hdrincl) +if (hdrincl) goto done;if (ipc.opt->opt.srr) {if (!daddr)
@@ -582,12 +587,12 @@ static int raw_sendmsg(struct kiocb *iocflowi4_init_output (&fl4, ipc.oif, sk->sk_mark, tos,RT_SCOPE_UNIVERSE , - inet->hdrincl ?IPPROTO_RAW : sk->sk_protocol, + hdrincl ?IPPROTO_RAW : sk->sk_protocol,inet_sk_flowi_flags (sk) | - (inet->hdrincl ?FLOWI_FLAG_KNOWN_NH :0 ), + (hdrincl ?FLOWI_FLAG_KNOWN_NH :0 ), daddr, saddr,0 ,0 ); -if (!inet->hdrincl) { +if (!hdrincl) { err =raw_probe_proto_opt (&fl4, msg);if (err) goto done;
@@ -609,7 +614,7 @@ static int raw_sendmsg(struct kiocb *ioc goto do_confirm; back_from_confirm: -if (inet->hdrincl) +if (hdrincl) err =raw_send_hdrinc (sk, &fl4, msg->msg_iov, len, &rt, msg->msg_flags);
Greg Kroah-Hartman
maintainerPATCH 28/32 USB: serial: option: add support for Telit ME910 PID 0x1101
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniele Palmas <[email protected]>
commit 08933099e6404f588f81c2050bfec7313e06eeaf upstream.
This patch adds support for PID 0x1101 of Telit ME910.
--- drivers/usb/serial/option.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/usb/serial/option.c +8 -0
@@ -276,6 +276,7 @@ static void option_instat_callback(struc#define TELIT_PRODUCT_LE922_USBCFG3 0x1043#define TELIT_PRODUCT_LE922_USBCFG5 0x1045#define TELIT_PRODUCT_ME910 0x1100 +#define TELIT_PRODUCT_ME910_DUAL_MODEM 0x1101#define TELIT_PRODUCT_LE920 0x1200#define TELIT_PRODUCT_LE910 0x1201#define TELIT_PRODUCT_LE910_USBCFG4 0x1206
@@ -644,6 +645,11 @@ static const struct option_blacklist_inf .reserved = BIT(1) | BIT(3), }; +static const struct option_blacklist_info telit_me910_dual_modem_blacklist = { + .sendsetup =BIT (0 ), + .reserved =BIT (3 ), +}; +static const struct option_blacklist_info telit_le910_blacklist = { .sendsetup =BIT (0 ), .reserved =BIT (1 ) |BIT (2 ),
@@ -1242,6 +1248,8 @@ static const struct usb_device_id option .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = (kernel_ulong_t)&telit_me910_blacklist }, + { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM), + .driver_info = (kernel_ulong_t)&telit_me910_dual_modem_blacklist }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910), .driver_info = (kernel_ulong_t)&telit_le910_blacklist }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
Greg Kroah-Hartman
maintainerPATCH 29/32 usb: Add device quirk for Logitech HD Pro Webcam C925e
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Fleytman Dmitry Fleytman <[email protected]>
commit 7f038d256c723dd390d2fca942919573995f4cfd upstream.
Commit e0429362ab15
("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e") introduced quirk to workaround an issue with some Logitech webcams.
There is one more model that has the same issue - C925e, so applying the same quirk as well.
See aforementioned commit message for detailed explanation of the problem.
--- drivers/usb/core/quirks.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/usb/core/quirks.c +2 -1
@@ -53,10 +53,11 @@ static const struct usb_device_id usb_qu/* Microsoft LifeCam-VX700 v2.0 */ { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, - /* Logitech HD Pro Webcams C920, C920-C and C930e */ + /* Logitech HD Pro Webcams C920, C920-C, C925e and C930e */ { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT }, { USB_DEVICE(0x046d, 0x0841), .driver_info = USB_QUIRK_DELAY_INIT }, { USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT }, + { USB_DEVICE(0x046d, 0x085b), .driver_info = USB_QUIRK_DELAY_INIT }, /* Logitech ConferenceCam CC3000e */ { USB_DEVICE(0x046d, 0x0847), .driver_info = USB_QUIRK_DELAY_INIT },
Greg Kroah-Hartman
maintainerPATCH 30/32 usb: add RESET_RESUME for ELSA MicroLink 56K
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Oliver Neukum <[email protected]>
commit b9096d9f15c142574ebebe8fbb137012bb9d99c2 upstream.
This modem needs this quirk to operate. It produces timeouts when resumed without reset.
--- drivers/usb/core/quirks.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/core/quirks.c +3 -0
@@ -148,6 +148,9 @@ static const struct usb_device_id usb_qu/* Genesys Logic hub, internally used by KY-688 USB 3.1 Type-C Hub */ { USB_DEVICE(0x05e3, 0x0612), .driver_info = USB_QUIRK_NO_LPM }, + /* ELSA MicroLink 56K */ + { USB_DEVICE(0x05cc, 0x2267), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Genesys Logic hub, internally used by Moshi USB to Ethernet Adapter */ { USB_DEVICE(0x05e3, 0x0616), .driver_info = USB_QUIRK_NO_LPM },
Greg Kroah-Hartman
maintainerPATCH 31/32 usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Thompson <[email protected]>
commit da99706689481717998d1d48edd389f339eea979 upstream.
When plugging in a USB webcam I see the following message:xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs XHCI_TRUST_TX_LENGTH quirk?handle_tx_event: 913 callbacks suppressed
All is quiet again with this patch (and I've done a fair but of soak testing with the camera since).
--- drivers/usb/host/xhci-pci.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/host/xhci-pci.c +3 -0
@@ -172,6 +172,9 @@ static void xhci_pci_quirks(struct devic xhci->quirks |=XHCI_BROKEN_STREAMS ; }if (pdev->vendor ==PCI_VENDOR_ID_RENESAS && + pdev->device ==0x0014 ) + xhci->quirks |=XHCI_TRUST_TX_LENGTH ; +if (pdev->vendor ==PCI_VENDOR_ID_RENESAS && pdev->device ==0x0015 ) xhci->quirks |=XHCI_RESET_ON_RESUME ;if (pdev->vendor ==PCI_VENDOR_ID_VIA )
Greg Kroah-Hartman
maintainerPATCH 32/32 n_tty: fix EXTPROC vs ICANON interaction with TIOCINQ (aka FIONREAD)
In reply to Greg Kroah-Hartman3.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Torvalds <[email protected]>
commit 966031f340185eddd05affcf72b740549f056348 upstream.
We added support for EXTPROC back in 2010 in commit 26df6d13406d ("tty:
Add EXTPROC support for LINEMODE") and the intent was to allow it to override some (all?) ICANON behavior. Quoting from that original commit message:
There is a new bit in the termios local flag word, EXTPROC. When this bit is set, several aspects of the terminal driver are disabled. Input line editing, character echo, and mapping of signals are all disabled. This allows the telnetd to turn off these functions when in linemode, but still keep track of what state the user wants the terminal to be in.
but the problem turns out that "several aspects of the terminal driver are disabled" is a bit ambiguous, and you can really confuse the n_tty layer by setting EXTPROC and then causing some of the ICANON invariants to no longer be maintained.
This fixes at least one such case (TIOCINQ) becoming unhappy because of the confusion over whether ICANON really means ICANON when EXTPROC is set.
This basically makes TIOCINQ match the case of read: if EXTPROC is set, we ignore ICANON. Also, make sure to reset the ICANON state ie EXTPROC changes, not just if ICANON changes.
--- drivers/tty/n_tty.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/tty/n_tty.c +2 -2
@@ -1809,7 +1809,7 @@ static void n_tty_set_termios(struct tty {struct n_tty_data *ldata = tty->disc_data; -if (!old || (old->c_lflag ^ tty->termios.c_lflag) &ICANON ) { +if (!old || (old->c_lflag ^ tty->termios.c_lflag) & (ICANON |EXTPROC )) {bitmap_zero (ldata->read_flags,N_TTY_BUF_SIZE ); ldata->line_start = ldata->read_tail;if (!L_ICANON (tty) || !read_cnt (ldata)) {
@@ -2525,7 +2525,7 @@ static int n_tty_ioctl(struct tty_structreturn put_user (tty_chars_in_buffer (tty), (int __user *) arg);case TIOCINQ :down_write (&tty->termios_rwsem); -if (L_ICANON (tty)) +if (L_ICANON (tty) && !L_EXTPROC (tty)) retval =inq_canon (ldata);else retval =read_cnt (ldata);
stable-rc/linux-3.18.y boot: 64 boots: 0 failed, 28 passed with 34 offline, 2 untried/unknown (v3.18.90-33-g8bedd5f5bdd5)
stable-rc/linux-3.18.y boot: 64 boots: 0 failed, 28 passed with 34 offline, 2 untried/unknown (v3.18.90-33-g8bedd5f5bdd5)
Full Boot Summary: https://kernelci.org/boot/all/job/stable-rc/branch/linux-3.18.y/kernel/v3.18.90-33-g8bedd5f5bdd5/
Full Build Summary: https://kernelci.org/build/stable-rc/branch/linux-3.18.y/kernel/v3.18.90-33-g8bedd5f5bdd5/
Tree: stable-rc
Branch: linux-3.18.y
Git Describe: v3.18.90-33-g8bedd5f5bdd5
Git Commit: 8bedd5f5bdd54df8a9c683c129583a2800fa0797
Git URL: http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Tested: 30 unique boards, 14 SoC families, 14 builds out of 183
Offline Platforms:
arm:
multi_v7_defconfig:
armada-xp-openblocks-ax3-4: 1 offline lab
exynos5250-arndale: 1 offline lab
exynos5410-odroidxu: 1 offline lab
exynos5420-arndale-octa: 1 offline lab
imx6dl-wandboard_dual: 1 offline lab
imx6dl-wandboard_solo: 1 offline lab
omap3-beagle: 1 offline lab
omap3-beagle-xm: 1 offline lab
omap4-panda: 1 offline lab
qcom-apq8064-cm-qs600: 1 offline lab
sun4i-a10-cubieboard: 1 offline lab
sun7i-a20-cubietruck: 1 offline lab
tegra124-jetson-tk1: 1 offline lab
tegra30-beaver: 1 offline lab
zynq-zc702: 1 offline lab
sunxi_defconfig:
sun4i-a10-cubieboard: 1 offline lab
sun7i-a20-cubietruck: 1 offline lab
davinci_all_defconfig:
dm365evm,legacy: 1 offline lab
bcm2835_defconfig:
bcm2835-rpi-b: 1 offline lab
omap2plus_defconfig:
omap3-beagle: 1 offline lab
omap3-beagle,legacy: 1 offline lab
omap3-beagle-xm: 1 offline lab
omap3-beagle-xm,legacy: 1 offline lab
omap4-panda: 1 offline lab
mvebu_v7_defconfig:
armada-xp-openblocks-ax3-4: 1 offline lab
sama5_defconfig:
at91-sama5d4ek: 1 offline lab
imx_v6_v7_defconfig:
imx6dl-wandboard_dual: 1 offline lab
imx6dl-wandboard_solo: 1 offline lab
exynos_defconfig:
exynos5250-arndale: 1 offline lab
exynos5410-odroidxu: 1 offline lab
exynos5420-arndale-octa: 1 offline lab
tegra_defconfig:
tegra124-jetson-tk1: 1 offline lab
tegra30-beaver: 1 offline lab
qcom_defconfig:
qcom-apq8064-cm-qs600: 1 offline lab
---
For more info write to <[email protected]>
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.18.91 release. There are 32 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 Wed Jan 3 13:59:44 UTC 2018. Anything received after that time might be too late.
Build results:
total: 136 pass: 136 fail: 0 Qemu test results: total: 112 pass: 112 fail: 0
Details are available at http://kerneltests.org/builders.
Guenter
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.18.91 release. There are 32 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 Wed Jan 3 13:59:44 UTC 2018. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.18.91-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-3.18.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah