4.4.36-stable review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 4.4.36-stable review
This is the start of the stable review cycle for the 4.4.36 release. There are 21 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 Fri Dec 2 09:26:46 UTC 2016. 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/v4.x/stable-review/patch-4.4.36-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.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 4.4.36-rc1
Tomas Winkler <[email protected]>
mei: fix return value on disconnection
Tomas Winkler <[email protected]>
mei: me: fix place for kaby point device ids.
Tomas Winkler <[email protected]>
mei: me: disable driver on SPT SPS firmware
Michel Dänzer <[email protected]>
drm/radeon: Ensure vblank interrupt is enabled on DPMS transition to on
Andrey Ryabinin <[email protected]>
mpi: Fix NULL ptr dereference in mpi_powm() [ver #3]
John David Anglin <[email protected]>
parisc: Also flush data TLB in flush_icache_page_asm
John David Anglin <[email protected]>
parisc: Fix race in pci-dma.c
John David Anglin <[email protected]>
parisc: Fix races in parisc_setup_cache_timing()
Arnd Bergmann <[email protected]>
NFSv4.x: hide array-bounds warning
John Johansen <[email protected]>
apparmor: fix change_hat not finding hat after policy replacement
Johannes Berg <[email protected]>
cfg80211: limit scan results cache size
Chris Metcalf <[email protected]>
tile: avoid using clocksource_cyc2ns with absolute cycle count
Andrey Grodzovsky <[email protected]>
scsi: mpt3sas: Fix secure erase premature termination
Petr Vandrovec <[email protected]>
Fix USB CB/CBI storage devices with CONFIG_VMAP_STACK=y
Doug Brown <[email protected]>
USB: serial: ftdi_sio: add support for TI CC3200 LaunchPad
Paul Jakma <[email protected]>
USB: serial: cp210x: add ID for the Zone DPMX
Peter Chen <[email protected]>
usb: chipidea: move the lock initialization to core file
Radim Krčmář <[email protected]>
KVM: x86: check for pic and ioapic presence before use
Radim Krčmář <[email protected]>
KVM: x86: drop error recovery in em_jmp_far and em_ret_far
Ashok Raj <[email protected]>
iommu/vt-d: Fix IOMMU lookup for SR-IOV Virtual Functions
David Woodhouse <[email protected]>
iommu/vt-d: Fix PASID table allocation
-------------
Diffstat:
Makefile | 4 +- arch/parisc/kernel/cache.c | 31 +++++-------- arch/parisc/kernel/pacache.S | 37 +++++++++------- arch/parisc/kernel/pci-dma.c | 2 +- arch/parisc/kernel/setup.c | 4 ++ arch/tile/kernel/time.c | 4 +- arch/x86/kvm/emulate.c | 36 +++++---------- arch/x86/kvm/irq_comm.c | 13 ++++++ drivers/gpu/drm/radeon/atombios_crtc.c | 2 + drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 2 + drivers/iommu/dmar.c | 4 +- drivers/iommu/intel-iommu.c | 13 ++++++ drivers/iommu/intel-svm.c | 28 +++++++----- drivers/misc/mei/bus.c | 2 +- drivers/misc/mei/hw-me-regs.h | 7 +-- drivers/misc/mei/hw-me.c | 10 ++++- drivers/misc/mei/main.c | 2 +- drivers/misc/mei/pci-me.c | 4 +- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 15 ++++++- drivers/usb/chipidea/core.c | 1 + drivers/usb/chipidea/udc.c | 2 - drivers/usb/serial/cp210x.c | 1 + drivers/usb/serial/ftdi_sio.c | 2 + drivers/usb/serial/ftdi_sio_ids.h | 6 +++ drivers/usb/storage/transport.c | 7 ++- fs/nfs/callback.c | 2 +- include/linux/intel-iommu.h | 1 + lib/mpi/mpi-pow.c | 7 ++- net/wireless/core.h | 1 + net/wireless/scan.c | 69 +++++++++++++++++++++++++++++ security/apparmor/domain.c | 6 ++- 31 files changed, 232 insertions(+), 93 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 5/21 usb: chipidea: move the lock initialization to core file
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Chen <[email protected]>
commit a5d906bb261cde5f881a949d3b0fbaa285dcc574 upstream.
This can fix below dump when the lock is accessed at host mode due to it is not initialized.
[ 46.119638] INFO: trying to register non-static key. [ 46.124643] the code is fine but needs lockdep annotation. [ 46.130144] turning off the locking correctness validator. [ 46.135659] CPU: 0 PID: 690 Comm: cat Not tainted 4.9.0-rc3-00079-g4b75f1d #1210 [ 46.143075] Hardware name: Freescale i.MX6 SoloX (Device Tree) [ 46.148923] Backtrace: [ 46.151448] [<c010c460>] (dump_backtrace) from [<c010c658>] (show_stack+0x18/0x1c) [ 46.159038] r7:edf52000 [ 46.161412] r6:60000193 [ 46.163967] r5:00000000 [ 46.165035] r4:c0e25c2c
[ 46.169109] [<c010c640>] (show_stack) from [<c03f58a4>] (dump_stack+0xb4/0xe8) [ 46.176362] [<c03f57f0>] (dump_stack) from [<c016d690>] (register_lock_class+0x4fc/0x56c) [ 46.184554] r10:c0e25d24 [ 46.187014] r9:edf53e70 [ 46.189569] r8:c1642444 [ 46.190637] r7:ee9da024 [ 46.193191] r6:00000000 [ 46.194258] r5:00000000 [ 46.196812] r4:00000000 [ 46.199185] r3:00000001
[ 46.203259] [<c016d194>] (register_lock_class) from [<c0171294>] (__lock_acquire+0x80/0x10f0) [ 46.211797] r10:c0e25d24 [ 46.214257] r9:edf53e70 [ 46.216813] r8:ee9da024 [ 46.217880] r7:c1642444 [ 46.220435] r6:edcd1800 [ 46.221502] r5:60000193 [ 46.224057] r4:00000000
[ 46.227953] [<c0171214>] (__lock_acquire) from [<c01726c0>] (lock_acquire+0x74/0x94) [ 46.235710] r10:00000001 [ 46.238169] r9:edf53e70 [ 46.240723] r8:edf53f80 [ 46.241790] r7:00000001 [ 46.244344] r6:00000001 [ 46.245412] r5:60000193 [ 46.247966] r4:00000000
[ 46.251866] [<c017264c>] (lock_acquire) from [<c096c8fc>] (_raw_spin_lock_irqsave+0x40/0x54) [ 46.260319] r7:ee1c6a00 [ 46.262691] r6:c062a570 [ 46.265247] r5:20000113 [ 46.266314] r4:ee9da014
[ 46.270393] [<c096c8bc>] (_raw_spin_lock_irqsave) from [<c062a570>] (ci_port_test_show+0x2c/0x70) [ 46.279280] r6:eebd2000 [ 46.281652] r5:ee9da010 [ 46.284207] r4:ee9da014
[ 46.286810] [<c062a544>] (ci_port_test_show) from [<c0248d04>] (seq_read+0x1ac/0x4f8) [ 46.294655] r9:edf53e70 [ 46.297028] r8:edf53f80 [ 46.299583] r7:ee1c6a00 [ 46.300650] r6:00000001 [ 46.303205] r5:00000000 [ 46.304273] r4:eebd2000 [ 46.306850] [<c0248b58>] (seq_read) from [<c039e864>] (full_proxy_read+0x54/0x6c) [ 46.314348] r10:00000000 [ 46.316808] r9:c0a6ad30 [ 46.319363] r8:edf53f80 [ 46.320430] r7:00020000 [ 46.322986] r6:b6de3000 [ 46.324053] r5:ee1c6a00 [ 46.326607] r4:c0248b58
[ 46.330505] [<c039e810>] (full_proxy_read) from [<c021ec98>] (__vfs_read+0x34/0x118) [ 46.338262] r9:edf52000 [ 46.340635] r8:c0107fc4 [ 46.343190] r7:00020000 [ 46.344257] r6:edf53f80 [ 46.346812] r5:c039e810 [ 46.347879] r4:ee1c6a00 [ 46.350447] [<c021ec64>] (__vfs_read) from [<c021fbd0>] (vfs_read+0x8c/0x11c) [ 46.357597] r9:edf52000 [ 46.359969] r8:c0107fc4 [ 46.362524] r7:edf53f80 [ 46.363592] r6:b6de3000 [ 46.366147] r5:ee1c6a00 [ 46.367214] r4:00020000 [ 46.369782] [<c021fb44>] (vfs_read) from [<c0220a4c>] (SyS_read+0x4c/0xa8) [ 46.376672] r8:c0107fc4 [ 46.379045] r7:00020000 [ 46.381600] r6:b6de3000 [ 46.382667] r5:ee1c6a00 [ 46.385222] r4:ee1c6a00
[ 46.387817] [<c0220a00>] (SyS_read) from [<c0107e20>] (ret_fast_syscall+0x0/0x1c) [ 46.395314] r7:00000003 [ 46.397687] r6:b6de3000 [ 46.400243] r5:00020000 [ 46.401310] r4:00020000
--- drivers/usb/chipidea/core.c | 1 + drivers/usb/chipidea/udc.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-)
drivers/usb/chipidea/core.c +1 -0
@@ -926,6 +926,7 @@ static int ci_hdrc_probe(struct platformif (!ci)return -ENOMEM ; +spin_lock_init (&ci->lock); ci->dev = dev; ci->platdata =dev_get_platdata (dev); ci->imx28_write_fix = !!(ci->platdata->flags &
drivers/usb/chipidea/udc.c +0 -2
@@ -1884,8 +1884,6 @@ static int udc_start(struct ci_hdrc *ci)struct usb_otg_caps *otg_caps = &ci->platdata->ci_otg_caps;int retval =0 ; -spin_lock_init (&ci->lock); - ci->gadget.ops = &usb_gadget_ops; ci->gadget.speed =USB_SPEED_UNKNOWN ; ci->gadget.max_speed =USB_SPEED_HIGH ;
Greg Kroah-Hartman
maintainerPATCH 6/21 USB: serial: cp210x: add ID for the Zone DPMX
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Jakma <[email protected]>
commit 2ab13292d7a314fa45de0acc808e41aaad31989c upstream.
The BRIM Brothers Zone DPMX is a bicycle powermeter. This ID is for the USB serial interface in its charging dock for the control pods, via which some settings for the pods can be modified.
--- drivers/usb/serial/cp210x.c | 1 + 1 file changed, 1 insertion(+)
drivers/usb/serial/cp210x.c +1 -0
@@ -130,6 +130,7 @@ static const struct usb_device_id id_tab { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */ + { USB_DEVICE(0x10C4, 0x8962) }, /* Brim Brothers charging dock */ { USB_DEVICE(0x10C4, 0x8977) }, /* CEL MeshWorks DevKit Device */ { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */ { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */
Greg Kroah-Hartman
maintainerPATCH 7/21 USB: serial: ftdi_sio: add support for TI CC3200 LaunchPad
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Doug Brown <[email protected]>
commit 9bfef729a3d11f04d12788d749a3ce6b47645734 upstream.
This patch adds support for the TI CC3200 LaunchPad board, which uses a custom USB vendor ID and product ID. Channel A is used for JTAG, and channel B is used for a UART.
--- drivers/usb/serial/ftdi_sio.c | 2 ++ drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++ 2 files changed, 8 insertions(+)
drivers/usb/serial/ftdi_sio.c +2 -0
@@ -1012,6 +1012,8 @@ static const struct usb_device_id id_tab { USB_DEVICE(ICPDAS_VID, ICPDAS_I7561U_PID) }, { USB_DEVICE(ICPDAS_VID, ICPDAS_I7563U_PID) }, { USB_DEVICE(WICED_VID, WICED_USB20706V2_PID) }, + { USB_DEVICE(TI_VID, TI_CC3200_LAUNCHPAD_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { } /* Terminating entry */ };
drivers/usb/serial/ftdi_sio_ids.h +6 -0
@@ -596,6 +596,12 @@#define STK541_PID 0x2109/* Zigbee Controller */ /* +* Texas Instruments +*/ +#define TI_VID 0x0451 +#define TI_CC3200_LAUNCHPAD_PID 0xC32A/* SimpleLink Wi-Fi CC3200 LaunchPad */ + +/* * Blackfin gnICE JTAG * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice */
Greg Kroah-Hartman
maintainerPATCH 8/21 Fix USB CB/CBI storage devices with CONFIG_VMAP_STACK=y
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Petr Vandrovec <[email protected]>
commit 2ce9d2272b98743b911196c49e7af5841381c206 upstream.
Some code (all error handling) submits CDBs that are allocated on the stack. This breaks with CB/CBI code that tries to create URB directly from SCSI command buffer - which happens to be in vmalloced memory with vmalloced kernel stacks.
Let's make copy of the command in usb_stor_CB_transport.
--- drivers/usb/storage/transport.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/usb/storage/transport.c +6 -1
@@ -919,10 +919,15 @@ int usb_stor_CB_transport(struct scsi_cm/* COMMAND STAGE */ /* let's send the command via the control pipe */ +/* +* Command is sometime (f.e. after scsi_eh_prep_cmnd) on the stack. +* Stack may be vmallocated. So no DMA for us. Make a copy. +*/ +memcpy (us->iobuf, srb->cmnd, srb->cmd_len); result =usb_stor_ctrl_transfer (us, us->send_ctrl_pipe,US_CBI_ADSC ,USB_TYPE_CLASS |USB_RECIP_INTERFACE ,0 , - us->ifnum, srb->cmnd, srb->cmd_len); + us->ifnum, us->iobuf, srb->cmd_len);/* check the return code for the command */ usb_stor_dbg(us, "Call to usb_stor_ctrl_transfer() returned %d\n",
Greg Kroah-Hartman
maintainerPATCH 9/21 scsi: mpt3sas: Fix secure erase premature termination
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrey Grodzovsky <[email protected]>
commit 18f6084a989ba1b38702f9af37a2e4049a924be6 upstream.
This is a work around for a bug with LSI Fusion MPT SAS2 when perfoming secure erase. Due to the very long time the operation takes, commands issued during the erase will time out and will trigger execution of the abort hook. Even though the abort hook is called for the specific command which timed out, this leads to entire device halt (scsi_state terminated) and premature termination of the secure erase.
Set device state to busy while ATA passthrough commands are in progress.
[mkp: hand applied to 4.9/scsi-fixes, tweaked patch description]
--- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
drivers/scsi/mpt3sas/mpt3sas_scsih.c +14 -1
@@ -3831,7 +3831,10 @@ _scsih_eedp_error_handling(struct scsi_cSAM_STAT_CHECK_CONDITION ; } - +static inline bool ata_12_16_cmd (struct scsi_cmnd *scmd) +{ +return (scmd->cmnd[0 ] ==ATA_12 || scmd->cmnd[0 ] ==ATA_16 ); +}/** * scsih_qcmd - main scsi request entry point
@@ -3859,6 +3862,13 @@ scsih_qcmd(struct Scsi_Host *shost, struif (ioc->logging_level &MPT_DEBUG_SCSI )scsi_print_command (scmd); +/* +* Lock the device for any subsequent command until command is +* done. +*/ +if (ata_12_16_cmd (scmd)) +scsi_internal_device_block (scmd->device); + sas_device_priv_data = scmd->device->hostdata;if (!sas_device_priv_data || !sas_device_priv_data->sas_target) { scmd->result =DID_NO_CONNECT <<16 ;
@@ -4431,6 +4441,9 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *iif (scmd ==NULL )return 1 ; +if (ata_12_16_cmd (scmd)) +scsi_internal_device_unblock (scmd->device,SDEV_RUNNING ); + mpi_request =mpt3sas_base_get_msg_frame (ioc, smid);if (mpi_reply ==NULL ) {
Greg Kroah-Hartman
maintainerPATCH 10/21 tile: avoid using clocksource_cyc2ns with absolute cycle count
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Metcalf <[email protected]>
commit e658a6f14d7c0243205f035979d0ecf6c12a036f upstream.
For large values of "mult" and long uptimes, the intermediate result of "cycles * mult" can overflow 64 bits. For example, the tile platform calls clocksource_cyc2ns with a 1.2 GHz clock; we have mult = 853, and after 208.5 days, we overflow 64 bits.
Since clocksource_cyc2ns() is intended to be used for relative cycle counts, not absolute cycle counts, performance is more importance than accepting a wider range of cycle values. So, just use mult_frac() directly in tile's sched_clock().
Commit 4cecf6d401a0 ("sched, x86: Avoid unnecessary overflow in sched_clock") by Salman Qazi results in essentially the same generated code for x86 as this change does for tile. In fact, a follow-on change by Salman introduced mult_frac() and switched to using it, so the C code was largely identical at that point too.
Peter Zijlstra then added mul_u64_u32_shr() and switched x86 to use it. This is, in principle, better; by optimizing the 64x64->64 multiplies to be 32x32->64 multiplies we can potentially save some time. However, the compiler piplines the 64x64->64 multiplies pretty well, and the conditional branch in the generic mul_u64_u32_shr() causes some bubbles in execution, with the result that it's pretty much a wash. If tilegx provided its own implementation of mul_u64_u32_shr() without the conditional branch, we could potentially save 3 cycles, but that seems like small gain for a fair amount of additional build scaffolding; no other platform currently provides a mul_u64_u32_shr() override, and tile doesn't currently have an <asm/div64.h> header to put the override in.
Additionally, gcc currently has an optimization bug that prevents it from recognizing the opportunity to use a 32x32->64 multiply, and so the result would be no better than the existing mult_frac() until such time as the compiler is fixed.
For now, just using mult_frac() seems like the right answer.
--- arch/tile/kernel/time.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/tile/kernel/time.c +2 -2
@@ -218,8 +218,8 @@ void do_timer_interrupt(struct pt_regs **/ unsigned long long sched_clock (void ) { -return clocksource_cyc2ns (get_cycles (), - sched_clock_mult,SCHED_CLOCK_SHIFT ); +return mult_frac (get_cycles (), + sched_clock_mult,1ULL <<SCHED_CLOCK_SHIFT ); }int setup_profiling_timer (unsigned int multiplier)
Greg Kroah-Hartman
maintainerPATCH 11/21 cfg80211: limit scan results cache size
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
commit 9853a55ef1bb66d7411136046060bbfb69c714fa upstream.
It's possible to make scanning consume almost arbitrary amounts of memory, e.g. by sending beacon frames with random BSSIDs at high rates while somebody is scanning.
Limit the number of BSS table entries we're willing to cache to 1000, limiting maximum memory usage to maybe 4-5MB, but lower in practice - that would be the case for having both full-sized beacon and probe response frames for each entry; this seems not possible in practice, so a limit of 1000 entries will likely be closer to 0.5 MB.
--- net/wireless/core.h | 1 net/wireless/scan.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+)
net/wireless/core.h +1 -0
@@ -72,6 +72,7 @@ struct cfg80211_registered_device {struct list_head bss_list;struct rb_root bss_tree;u32 bss_generation; +u32 bss_entries;struct cfg80211_scan_request *scan_req;/* protected by RTNL */ struct sk_buff *scan_msg;struct cfg80211_sched_scan_request __rcu *sched_scan_req;
net/wireless/scan.c +69 -0
112 lines not on this page · raw message
Greg Kroah-Hartman
maintainerPATCH 12/21 apparmor: fix change_hat not finding hat after policy replacement
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: John Johansen <[email protected]>
commit 3d40658c977769ce2138f286cf131537bf68bdfe upstream.
After a policy replacement, the task cred may be out of date and need to be updated. However change_hat is using the stale profiles from the out of date cred resulting in either: a stale profile being applied or, incorrect failure when searching for a hat profile as it has been migrated to the new parent profile.
Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1000287
--- security/apparmor/domain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
security/apparmor/domain.c +4 -2
@@ -623,8 +623,8 @@ int aa_change_hat(const char *hats[], in/* released below */ cred =get_current_cred (); cxt =cred_cxt (cred); - profile =aa_cred_profile (cred); - previous_profile = cxt->previous; + profile =aa_get_newest_profile (aa_cred_profile (cred)); + previous_profile =aa_get_newest_profile (cxt->previous);if (unconfined (profile)) { info ="unconfined" ;
@@ -720,6 +720,8 @@ audit: out:aa_put_profile (hat);kfree (name); +aa_put_profile (profile); +aa_put_profile (previous_profile);put_cred (cred);return error;
Greg Kroah-Hartman
maintainerPATCH 13/21 NFSv4.x: hide array-bounds warning
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <[email protected]>
commit d55b352b01bc78fbc3d1bb650140668b87e58bf9 upstream.
A correct bugfix introduced a harmless warning that shows up with gcc-7:
fs/nfs/callback.c: In function 'nfs_callback_up':fs/nfs/callback.c:214:14: error: array subscript is outside array bounds [-Werror=array-bounds]
What happens here is that the 'minorversion == 0' check tells the compiler that we assume minorversion can be something other than 0, but when CONFIG_NFS_V4_1 is disabled that would be invalid and result in an out-of-bounds access.
The added check for IS_ENABLED(CONFIG_NFS_V4_1) tells gcc that this really can't happen, which makes the code slightly smaller and also avoids the warning.
The bugfix that introduced the warning is marked for stable backports, we want this one backported to the same releases.
--- fs/nfs/callback.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/nfs/callback.c +1 -1
@@ -261,7 +261,7 @@ static int nfs_callback_up_net(int minor } ret = -EPROTONOSUPPORT ; -if (minorversion ==0 ) +if (!IS_ENABLED (CONFIG_NFS_V4_1 ) || minorversion ==0 ) ret =nfs4_callback_up_net (serv, net);else if (xprt->ops->bc_up) ret = xprt->ops->bc_up (serv, net);
Greg Kroah-Hartman
maintainerPATCH 14/21 parisc: Fix races in parisc_setup_cache_timing()
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: John David Anglin <[email protected]>
commit 741dc7bf1c7c7d93b853bb55efe77baa27e1b0a9 upstream.
Helge reported to me the following startup crash:
[ 0.000000] Linux version 4.8.0-1-parisc64-smp ([email protected]) (gcc version 5.4.1 20161019 (GCC) ) #1 SMP Debian 4.8.7-1 (2016-11-13) [ 0.000000] The 64-bit Kernel has started... [ 0.000000] Kernel default page size is 4 KB. Huge pages enabled with 1 MB physical and 2 MB virtual size. [ 0.000000] Determining PDC firmware type: System Map. [ 0.000000] model 9000/785/J5000 [ 0.000000] Total Memory: 2048 MB [ 0.000000] Memory: 2018528K/2097152K available (9272K kernel code, 3053K rwdata, 1319K rodata, 1024K init, 840K bss, 78624K reserved, 0K cma-reserved) [ 0.000000] virtual kernel memory layout: [ 0.000000] vmalloc : 0x0000000000008000 - 0x000000003f000000 (1007 MB) [ 0.000000] memory : 0x0000000040000000 - 0x00000000c0000000 (2048 MB) [ 0.000000] .init : 0x0000000040100000 - 0x0000000040200000 (1024 kB) [ 0.000000] .data : 0x0000000040b0e000 - 0x0000000040f533e0 (4372 kB) [ 0.000000] .text : 0x0000000040200000 - 0x0000000040b0e000 (9272 kB) [ 0.768910] Brought up 1 CPUs [ 0.992465] NET: Registered protocol family 16 [ 2.429981] Releasing cpu 1 now, hpa=fffffffffffa2000 [ 2.635751] CPU(s): 2 out of 2 PA8500 (PCX-W) at 440.000000 MHz online [ 2.726692] Setting cache flush threshold to 1024 kB [ 2.729932] Not-handled unaligned insn 0x43ffff80 [ 2.798114] Setting TLB flush threshold to 140 kB [ 2.928039] Unaligned handler failed, ret = -1 [ 3.000419] _______________________________ [ 3.000419] < Your System ate a SPARC! Gah! > [ 3.000419] ------------------------------- [ 3.000419] \ ^__^ [ 3.000419] (__)\ )\/\ [ 3.000419] U ||----w | [ 3.000419] || || [ 9.340055] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.8.0-1-parisc64-smp #1 Debian 4.8.7-1 [ 9.448082] task: 00000000bfd48060 task.stack: 00000000bfd50000 [ 9.528040] [ 10.760029] IASQ: 0000000000000000 0000000000000000 IAOQ: 000000004025d154 000000004025d158 [ 10.868052] IIR: 43ffff80 ISR: 0000000000340000 IOR: 000001ff54150960 [ 10.960029] CPU: 1 CR30: 00000000bfd50000 CR31: 0000000011111111 [ 11.052057] ORIG_R28: 000000004021e3b4 [ 11.100045] IAOQ[0]: irq_exit+0x94/0x120 [ 11.152062] IAOQ[1]: irq_exit+0x98/0x120 [ 11.208031] RP(r2): irq_exit+0xb8/0x120 [ 11.256074] Backtrace: [ 11.288067] [<00000000402cd944>] cpu_startup_entry+0x1e4/0x598 [ 11.368058] [<0000000040109528>] smp_callin+0x2c0/0x2f0 [ 11.436308] [<00000000402b53fc>] update_curr+0x18c/0x2d0 [ 11.508055] [<00000000402b73b8>] dequeue_entity+0x2c0/0x1030 [ 11.584040] [<00000000402b3cc0>] set_next_entity+0x80/0xd30 [ 11.660069] [<00000000402c1594>] pick_next_task_fair+0x614/0x720 [ 11.740085] [<000000004020dd34>] __schedule+0x394/0xa60 [ 11.808054] [<000000004020e488>] schedule+0x88/0x118 [ 11.876039] [<0000000040283d3c>] rescuer_thread+0x4d4/0x5b0 [ 11.948090] [<000000004028fc4c>] kthread+0x1ec/0x248 [ 12.016053] [<0000000040205020>] end_fault_vector+0x20/0xc0 [ 12.092239] [<00000000402050c0>] _switch_to_ret+0x0/0xf40 [ 12.164044] [ 12.184036] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.8.0-1-parisc64-smp #1 Debian 4.8.7-1 [ 12.244040] Backtrace: [ 12.244040] [<000000004021c480>] show_stack+0x68/0x80 [ 12.244040] [<00000000406f332c>] dump_stack+0xec/0x168 [ 12.244040] [<000000004021c74c>] die_if_kernel+0x25c/0x430 [ 12.244040] [<000000004022d320>] handle_unaligned+0xb48/0xb50 [ 12.244040] [ 12.632066] ---[ end trace 9ca05a7215c7bbb2 ]--- [ 12.692036] Kernel panic - not syncing: Attempted to kill the idle task!
We have the insn 0x43ffff80 in IIR but from IAOQ we should have:
4025d150: 0f f3 20 df ldd,s r19(r31),r31 4025d154: 0f 9f 00 9c ldw r31(ret0),ret0 4025d158: bf 80 20 58 cmpb,*<> r0,ret0,4025d18c <irq_exit+0xcc>
Cpu0 has just completed running parisc_setup_cache_timing:
[ 2.429981] Releasing cpu 1 now, hpa=fffffffffffa2000 [ 2.635751] CPU(s): 2 out of 2 PA8500 (PCX-W) at 440.000000 MHz online [ 2.726692] Setting cache flush threshold to 1024 kB [ 2.729932] Not-handled unaligned insn 0x43ffff80 [ 2.798114] Setting TLB flush threshold to 140 kB [ 2.928039] Unaligned handler failed, ret = -1
Quoted 1 line
Quoted 1 line
From the backtrace, cpu1 is in
smp_callin:
void __init smp_callin(void)
{
int slave_id = cpu_now_booting;
smp_cpu_init(slave_id);
preempt_disable();
flush_cache_all_local(); /* start with known state */
flush_tlb_all_local(NULL);
local_irq_enable(); /* Interrupts have been off until now */
cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);So, it has just flushed its caches and the TLB. It would seem either the flushes in parisc_setup_cache_timing or smp_callin have corrupted kernel memory.
The attached patch reworks parisc_setup_cache_timing to remove the races in setting the cache and TLB flush thresholds. It also corrects the number of bytes flushed in the TLB calculation.
The patch flushes the cache and TLB on cpu0 before starting the secondary processors so that they are started from a known state.
Tested with a few reboots on c8000.
--- arch/parisc/kernel/cache.c | 31 ++++++++++++------------------- arch/parisc/kernel/setup.c | 4 ++++ 2 files changed, 16 insertions(+), 19 deletions(-)
arch/parisc/kernel/cache.c +12 -19
@@ -351,6 +351,7 @@ void __init parisc_setup_cache_timing(vo {unsigned long rangetime, alltime;unsigned long size, start; +unsigned long threshold; alltime =mfctl (16 );flush_data_cache ();
@@ -364,17 +365,12 @@ void __init parisc_setup_cache_timing(voprintk (KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n" , alltime, size, rangetime); -/* Racy, but if we see an intermediate value, it's ok too... */ - parisc_cache_flush_threshold = size * alltime / rangetime; - - parisc_cache_flush_threshold =L1_CACHE_ALIGN (parisc_cache_flush_threshold); -if (!parisc_cache_flush_threshold) - parisc_cache_flush_threshold =FLUSH_THRESHOLD ; - -if (parisc_cache_flush_threshold > cache_info.dc_size) - parisc_cache_flush_threshold = cache_info.dc_size; - -printk (KERN_INFO "Setting cache flush threshold to %lu kB\n" , + threshold =L1_CACHE_ALIGN (size * alltime / rangetime); +if (threshold > cache_info.dc_size) + threshold = cache_info.dc_size; +if (threshold) + parisc_cache_flush_threshold = threshold; +printk (KERN_INFO "Cache flush threshold set to %lu KiB\n" , parisc_cache_flush_threshold/1024 );/* calculate TLB flush threshold */
@@ -383,7 +379,7 @@ void __init parisc_setup_cache_timing(voflush_tlb_all (); alltime =mfctl (16 ) - alltime; - size =PAGE_SIZE ; + size =0 ; start = (unsigned long ) _text; rangetime =mfctl (16 );while (start < (unsigned long ) _end) {
@@ -396,13 +392,10 @@ void __init parisc_setup_cache_timing(voprintk (KERN_DEBUG "Whole TLB flush %lu cycles, flushing %lu bytes %lu cycles\n" , alltime, size, rangetime); - parisc_tlb_flush_threshold = size * alltime / rangetime; - parisc_tlb_flush_threshold *=num_online_cpus (); - parisc_tlb_flush_threshold =PAGE_ALIGN (parisc_tlb_flush_threshold); -if (!parisc_tlb_flush_threshold) - parisc_tlb_flush_threshold =FLUSH_TLB_THRESHOLD ; - -printk (KERN_INFO "Setting TLB flush threshold to %lu kB\n" , + threshold =PAGE_ALIGN (num_online_cpus () * size * alltime / rangetime); +if (threshold) + parisc_tlb_flush_threshold = threshold; +printk (KERN_INFO "TLB flush threshold set to %lu KiB\n" , parisc_tlb_flush_threshold/1024 ); }
arch/parisc/kernel/setup.c +4 -0
@@ -334,6 +334,10 @@ static int __init parisc_init(void)/* tell PDC we're Linux. Nevermind failure. */ pdc_stable_write (0x40 , &osid,sizeof (osid)); +/* start with known state */ +flush_cache_all_local (); +flush_tlb_all_local (NULL ); +processor_init ();#ifdef CONFIG_SMP pr_info("CPU(s): %d out of %d %s at %d.%06d MHz online\n",
Greg Kroah-Hartman
maintainerPATCH 15/21 parisc: Fix race in pci-dma.c
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: John David Anglin <[email protected]>
commit c0452fb9fb8f49c7d68ab9fa0ad092016be7b45f upstream.
We are still troubled by occasional random segmentation faults and memory memory corruption on SMP machines. The causes quite a few package builds to fail on the Debian buildd machines for parisc. When gcc-6 failed to build three times in a row, I looked again at the TLB related code. I found a couple of issues. This is the first.
In general, we need to ensure page table updates and corresponding TLB purges are atomic. The attached patch fixes an instance in pci-dma.c where the page table update was not guarded by the TLB lock.
Tested on rp3440 and c8000. So far, no further random segmentation faults have been observed.
--- arch/parisc/kernel/pci-dma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/parisc/kernel/pci-dma.c +1 -1
@@ -95,8 +95,8 @@ static inline int map_pte_uncached(pte_tif (!pte_none (*pte))printk (KERN_ERR "map_pte_uncached: page already exists\n" ); -set_pte (pte,__mk_pte (*paddr_ptr,PAGE_KERNEL_UNC ));purge_tlb_start (flags); +set_pte (pte,__mk_pte (*paddr_ptr,PAGE_KERNEL_UNC ));pdtlb_kernel (orig_vaddr);purge_tlb_end (flags); vaddr +=PAGE_SIZE ;
Greg Kroah-Hartman
maintainerPATCH 16/21 parisc: Also flush data TLB in flush_icache_page_asm
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: John David Anglin <[email protected]>
commit 5035b230e7b67ac12691ed3b5495bbb617027b68 upstream.
This is the second issue I noticed in reviewing the parisc TLB code.
The fic instruction may use either the instruction or data TLB in flushing the instruction cache. Thus, on machines with a split TLB, we should also flush the data TLB after setting up the temporary alias registers.
Although this has no functional impact, I changed the pdtlb and pitlb instructions to consistently use the index register %r0. These instructions do not support integer displacements.
Tested on rp3440 and c8000.
--- arch/parisc/kernel/pacache.S | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-)
arch/parisc/kernel/pacache.S +22 -15
@@ -96,7 +96,7 @@ fitmanyloop: /* Loop if LOOP >= 2 */ fitmanymiddle: /* Loop if LOOP >= 2 */ addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ - pitlbe 0(%sr1, %r28) + pitlbe %r0(%sr1, %r28) pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */ copy %arg3, %r31 /* Re-init inner loop count */
@@ -139,7 +139,7 @@ fdtmanyloop: /* Loop if LOOP >= 2 */ fdtmanymiddle: /* Loop if LOOP >= 2 */ addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ - pdtlbe 0(%sr1, %r28) + pdtlbe %r0(%sr1, %r28) pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */ copy %arg3, %r31 /* Re-init inner loop count */
@@ -620,12 +620,12 @@ ENTRY(copy_user_page_asm) /* Purge any old translations */ #ifdef CONFIG_PA20 - pdtlb,l 0(%r28) - pdtlb,l 0(%r29) + pdtlb,l %r0(%r28) + pdtlb,l %r0(%r29) #else tlb_lock %r20,%r21,%r22 - pdtlb 0(%r28) - pdtlb 0(%r29) + pdtlb %r0(%r28) + pdtlb %r0(%r29) tlb_unlock %r20,%r21,%r22 #endif
@@ -768,10 +768,10 @@ ENTRY(clear_user_page_asm) /* Purge any old translation */ #ifdef CONFIG_PA20 - pdtlb,l 0(%r28) + pdtlb,l %r0(%r28) #else tlb_lock %r20,%r21,%r22 - pdtlb 0(%r28) + pdtlb %r0(%r28) tlb_unlock %r20,%r21,%r22 #endif
@@ -852,10 +852,10 @@ ENTRY(flush_dcache_page_asm) /* Purge any old translation */ #ifdef CONFIG_PA20 - pdtlb,l 0(%r28) + pdtlb,l %r0(%r28) #else tlb_lock %r20,%r21,%r22 - pdtlb 0(%r28) + pdtlb %r0(%r28) tlb_unlock %r20,%r21,%r22 #endif
@@ -892,10 +892,10 @@ ENTRY(flush_dcache_page_asm) sync #ifdef CONFIG_PA20 - pdtlb,l 0(%r25) + pdtlb,l %r0(%r25) #else tlb_lock %r20,%r21,%r22 - pdtlb 0(%r25) + pdtlb %r0(%r25) tlb_unlock %r20,%r21,%r22 #endif
@@ -925,13 +925,18 @@ ENTRY(flush_icache_page_asm) depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ #endif - /* Purge any old translation */ + /* Purge any old translation. Note that the FIC instruction + * may use either the instruction or data TLB. Given that we + * have a flat address space, it's not clear which TLB will be + * used. So, we purge both entries. */ #ifdef CONFIG_PA20 + pdtlb,l %r0(%r28) pitlb,l %r0(%sr4,%r28) #else tlb_lock %r20,%r21,%r22 - pitlb (%sr4,%r28) + pdtlb %r0(%r28) + pitlb %r0(%sr4,%r28) tlb_unlock %r20,%r21,%r22 #endif
@@ -970,10 +975,12 @@ ENTRY(flush_icache_page_asm) sync #ifdef CONFIG_PA20 + pdtlb,l %r0(%r28) pitlb,l %r0(%sr4,%r25) #else tlb_lock %r20,%r21,%r22 - pitlb (%sr4,%r25) + pdtlb %r0(%r28) + pitlb %r0(%sr4,%r25) tlb_unlock %r20,%r21,%r22 #endif
Greg Kroah-Hartman
maintainerPATCH 17/21 mpi: Fix NULL ptr dereference in mpi_powm() [ver #3]
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrey Ryabinin <[email protected]>
commit f5527fffff3f002b0a6b376163613b82f69de073 upstream.
This fixes CVE-2016-8650.
If mpi_powm() is given a zero exponent, it wants to immediately return either 1 or 0, depending on the modulus. However, if the result was initalised with zero limb space, no limbs space is allocated and a NULL-pointer exception ensues.
Fix this by allocating a minimal amount of limb space for the result when the 0-exponent case when the result is 1 and not touching the limb space when the result is 0.
This affects the use of RSA keys and X.509 certificates that carry them.
BUG: unable to handle kernel NULL pointer dereference at (null) IP: [<ffffffff8138ce5d>] mpi_powm+0x32/0x7e6 PGD 0 Oops: 0002 [#1] SMP Modules linked in: CPU: 3 PID: 3014 Comm: keyctl Not tainted 4.9.0-rc6-fscache+ #278 Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014 task: ffff8804011944c0 task.stack: ffff880401294000 RIP: 0010:[<ffffffff8138ce5d>] [<ffffffff8138ce5d>] mpi_powm+0x32/0x7e6 RSP: 0018:ffff880401297ad8 EFLAGS: 00010212 RAX: 0000000000000000 RBX: ffff88040868bec0 RCX: ffff88040868bba0 RDX: ffff88040868b260 RSI: ffff88040868bec0 RDI: ffff88040868bee0 RBP: ffff880401297ba8 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000047 R11: ffffffff8183b210 R12: 0000000000000000 R13: ffff8804087c7600 R14: 000000000000001f R15: ffff880401297c50 FS: 00007f7a7918c700(0000) GS:ffff88041fb80000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 0000000401250000 CR4: 00000000001406e0 Stack: ffff88040868bec0 0000000000000020 ffff880401297b00 ffffffff81376cd4 0000000000000100 ffff880401297b10 ffffffff81376d12 ffff880401297b30 ffffffff81376f37 0000000000000100 0000000000000000 ffff880401297ba8 Call Trace: [<ffffffff81376cd4>] ? __sg_page_iter_next+0x43/0x66 [<ffffffff81376d12>] ? sg_miter_get_next_page+0x1b/0x5d [<ffffffff81376f37>] ? sg_miter_next+0x17/0xbd [<ffffffff8138ba3a>] ? mpi_read_raw_from_sgl+0xf2/0x146 [<ffffffff8132a95c>] rsa_verify+0x9d/0xee [<ffffffff8132acca>] ? pkcs1pad_sg_set_buf+0x2e/0xbb [<ffffffff8132af40>] pkcs1pad_verify+0xc0/0xe1 [<ffffffff8133cb5e>] public_key_verify_signature+0x1b0/0x228 [<ffffffff8133d974>] x509_check_for_self_signed+0xa1/0xc4 [<ffffffff8133cdde>] x509_cert_parse+0x167/0x1a1 [<ffffffff8133d609>] x509_key_preparse+0x21/0x1a1 [<ffffffff8133c3d7>] asymmetric_key_preparse+0x34/0x61 [<ffffffff812fc9f3>] key_create_or_update+0x145/0x399 [<ffffffff812fe227>] SyS_add_key+0x154/0x19e [<ffffffff81001c2b>] do_syscall_64+0x80/0x191 [<ffffffff816825e4>] entry_SYSCALL64_slow_path+0x25/0x25 Code: 56 41 55 41 54 53 48 81 ec a8 00 00 00 44 8b 71 04 8b 42 04 4c 8b 67 18 45 85 f6 89 45 80 0f 84 b4 06 00 00 85 c0 75 2f 41 ff ce <49> c7 04 24 01 00 00 00 b0 01 75 0b 48 8b 41 18 48 83 38 01 0f RIP [<ffffffff8138ce5d>] mpi_powm+0x32/0x7e6 RSP <ffff880401297ad8> CR2: 0000000000000000 ---[ end trace d82015255d4a5d8d ]---
Basically, this is a backport of a libgcrypt patch:
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=patch;h=6e1adb05d290aeeb1c230c763970695f4a538526
--- lib/mpi/mpi-pow.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
lib/mpi/mpi-pow.c +6 -1
@@ -64,8 +64,13 @@ int mpi_powm(MPI res, MPI base, MPI exp,if (!esize) {/* Exponent is zero, result is 1 mod MOD, i.e., 1 or 0 * depending on if MOD equals 1. */ - rp[0 ] =1 ; res->nlimbs = (msize ==1 && mod->d[0 ] ==1 ) ?0 :1 ; +if (res->nlimbs) { +if (mpi_resize (res,1 ) <0 ) + goto enomem; + rp = res->d; + rp[0 ] =1 ; + } res->sign =0 ; goto leave; }
Greg Kroah-Hartman
maintainerPATCH 19/21 mei: me: disable driver on SPT SPS firmware
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tomas Winkler <[email protected]>
commit 8c57cac1457f3125a5d13dc03635c0708c61bff0 upstream.
Sunrise Point PCH with SPS Firmware doesn't expose working MEI interface, we need to quirk it out.
The SPS Firmware is identifiable only on the first PCI function of the device.
--- drivers/misc/mei/hw-me.c | 10 ++++++++-- drivers/misc/mei/pci-me.c | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-)
drivers/misc/mei/hw-me.c +8 -2
@@ -1258,8 +1258,14 @@ static bool mei_me_fw_type_nm(struct pcistatic bool mei_me_fw_type_sps (struct pci_dev *pdev) {u32 reg; -/* Read ME FW Status check for SPS Firmware */ -pci_read_config_dword (pdev,PCI_CFG_HFS_1 , ®); +unsigned int devfn; + +/* +* Read ME FW Status register to check for SPS Firmware +* The SPS FW is only signaled in pci function 0 +*/ + devfn =PCI_DEVFN (PCI_SLOT (pdev->devfn),0 ); +pci_bus_read_config_dword (pdev->bus, devfn,PCI_CFG_HFS_1 , ®);/* if bits [19:16] = 15, running SPS Firmware */ return (reg &0xf0000 ) ==0xf0000 ; }
drivers/misc/mei/pci-me.c +2 -2
@@ -84,8 +84,8 @@ static const struct pci_device_id mei_me {MEI_PCI_DEVICE(MEI_DEV_ID_SPT, mei_me_pch8_cfg)}, {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, mei_me_pch8_cfg)}, - {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, mei_me_pch8_cfg)}, - {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, mei_me_pch8_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, mei_me_pch8_sps_cfg)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, mei_me_pch8_sps_cfg)}, {MEI_PCI_DEVICE(MEI_DEV_ID_KBP, mei_me_pch8_cfg)}, {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_2, mei_me_pch8_cfg)},
Greg Kroah-Hartman
maintainerPATCH 20/21 mei: me: fix place for kaby point device ids.
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tomas Winkler <[email protected]>
This is fix of the backported patch only, it places KBL DIDs on correct place to easy on backporting of further DIDs.
--- drivers/misc/mei/hw-me-regs.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/misc/mei/hw-me-regs.h +4 -3
@@ -66,9 +66,6 @@#ifndef _MEI_HW_MEI_REGS_H_#define _MEI_HW_MEI_REGS_H_ -#define MEI_DEV_ID_KBP 0xA2BA/* Kaby Point */ -#define MEI_DEV_ID_KBP_2 0xA2BB/* Kaby Point 2 */ -/* * MEI device IDs */
@@ -124,6 +121,10 @@#define MEI_DEV_ID_SPT_2 0x9D3B/* Sunrise Point 2 */ #define MEI_DEV_ID_SPT_H 0xA13A/* Sunrise Point H */ #define MEI_DEV_ID_SPT_H_2 0xA13B/* Sunrise Point H 2 */ + +#define MEI_DEV_ID_KBP 0xA2BA/* Kaby Point */ +#define MEI_DEV_ID_KBP_2 0xA2BB/* Kaby Point 2 */ +/* * MEI HW Section */
Greg Kroah-Hartman
maintainerPATCH 21/21 mei: fix return value on disconnection
In reply to Greg Kroah-Hartman4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tomas Winkler <[email protected]>
commit 2d4d5481e2d6f93b25fcfb13a9f20bbfbf54266a upstream.
Correct errno on client disconnection is -ENODEV not -EBUSY
--- drivers/misc/mei/bus.c | 2 +- drivers/misc/mei/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/misc/mei/bus.c +1 -1
@@ -144,7 +144,7 @@ ssize_t __mei_cl_recv(struct mei_cl *cl,mutex_lock (&bus->device_lock);if (!mei_cl_is_connected (cl)) { - rets = -EBUSY ; + rets = -ENODEV ; goto out; } }
drivers/misc/mei/main.c +1 -1
@@ -207,7 +207,7 @@ static ssize_t mei_read(struct file *filmutex_lock (&dev->device_lock);if (!mei_cl_is_connected (cl)) { - rets = -EBUSY ; + rets = -ENODEV ; goto out; } }
On Wed, Nov 30, 10:27, Greg Kroah-Hartman wrote
Quoted 1 line
Responses should be made by Fri Dec 2 09:26:46 UTC 2016.
If you haven't done so already, could you please add c9b8af13 (flow_dissect: call init_default_flow_dissectors() earlier) for 4.4.37?
It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
Thanks
Andre
Signature · 3 lines
Max Planck Institute for Developmental Biology Spemannstraße 35, 72076 Tübingen, Germany. Phone: (+49) 7071 601 829 http://people.tuebingen.mpg.de/maan/
Greg Kroah-Hartman
maintainerQuoted 11 lines · Andre Noll
On Wed, Nov 30, 10:27, Greg Kroah-Hartman wrote
Quoted 1 line
Responses should be made by Fri Dec 2 09:26:46 UTC 2016.
If you haven't done so already, could you please add
c9b8af13(flow_dissect: callinit_default_flow_dissectors()earlier) for 4.4.37?It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
thanks,
greg k-h
On Wed, Nov 30, 14:53, Greg Kroah-Hartman wrote
Quoted 10 lines
Quoted 3 lines
It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
OK, thanks for the clarification. There is no hurry, I just wanted to make sure the patch doesn't get lost.
Best
Andre
Signature · 3 lines
Max Planck Institute for Developmental Biology Spemannstraße 35, 72076 Tübingen, Germany. Phone: (+49) 7071 601 829 http://people.tuebingen.mpg.de/maan/
Sure, this patch must definitely go in 4.4
Also worth noting that you could also use a module for your NIC as a work around.
Quoted 21 lines · Andre Noll
On Wed, Nov 30, 14:53, Greg Kroah-Hartman wrote
Quoted 10 lines
Quoted 3 lines
It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
OK, thanks for the clarification. There is no hurry, I just wanted to make sure the patch doesn't get lost.
Best
Andre
--
Max Planck Institute for Developmental Biology Spemannstraße 35, 72076 Tübingen, Germany. Phone: (+49) 7071 601 829
http://people.tuebingen.mpg.de/maan/
Greg Kroah-Hartman
maintainerQuoted 1 line · Eric Dumazet
Sure, this patch must definitely go in 4.4
And 4.8-stable, right?
thanks,
greg k-h
From: Andre Noll <[email protected]>
Date: Wed, 30 Nov 2016 15:04:38 +0100
Quoted 9 lines
On Wed, Nov 30, 14:53, Greg Kroah-Hartman wrote
Quoted 8 lines
Quoted 3 lines
It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
Quoted 5 lines
Quoted 2 lines
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
OK, thanks for the clarification. There is no hurry, I just wanted to make sure the patch doesn't get lost.
There is never any ambiguity or guessing for networking patches, you can always simply check right here to see if a networking patch is pending to be sent to -stable:
http://patchwork.ozlabs.org/bundle/davem/stable/?submitter=&state=*&q=&archive=
On Wed, Nov 30, 09:53, David Miller wrote
Quoted 8 lines
Quoted 2 lines
OK, thanks for the clarification. There is no hurry, I just wanted to make sure the patch doesn't get lost.
There is never any ambiguity or guessing for networking patches, you can always simply check right here to see if a networking patch is pending to be sent to -stable:
http://patchwork.ozlabs.org/bundle/davem/stable/?submitter=&state=*&q=&archive=
Ha, I didn't know about this page.
Thanks
Andre
Signature · 3 lines
Max Planck Institute for Developmental Biology Spemannstraße 35, 72076 Tübingen, Germany. Phone: (+49) 7071 601 829 http://people.tuebingen.mpg.de/maan/
From: Greg Kroah-Hartman <[email protected]>
Date: Wed, 30 Nov 2016 14:53:27 +0100
Quoted 13 lines · Andre Noll
Quoted 11 lines
On Wed, Nov 30, 10:27, Greg Kroah-Hartman wrote
Quoted 1 line
Responses should be made by Fri Dec 2 09:26:46 UTC 2016.
If you haven't done so already, could you please add
c9b8af13(flow_dissect: callinit_default_flow_dissectors()earlier) for 4.4.37?It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
Quoted 6 lines
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
I was waiting for it to hit Linus's tree which happened just a day or two ago.
But feel free to take it in directly, sure.
Greg KH
maintainerQuoted 20 lines · David Miller
From: Greg Kroah-Hartman <[email protected]>
Date: Wed, 30 Nov 2016 14:53:27 +0100Quoted 17 lines · Andre Noll
Quoted 11 lines
On Wed, Nov 30, 10:27, Greg Kroah-Hartman wrote
Quoted 1 line
Responses should be made by Fri Dec 2 09:26:46 UTC 2016.
If you haven't done so already, could you please add
c9b8af13(flow_dissect: callinit_default_flow_dissectors()earlier) for 4.4.37?It fixes a regression introduced in 4.4.34 which makes systems unbootable for us. We are currently running that patch on top of 4.4.35 and I can confirm that it fixes the issue.
I wait for networking stable patches to come from the networking maintainer, as he batches them up and runs them through testing before forwarding them on.
Quoted 5 lines
Quoted 2 lines
That being said, this looks like an "easy" one to take, Davie, any objection to me queueing this up now?
I was waiting for it to hit Linus's tree which happened just a day or two ago.
Understood.
Quoted 1 line
But feel free to take it in directly, sure.
Thanks, now queued up.
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.4.36 release. There are 21 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 Fri Dec 2 09:26:46 UTC 2016. 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/v4.x/stable-review/patch-4.4.36-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.4.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Signature · 5 lines
Shuah Khan Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America(Silicon Valley) [email protected]
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.4.36 release. There are 21 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 Fri Dec 2 09:26:46 UTC 2016. Anything received after that time might be too late.
Build results:
total: 149 pass: 149 fail: 0 Qemu test results: total: 111 pass: 111 fail: 0
Details are available at http://kerneltests.org/builders.
This is with the added patch (v4.4.35-23-g6a11a03).
Guenter