4.14.61-stable review
Greg Kroah-Hartman
maintainerPATCH 1/23 bonding: avoid lockdep confusion in bond_get_stats()
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit 7e2556e40026a1b0c16f37446ab398d5a5a892e4 ]
syzbot found that the following sequence produces a LOCKDEP splat [1]
ip link add bond10 type bond
ip link add bond11 type bond
ip link set bond11 master bond10
To fix this, we can use the already provided nest_level.
This patch also provides correct nesting for dev->addr_list_lock
[1]
WARNING: possible recursive locking detected
4.18.0-rc6+ #167 Not tainted
--------------------------------------------
syz-executor751/4439 is trying to acquire lock:
(____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: spin_lock include/linux/spinlock.h:310 [inline] (____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: bond_get_stats+0xb4/0x560 drivers/net/bonding/bond_main.c:3426
but task is already holding lock:
(____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: spin_lock include/linux/spinlock.h:310 [inline] (____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: bond_get_stats+0xb4/0x560 drivers/net/bonding/bond_main.c:3426
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
---- lock(&(&bond->stats_lock)->rlock);
lock(&(&bond->stats_lock)->rlock);
*** DEADLOCK ***
May be due to missing lock nesting notation
3 locks held by syz-executor751/4439:
#0: (____ptrval____) (rtnl_mutex){+.+.}, at: rtnl_lock+0x17/0x20 net/core/rtnetlink.c:77
#1: (____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: spin_lock include/linux/spinlock.h:310 [inline] #1: (____ptrval____) (&(&bond->stats_lock)->rlock){+.+.}, at: bond_get_stats+0xb4/0x560 drivers/net/bonding/bond_main.c:3426 #2: (____ptrval____) (rcu_read_lock){....}, at: bond_get_stats+0x0/0x560 include/linux/compiler.h:215
stack backtrace: CPU: 0 PID: 4439 Comm: syz-executor751 Not tainted 4.18.0-rc6+ #167 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:77 [inline] dump_stack+0x1c9/0x2b4 lib/dump_stack.c:113 print_deadlock_bug kernel/locking/lockdep.c:1765 [inline] check_deadlock kernel/locking/lockdep.c:1809 [inline] validate_chain kernel/locking/lockdep.c:2405 [inline] __lock_acquire.cold.64+0x1fb/0x486 kernel/locking/lockdep.c:3435 lock_acquire+0x1e4/0x540 kernel/locking/lockdep.c:3924 __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline] _raw_spin_lock+0x2a/0x40 kernel/locking/spinlock.c:144 spin_lock include/linux/spinlock.h:310 [inline] bond_get_stats+0xb4/0x560 drivers/net/bonding/bond_main.c:3426 dev_get_stats+0x10f/0x470 net/core/dev.c:8316 bond_get_stats+0x232/0x560 drivers/net/bonding/bond_main.c:3432 dev_get_stats+0x10f/0x470 net/core/dev.c:8316 rtnl_fill_stats+0x4d/0xac0 net/core/rtnetlink.c:1169 rtnl_fill_ifinfo+0x1aa6/0x3fb0 net/core/rtnetlink.c:1611 rtmsg_ifinfo_build_skb+0xc8/0x190 net/core/rtnetlink.c:3268 rtmsg_ifinfo_event.part.30+0x45/0xe0 net/core/rtnetlink.c:3300 rtmsg_ifinfo_event net/core/rtnetlink.c:3297 [inline] rtnetlink_event+0x144/0x170 net/core/rtnetlink.c:4716 notifier_call_chain+0x180/0x390 kernel/notifier.c:93 __raw_notifier_call_chain kernel/notifier.c:394 [inline] raw_notifier_call_chain+0x2d/0x40 kernel/notifier.c:401 call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1735 call_netdevice_notifiers net/core/dev.c:1753 [inline] netdev_features_change net/core/dev.c:1321 [inline] netdev_change_features+0xb3/0x110 net/core/dev.c:7759 bond_compute_features.isra.47+0x585/0xa50 drivers/net/bonding/bond_main.c:1120 bond_enslave+0x1b25/0x5da0 drivers/net/bonding/bond_main.c:1755 bond_do_ioctl+0x7cb/0xae0 drivers/net/bonding/bond_main.c:3528 dev_ifsioc+0x43c/0xb30 net/core/dev_ioctl.c:327 dev_ioctl+0x1b5/0xcc0 net/core/dev_ioctl.c:493 sock_do_ioctl+0x1d3/0x3e0 net/socket.c:992 sock_ioctl+0x30d/0x680 net/socket.c:1093 vfs_ioctl fs/ioctl.c:46 [inline] file_ioctl fs/ioctl.c:500 [inline] do_vfs_ioctl+0x1de/0x1720 fs/ioctl.c:684 ksys_ioctl+0xa9/0xd0 fs/ioctl.c:701 __do_sys_ioctl fs/ioctl.c:708 [inline] __se_sys_ioctl fs/ioctl.c:706 [inline] __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:706 do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x440859 Code: e8 2c af 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 3b 10 fc ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007ffc51a92878 EFLAGS: 00000213 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000440859 RDX: 0000000020000040 RSI: 0000000000008990 RDI: 0000000000000003 RBP: 0000000000000000 R08: 00000000004002c8 R09: 00000000004002c8 R10: 00000000022d5880 R11: 0000000000000213 R12: 0000000000007390 R13: 0000000000401db0 R14: 0000000000000000 R15: 0000000000000000
--- drivers/net/bonding/bond_main.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
drivers/net/bonding/bond_main.c +12 -2
@@ -1687,6 +1687,8 @@ int bond_enslave(struct net_device *bond goto err_upper_unlink; } + bond->nest_level =dev_get_nest_level (bond_dev) +1 ; +/* If the mode uses primary, then the following is handled by * bond_change_active_slave(). */
@@ -1734,7 +1736,6 @@ int bond_enslave(struct net_device *bondif (bond_mode_uses_xmit_hash (bond))bond_update_slave_arr (bond,NULL ); - bond->nest_level =dev_get_nest_level (bond_dev); netdev_info(bond_dev, "Enslaving %s as %s interface with %s link\n", slave_dev->name,
@@ -3379,6 +3380,13 @@ static void bond_fold_stats(struct rtnl_ } } +static int bond_get_nest_level (struct net_device *bond_dev) +{ +struct bonding *bond =netdev_priv (bond_dev); + +return bond->nest_level; +} +static void bond_get_stats (struct net_device *bond_dev,struct rtnl_link_stats64 *stats) {
@@ -3387,7 +3395,7 @@ static void bond_get_stats(struct net_destruct list_head *iter;struct slave *slave; -spin_lock (&bond->stats_lock); +spin_lock_nested (&bond->stats_lock,bond_get_nest_level (bond_dev));memcpy (stats, &bond->bond_stats,sizeof (*stats));rcu_read_lock ();
@@ -4182,6 +4190,7 @@ static const struct net_device_ops bond_ .ndo_neigh_setup = bond_neigh_setup, .ndo_vlan_rx_add_vid = bond_vlan_rx_add_vid, .ndo_vlan_rx_kill_vid = bond_vlan_rx_kill_vid, + .ndo_get_lock_subclass = bond_get_nest_level, #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_netpoll_setup = bond_netpoll_setup, .ndo_netpoll_cleanup = bond_netpoll_cleanup,
@@ -4680,6 +4689,7 @@ static int bond_init(struct net_device *if (!bond->wq)return -ENOMEM ; + bond->nest_level =SINGLE_DEPTH_NESTING ;netdev_lockdep_set_classes (bond_dev);list_add_tail (&bond->bond_list, &bn->dev_list);
Greg Kroah-Hartman
maintainerPATCH 2/23 inet: frag: enforce memory limits earlier
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit 56e2c94f055d328f5f6b0a5c1721cca2f2d4e0a1 ]
We currently check current frags memory usage only when a new frag queue is created. This allows attackers to first consume the memory budget (default : 4 MB) creating thousands of frag queues, then sending tiny skbs to exceed high_thresh limit by 2 to 3 order of magnitude.
Note that before commit 648700f76b03 ("inet: frags: use rhashtables for reassembly units"), work queue could be starved under DOS, getting no cpu cycles.
After commit 648700f76b03, only the per frag queue timer can eventually remove an incomplete frag queue and its skbs.
--- net/ipv4/inet_fragment.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
net/ipv4/inet_fragment.c +5 -5
@@ -356,11 +356,6 @@ static struct inet_frag_queue *inet_frag {struct inet_frag_queue *q; -if (!nf->high_thresh ||frag_mem_limit (nf) > nf->high_thresh) { -inet_frag_schedule_worker (f); -return NULL ; - } - q =kmem_cache_zalloc (f->frags_cachep,GFP_ATOMIC );if (!q)return NULL ;
@@ -397,6 +392,11 @@ struct inet_frag_queue *inet_frag_find(sstruct inet_frag_queue *q;int depth =0 ; +if (!nf->high_thresh ||frag_mem_limit (nf) > nf->high_thresh) { +inet_frag_schedule_worker (f); +return NULL ; + } +if (frag_mem_limit (nf) > nf->low_thresh)inet_frag_schedule_worker (f);
Greg Kroah-Hartman
maintainerPATCH 3/23 ipv4: frags: handle possible skb truesize change
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <[email protected]>
[ Upstream commit 4672694bd4f1aebdab0ad763ae4716e89cb15221 ]
ip_frag_queue() might call pskb_pull() on one skb that is already in the fragment queue.
We need to take care of possible truesize change, or we might have an imbalance of the netns frags memory usage.
IPv6 is immune to this bug, because RFC5722, Section 4, amended by Errata ID 3089 states :
When reassembling an IPv6 datagram, if
one or more its constituent fragments is determined to be an overlapping fragment, the entire datagram (and any constituent fragments) MUST be silently discarded.
--- net/ipv4/ip_fragment.c | 5 +++++ 1 file changed, 5 insertions(+)
net/ipv4/ip_fragment.c +5 -0
@@ -447,11 +447,16 @@ found:int i = end -FRAG_CB (next)->offset;/* overlap is 'i' bytes */ if (i < next->len) { +int delta = -next->truesize; +/* Eat head of the next overlapped fragment * and leave the loop. The next ones cannot overlap. */ if (!pskb_pull (next, i)) goto err; + delta += next->truesize; +if (delta) +add_frag_mem_limit (qp->q.net, delta);FRAG_CB (next)->offset += i; qp->q.meat -= i;if (next->ip_summed !=CHECKSUM_UNNECESSARY )
Greg Kroah-Hartman
maintainerPATCH 5/23 netlink: Fix spectre v1 gadget in netlink_create()
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jeremy Cline <[email protected]>
[ Upstream commit bc5b6c0b62b932626a135f516a41838c510c6eba ]
'protocol' is a user-controlled value, so sanitize it after the bounds check to avoid using it for speculative out-of-bounds access to arrays indexed by it.
This addresses the following accesses detected with the help of smatch:
* net/netlink/af_netlink.c:654 __netlink_create() warn: potential spectre issue 'nlk_cb_mutex_keys' [w]
* net/netlink/af_netlink.c:654 __netlink_create() warn: potential spectre issue 'nlk_cb_mutex_key_strings' [w]
* net/netlink/af_netlink.c:685 netlink_create() warn: potential spectre issue 'nl_table' [w] (local cap)
--- net/netlink/af_netlink.c | 2 ++ 1 file changed, 2 insertions(+)
net/netlink/af_netlink.c +2 -0
@@ -63,6 +63,7 @@#include <linux/hash.h> #include <linux/genetlink.h> #include <linux/net_namespace.h> +#include <linux/nospec.h> #include <net/net_namespace.h> #include <net/sock.h>
@@ -647,6 +648,7 @@ static int netlink_create(struct net *neif (protocol <0 || protocol >=MAX_LINKS )return -EPROTONOSUPPORT ; + protocol =array_index_nospec (protocol,MAX_LINKS );netlink_lock_table ();#ifdef CONFIG_MODULES
Greg Kroah-Hartman
maintainerPATCH 8/23 net/mlx5e: E-Switch, Initialize eswitch only if eswitch manager
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eli Cohen <[email protected]>
[ Upstream commit 5f5991f36dce1e69dd8bd7495763eec2e28f08e7 ]
Execute mlx5_eswitch_init() only if we have MLX5_ESWITCH_MANAGER capabilities.
Do the same for mlx5_eswitch_cleanup().
--- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +2 -2
@@ -1616,7 +1616,7 @@ int mlx5_eswitch_init(struct mlx5_core_dint vport_num;int err; -if (!MLX5_VPORT_MANAGER (dev)) +if (!MLX5_ESWITCH_MANAGER (dev))return 0 ; esw_info(dev,
@@ -1689,7 +1689,7 @@ abort:void mlx5_eswitch_cleanup (struct mlx5_eswitch *esw) { -if (!esw || !MLX5_VPORT_MANAGER (esw->dev)) +if (!esw || !MLX5_ESWITCH_MANAGER (esw->dev))return ;esw_info (esw->dev,"cleanup\n" );
Greg Kroah-Hartman
maintainerPATCH 9/23 squashfs: more metadata hardening
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Torvalds <[email protected]>
commit d512584780d3e6a7cacb2f482834849453d444a1 upstream.
Anatoly reports another squashfs fuzzing issue, where the decompression parameters themselves are in a compressed block.
This causes squashfs_read_data() to be called in order to read the decompression options before the decompression stream having been set up, making squashfs go sideways.
--- fs/squashfs/block.c | 2 ++ 1 file changed, 2 insertions(+)
fs/squashfs/block.c +2 -0
@@ -167,6 +167,8 @@ int squashfs_read_data(struct super_bloc }if (compressed) { +if (!msblk->stream) + goto read_failure; length =squashfs_decompress (msblk, bh, b, offset, length, output);if (length <0 )
Greg Kroah-Hartman
maintainerPATCH 11/23 can: ems_usb: Fix memory leak on ems_usb_disconnect()
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anton Vasilyev <[email protected]>
commit 72c05f32f4a5055c9c8fe889bb6903ec959c0aad upstream.
ems_usb_probe() allocates memory for dev->tx_msg_buffer, but there is no its deallocation in ems_usb_disconnect().
Found by Linux Driver Verification project (linuxtesting.org).
--- drivers/net/can/usb/ems_usb.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/can/usb/ems_usb.c +1 -0
@@ -1071,6 +1071,7 @@ static void ems_usb_disconnect(struct ususb_free_urb (dev->intr_urb);kfree (dev->intr_in_buffer); +kfree (dev->tx_msg_buffer); } }
Greg Kroah-Hartman
maintainerPATCH 12/23 net: socket: fix potential spectre v1 gadget in socketcall
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jeremy Cline <[email protected]>
commit c8e8cd579bb4265651df8223730105341e61a2d1 upstream.
'call' is a user-controlled value, so sanitize the array index after the bounds check to avoid speculating past the bounds of the 'nargs' array.
Found with the help of Smatch:
net/socket.c:2508 __do_sys_socketcall() warn: potential spectre issue 'nargs' [r] (local cap)
--- net/socket.c | 2 ++ 1 file changed, 2 insertions(+)
net/socket.c +2 -0
@@ -89,6 +89,7 @@#include <linux/magic.h> #include <linux/slab.h> #include <linux/xattr.h> +#include <linux/nospec.h> #include <linux/uaccess.h> #include <asm/unistd.h>
@@ -2443,6 +2444,7 @@ SYSCALL_DEFINE2(socketcall, int, call, uif (call <1 || call >SYS_SENDMMSG )return -EINVAL ; + call =array_index_nospec (call,SYS_SENDMMSG +1 ); len = nargs[call];if (len >sizeof (a))
Greg Kroah-Hartman
maintainerPATCH 14/23 x86/apic: Future-proof the TSC_DEADLINE quirk for SKX
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Len Brown <[email protected]>
commit d9e6dbcf28f383bf08e6a3180972f5722e514a54 upstream.
All SKX with stepping higher than 4 support the TSC_DEADLINE, no matter the microcode version.
Without this patch, upcoming SKX steppings will not be able to use their TSC_DEADLINE timer.
--- arch/x86/kernel/apic/apic.c | 3 +++ 1 file changed, 3 insertions(+)
arch/x86/kernel/apic/apic.c +3 -0
@@ -580,6 +580,9 @@ static u32 skx_deadline_rev(void)case 0x04 :return 0x02000014 ; } +if (boot_cpu_data.x86_stepping >4 ) +return 0 ; +return ~0U ; }
Greg Kroah-Hartman
maintainerPATCH 16/23 kvm: x86: vmx: fix vpid leak
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Roman Kagan <[email protected]>
commit 63aff65573d73eb8dda4732ad4ef222dd35e4862 upstream.
VPID for the nested vcpu is allocated at vmx_create_vcpu whenever nested vmx is turned on with the module parameter.
However, it's only freed if the L1 guest has executed VMXON which is not a given.
As a result, on a system with nested==on every creation+deletion of an L1 vcpu without running an L2 guest results in leaking one vpid. Since the total number of vpids is limited to 64k, they can eventually get exhausted, preventing L2 from starting.
Delay allocation of the L2 vpid until VMXON emulation, thus matching its freeing.
--- arch/x86/kvm/vmx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
arch/x86/kvm/vmx.c +3 -4
@@ -7354,6 +7354,8 @@ static int enter_vmx_operation(struct kv HRTIMER_MODE_REL_PINNED); vmx->nested.preemption_timer.function = vmx_preemption_timer_fn; + vmx->nested.vpid02 =allocate_vpid (); + vmx->nested.vmxon = true;return 0 ;
@@ -9802,10 +9804,8 @@ static struct kvm_vcpu *vmx_create_vcpu( goto free_vmcs; } -if (nested) { +if (nested)nested_vmx_setup_ctls_msrs (vmx); - vmx->nested.vpid02 =allocate_vpid (); - } vmx->nested.posted_intr_nv =-1 ; vmx->nested.current_vmptr =-1ull ;
@@ -9822,7 +9822,6 @@ static struct kvm_vcpu *vmx_create_vcpu(return &vmx->vcpu; free_vmcs: -free_vpid (vmx->nested.vpid02);free_loaded_vmcs (vmx->loaded_vmcs); free_msrs:kfree (vmx->guest_msrs);
Greg Kroah-Hartman
maintainerPATCH 17/23 audit: fix potential null dereference context->module.name
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Wang <[email protected]>
commit b305f7ed0f4f494ad6f3ef5667501535d5a8fa31 upstream.
The variable 'context->module.name' may be null pointer when kmalloc return null, so it's better to check it before using to avoid null dereference.
Another one more thing this patch does is using kstrdup instead of (kmalloc + strcpy), and signal a lost record via audit_log_lost.
--- kernel/auditsc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
kernel/auditsc.c +9 -4
@@ -1274,8 +1274,12 @@ static void show_special(struct audit_cobreak ;case AUDIT_KERN_MODULE :audit_log_format (ab,"name=" ); -audit_log_untrustedstring (ab, context->module.name); -kfree (context->module.name); +if (context->module.name) { +audit_log_untrustedstring (ab, context->module.name); +kfree (context->module.name); + }else +audit_log_format (ab,"(null)" ); +break ; }audit_log_end (ab);
@@ -2387,8 +2391,9 @@ void __audit_log_kern_module(char *name) {struct audit_context *context = current->audit_context; - context->module.name =kmalloc (strlen (name) +1 ,GFP_KERNEL ); -strcpy (context->module.name, name); + context->module.name =kstrdup (name,GFP_KERNEL ); +if (!context->module.name) +audit_log_lost ("out of memory in __audit_log_kern_module" ); context->type =AUDIT_KERN_MODULE ; }
Greg Kroah-Hartman
maintainerPATCH 19/23 iwlwifi: add more card IDs for 9000 series
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Emmanuel Grumbach <[email protected]>
commit 0a5257bc6d89c2ae69b9bf955679cb4f89261874 upstream.
Add new device IDs for the 9000 series.
--- drivers/net/wireless/intel/iwlwifi/cfg/9000.c | 69 ++++++++++++++++++++++++ drivers/net/wireless/intel/iwlwifi/iwl-config.h | 5 + drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 22 +++++++ 3 files changed, 96 insertions(+)
drivers/net/wireless/intel/iwlwifi/cfg/9000.c +69 -0
@@ -177,6 +177,17 @@ const struct iwl_cfg iwl9260_2ac_cfg = { .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, }; +const struct iwl_cfg iwl9260_killer_2ac_cfg = { + .name ="Killer (R) Wireless-AC 1550 Wireless Network Adapter (9260NGW)" , + .fw_name_pre =IWL9260A_FW_PRE , + .fw_name_pre_b_or_c_step =IWL9260B_FW_PRE , +IWL_DEVICE_9000 , + .ht_params = &iwl9000_ht_params, + .nvm_ver =IWL9000_NVM_VERSION , + .nvm_calib_ver =IWL9000_TX_POWER_VERSION , + .max_ht_ampdu_exponent =IEEE80211_HT_MAX_AMPDU_64K , +}; +const struct iwl_cfg iwl9270_2ac_cfg = { .name ="Intel(R) Dual Band Wireless AC 9270" , .fw_name_pre =IWL9260A_FW_PRE ,
@@ -266,6 +277,34 @@ const struct iwl_cfg iwl9560_2ac_cfg_soc .soc_latency = 5000, }; +const struct iwl_cfg iwl9560_killer_2ac_cfg_soc = { + .name ="Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)" , + .fw_name_pre =IWL9000A_FW_PRE , + .fw_name_pre_b_or_c_step =IWL9000B_FW_PRE , + .fw_name_pre_rf_next_step =IWL9000RFB_FW_PRE , +IWL_DEVICE_9000 , + .ht_params = &iwl9000_ht_params, + .nvm_ver =IWL9000_NVM_VERSION , + .nvm_calib_ver =IWL9000_TX_POWER_VERSION , + .max_ht_ampdu_exponent =IEEE80211_HT_MAX_AMPDU_64K , + .integrated = true, + .soc_latency =5000 , +}; + +const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc = { + .name ="Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)" , + .fw_name_pre =IWL9000A_FW_PRE , + .fw_name_pre_b_or_c_step =IWL9000B_FW_PRE , + .fw_name_pre_rf_next_step =IWL9000RFB_FW_PRE , +IWL_DEVICE_9000 , + .ht_params = &iwl9000_ht_params, + .nvm_ver =IWL9000_NVM_VERSION , + .nvm_calib_ver =IWL9000_TX_POWER_VERSION , + .max_ht_ampdu_exponent =IEEE80211_HT_MAX_AMPDU_64K , + .integrated = true, + .soc_latency =5000 , +}; +const struct iwl_cfg iwl9460_2ac_cfg_shared_clk = { .name ="Intel(R) Dual Band Wireless AC 9460" , .fw_name_pre =IWL9000A_FW_PRE ,
@@ -316,6 +355,36 @@ const struct iwl_cfg iwl9560_2ac_cfg_sha .fw_name_pre = IWL9000A_FW_PRE, .fw_name_pre_b_or_c_step = IWL9000B_FW_PRE, .fw_name_pre_rf_next_step =IWL9000RFB_FW_PRE , +IWL_DEVICE_9000 , + .ht_params = &iwl9000_ht_params, + .nvm_ver = IWL9000_NVM_VERSION, + .nvm_calib_ver = IWL9000_TX_POWER_VERSION, + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K, + .integrated = true, + .soc_latency = 5000, + .extra_phy_cfg_flags = FW_PHY_CFG_SHARED_CLK +}; + +const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk = { + .name ="Killer (R) Wireless-AC 1550i Wireless Network Adapter (9560NGW)" , + .fw_name_pre =IWL9000A_FW_PRE , + .fw_name_pre_b_or_c_step =IWL9000B_FW_PRE , + .fw_name_pre_rf_next_step =IWL9000RFB_FW_PRE , +IWL_DEVICE_9000 , + .ht_params = &iwl9000_ht_params, + .nvm_ver =IWL9000_NVM_VERSION , + .nvm_calib_ver =IWL9000_TX_POWER_VERSION , + .max_ht_ampdu_exponent =IEEE80211_HT_MAX_AMPDU_64K , + .integrated = true, + .soc_latency =5000 , + .extra_phy_cfg_flags =FW_PHY_CFG_SHARED_CLK +}; + +const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk = { + .name ="Killer (R) Wireless-AC 1550s Wireless Network Adapter (9560NGW)" , + .fw_name_pre =IWL9000A_FW_PRE , + .fw_name_pre_b_or_c_step =IWL9000B_FW_PRE , + .fw_name_pre_rf_next_step =IWL9000RFB_FW_PRE ,IWL_DEVICE_9000 , .ht_params = &iwl9000_ht_params, .nvm_ver = IWL9000_NVM_VERSION,
drivers/net/wireless/intel/iwlwifi/iwl-config.h +5 -0
@@ -470,6 +470,7 @@ extern const struct iwl_cfg iwl8265_2ac_extern const struct iwl_cfg iwl4165_2ac_sdio_cfg;extern const struct iwl_cfg iwl9160_2ac_cfg;extern const struct iwl_cfg iwl9260_2ac_cfg; +extern const struct iwl_cfg iwl9260_killer_2ac_cfg;extern const struct iwl_cfg iwl9270_2ac_cfg;extern const struct iwl_cfg iwl9460_2ac_cfg;extern const struct iwl_cfg iwl9560_2ac_cfg;
@@ -477,10 +478,14 @@ extern const struct iwl_cfg iwl9460_2ac_extern const struct iwl_cfg iwl9461_2ac_cfg_soc;extern const struct iwl_cfg iwl9462_2ac_cfg_soc;extern const struct iwl_cfg iwl9560_2ac_cfg_soc; +extern const struct iwl_cfg iwl9560_killer_2ac_cfg_soc; +extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc;extern const struct iwl_cfg iwl9460_2ac_cfg_shared_clk;extern const struct iwl_cfg iwl9461_2ac_cfg_shared_clk;extern const struct iwl_cfg iwl9462_2ac_cfg_shared_clk;extern const struct iwl_cfg iwl9560_2ac_cfg_shared_clk; +extern const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk; +extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk;extern const struct iwl_cfg iwla000_2ac_cfg_hr;extern const struct iwl_cfg iwla000_2ac_cfg_hr_cdb;extern const struct iwl_cfg iwla000_2ac_cfg_jf;
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +22 -0
@@ -543,6 +543,9 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x2526, 0x1210, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)}, {IWL_PCI_DEVICE(0x2526, 0x1420, iwl9460_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2526, 0x1550, iwl9260_killer_2ac_cfg)}, + {IWL_PCI_DEVICE(0x2526, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2526, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)}, {IWL_PCI_DEVICE(0x2526, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2526, 0x2034, iwl9560_2ac_cfg_soc)},
@@ -552,6 +555,7 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)}, {IWL_PCI_DEVICE(0x2526, 0x4234, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2526, 0x42A4, iwl9462_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2526, 0x8014, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)}, {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)},
@@ -576,6 +580,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x2720, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x2720, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2720, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x2720, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x2720, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2720, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2720, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x2720, 0x4030, iwl9560_2ac_cfg)},
@@ -602,6 +608,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x30DC, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x30DC, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x30DC, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x30DC, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x30DC, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x30DC, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x30DC, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x30DC, 0x4030, iwl9560_2ac_cfg_soc)},
@@ -628,6 +636,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x31DC, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x31DC, 0x1030, iwl9560_2ac_cfg_shared_clk)}, {IWL_PCI_DEVICE(0x31DC, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x31DC, 0x1551, iwl9560_killer_s_2ac_cfg_shared_clk)}, + {IWL_PCI_DEVICE(0x31DC, 0x1552, iwl9560_killer_2ac_cfg_shared_clk)}, {IWL_PCI_DEVICE(0x31DC, 0x2030, iwl9560_2ac_cfg_shared_clk)}, {IWL_PCI_DEVICE(0x31DC, 0x2034, iwl9560_2ac_cfg_shared_clk)}, {IWL_PCI_DEVICE(0x31DC, 0x4030, iwl9560_2ac_cfg_shared_clk)},
@@ -654,6 +664,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x34F0, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x34F0, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x34F0, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x34F0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x34F0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x34F0, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x34F0, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x34F0, 0x4030, iwl9560_2ac_cfg_soc)},
@@ -680,6 +692,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x3DF0, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x3DF0, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x3DF0, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x3DF0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x3DF0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x3DF0, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x3DF0, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x3DF0, 0x4030, iwl9560_2ac_cfg_soc)},
@@ -706,6 +720,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x43F0, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x43F0, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x43F0, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x43F0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x43F0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x43F0, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x43F0, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x43F0, 0x4030, iwl9560_2ac_cfg_soc)},
@@ -741,6 +757,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0x9DF0, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0x9DF0, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x9DF0, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0x9DF0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0x9DF0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x9DF0, 0x2010, iwl9460_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x9DF0, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0x9DF0, 0x2034, iwl9560_2ac_cfg_soc)},
@@ -769,6 +787,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0xA0F0, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0xA0F0, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA0F0, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA0F0, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA0F0, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA0F0, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA0F0, 0x4030, iwl9560_2ac_cfg_soc)},
@@ -795,6 +815,8 @@ static const struct pci_device_id iwl_hw {IWL_PCI_DEVICE(0xA370, 0x1010, iwl9260_2ac_cfg)}, {IWL_PCI_DEVICE(0xA370, 0x1030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA370, 0x1210, iwl9260_2ac_cfg)}, + {IWL_PCI_DEVICE(0xA370, 0x1551, iwl9560_killer_s_2ac_cfg_soc)}, + {IWL_PCI_DEVICE(0xA370, 0x1552, iwl9560_killer_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA370, 0x2030, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA370, 0x2034, iwl9560_2ac_cfg_soc)}, {IWL_PCI_DEVICE(0xA370, 0x4030, iwl9560_2ac_cfg_soc)},
Greg Kroah-Hartman
maintainerPATCH 21/23 crypto: padlock-aes - Fix Nano workaround data corruption
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Herbert Xu <[email protected]>
commit 46d8c4b28652d35dc6cfb5adf7f54e102fc04384 upstream.
This was detected by the self-test thanks to Ard's chunking patch.
I finally got around to testing this out on my ancient Via box. It turns out that the workaround got the assembly wrong and we end up doing count + initial cycles of the loop instead of just count.
This obviously causes corruption, either by overwriting the source that is yet to be processed, or writing over the end of the buffer.
On CPUs that don't require the workaround only ECB is affected. On Nano CPUs both ECB and CBC are affected.
This patch fixes it by doing the subtraction prior to the assembly.
--- drivers/crypto/padlock-aes.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/crypto/padlock-aes.c +6 -2
@@ -266,6 +266,8 @@ static inline void padlock_xcrypt_ecb(coreturn ; } + count -= initial; +if (initial) asmvolatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */ : "+S"(input), "+D"(output)
@@ -273,7 +275,7 @@ static inline void padlock_xcrypt_ecb(co asmvolatile (".byte 0xf3,0x0f,0xa7,0xc8" /* rep xcryptecb */ :"+S" (input),"+D" (output) - :"d" (control_word),"b" (key),"c" (count - initial)); + :"d" (control_word),"b" (key),"c" (count)); } static inline u8 *padlock_xcrypt_cbc(const u8 *input, u8 *output, void *key,
@@ -284,6 +286,8 @@ static inline u8 *padlock_xcrypt_cbc(conif (count < cbc_fetch_blocks)return cbc_crypt (input, output, key, iv, control_word, count); + count -= initial; +if (initial) asmvolatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */ : "+S" (input), "+D" (output), "+a" (iv)
@@ -291,7 +295,7 @@ static inline u8 *padlock_xcrypt_cbc(con asmvolatile (".byte 0xf3,0x0f,0xa7,0xd0" /* rep xcryptcbc */ :"+S" (input),"+D" (output),"+a" (iv) - :"d" (control_word),"b" (key),"c" (count-initial)); + :"d" (control_word),"b" (key),"c" (count));return iv; }
Greg Kroah-Hartman
maintainerPATCH 23/23 scsi: sg: fix minor memory leak in error path
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Battersby <[email protected]>
commit c170e5a8d222537e98aa8d4fddb667ff7a2ee114 upstream.
Fix a minor memory leak when there is an error opening a /dev/sg device.
--- drivers/scsi/sg.c | 1 + 1 file changed, 1 insertion(+)
drivers/scsi/sg.c +1 -0
@@ -2186,6 +2186,7 @@ sg_add_sfp(Sg_device * sdp)write_lock_irqsave (&sdp->sfd_lock, iflags);if (atomic_read (&sdp->detaching)) {write_unlock_irqrestore (&sdp->sfd_lock, iflags); +kfree (sfp);return ERR_PTR (-ENODEV ); }list_add_tail (&sfp->sfd_siblings, &sdp->sfds);
Greg Kroah-Hartman
maintainerPATCH 13/23 virtio_balloon: fix another race between migration and ballooning
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiang Biao <[email protected]>
commit 89da619bc18d79bca5304724c11d4ba3b67ce2c6 upstream.
Kernel panic when with high memory pressure, calltrace looks like,
PID: 21439 TASK: ffff881be3afedd0 CPU: 16 COMMAND: "java"
#0 [ffff881ec7ed7630] machine_kexec at ffffffff81059beb #1 [ffff881ec7ed7690] __crash_kexec at ffffffff81105942 #2 [ffff881ec7ed7760] crash_kexec at ffffffff81105a30 #3 [ffff881ec7ed7778] oops_end at ffffffff816902c8
#4 [ffff881ec7ed77a0] no_context at ffffffff8167ff46 #5 [ffff881ec7ed77f0] __bad_area_nosemaphore at ffffffff8167ffdc #6 [ffff881ec7ed7838] __node_set at ffffffff81680300 #7 [ffff881ec7ed7860] __do_page_fault at ffffffff8169320f #8 [ffff881ec7ed78c0] do_page_fault at ffffffff816932b5 #9 [ffff881ec7ed78f0] page_fault at ffffffff8168f4c8
[exception RIP: _raw_spin_lock_irqsave+47]
RIP: ffffffff8168edef RSP: ffff881ec7ed79a8 RFLAGS: 00010046
RAX: 0000000000000246 RBX: ffffea0019740d00 RCX: ffff881ec7ed7fd8
RDX: 0000000000020000 RSI: 0000000000000016 RDI: 0000000000000008
RBP: ffff881ec7ed79a8 R8: 0000000000000246 R9: 000000000001a098
R10: ffff88107ffda000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000008 R14: ffff881ec7ed7a80 R15: ffff881be3afedd0
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018It happens in the pagefault and results in double pagefault during compacting pages when memory allocation fails.
Analysed the vmcore, the page leads to second pagefault is corrupted with _mapcount=-256, but private=0.
It's caused by the race between migration and ballooning, and lock missing in virtballoon_migratepage() of virtio_balloon driver. This patch fix the bug.
--- drivers/virtio/virtio_balloon.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/virtio/virtio_balloon.c +2 -0
@@ -490,7 +490,9 @@ static int virtballoon_migratepage(structell_host (vb, vb->inflate_vq);/* balloon's page migration 2nd step -- deflate "page" */ +spin_lock_irqsave (&vb_dev_info->pages_lock, flags);balloon_page_delete (page); +spin_unlock_irqrestore (&vb_dev_info->pages_lock, flags); vb->num_pfns =VIRTIO_BALLOON_PAGES_PER_PAGE ;set_page_pfns (vb, vb->pfns, page);tell_host (vb, vb->deflate_vq);
Greg Kroah-Hartman
maintainerPATCH 15/23 x86/entry/64: Remove %ebx handling from error_entry/exit
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Lutomirski <[email protected]>
commit b3681dd548d06deb2e1573890829dff4b15abf46 upstream.
error_entry and error_exit communicate the user vs. kernel status of the frame using %ebx. This is unnecessary -- the information is in regs->cs. Just use regs->cs.
This makes error_entry simpler and makes error_exit more robust.
It also fixes a nasty bug. Before all the Spectre nonsense, the xen_failsafe_callback entry point returned like this:
ALLOC_PT_GPREGS_ON_STACK
SAVE_C_REGS
SAVE_EXTRA_REGS
ENCODE_FRAME_POINTER
jmp error_exit
And it did not go through error_entry. This was bogus: RBX contained garbage, and error_exit expected a flag in RBX.
Fortunately, it generally contained *nonzero* garbage, so the correct code path was used. As part of the Spectre fixes, code was added to clear RBX to mitigate certain speculation attacks. Now, depending on kernel configuration, RBX got zeroed and, when running some Wine workloads, the kernel crashes. This was introduced by:
commit 3ac6d8c787b8 ("x86/entry/64: Clear registers for exceptions/interrupts, to reduce speculation attack surface")
With this patch applied, RBX is no longer needed as a flag, and the problem goes away.
I suspect that malicious userspace could use this bug to crash the kernel even without the offending patch applied, though.
[ Historical note: I wrote this patch as a cleanup before I was aware
of the bug it fixed. ]
[ Note to stable maintainers: this should probably get applied to all
kernels. If you're nervous about that, a more conservative fix to add xorl %ebx,%ebx; incl %ebx before the jump to error_exit should also fix the problem. ]
--- arch/x86/entry/entry_64.S | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-)
arch/x86/entry/entry_64.S +4 -14
@@ -933,7 +933,7 @@ ENTRY(\sym) call \do_sym - jmp error_exit /* %ebx: no swapgs flag */ + jmp error_exit .endif END(\sym) .endm
@@ -1166,7 +1166,6 @@ END(paranoid_exit) /* * Save all registers in pt_regs, and switch GS if needed. - * Return: EBX=0: came from user mode; EBX=1: otherwise */ ENTRY(error_entry) UNWIND_HINT_FUNC
@@ -1213,7 +1212,6 @@ ENTRY(error_entry) * for these here too. */ .Lerror_kernelspace: - incl %ebx leaq native_irq_return_iret(%rip), %rcx cmpq %rcx, RIP+8(%rsp) je .Lerror_bad_iret
@@ -1247,28 +1245,20 @@ ENTRY(error_entry) /* * Pretend that the exception came from user mode: set up pt_regs - * as if we faulted immediately after IRET and clear EBX so that - * error_exit knows that we will be returning to user mode. + * as if we faulted immediately after IRET. */ mov %rsp, %rdi call fixup_bad_iret mov %rax, %rsp - decl %ebx jmp .Lerror_entry_from_usermode_after_swapgs END(error_entry) - -/* - * On entry, EBX is a "return to kernel mode" flag: - * 1: already in kernel mode, don't need SWAPGS - * 0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode - */ ENTRY(error_exit) UNWIND_HINT_REGS DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF - testl %ebx, %ebx - jnz retint_kernel + testb $3, CS(%rsp) + jz retint_kernel jmp retint_user END(error_exit)
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel
Greg Kroah-Hartman
maintainerPATCH 15/23 x86/entry/64: Remove %ebx handling from error_entry/exit
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Lutomirski <[email protected]>
commit b3681dd548d06deb2e1573890829dff4b15abf46 upstream.
error_entry and error_exit communicate the user vs. kernel status of the frame using %ebx. This is unnecessary -- the information is in regs->cs. Just use regs->cs.
This makes error_entry simpler and makes error_exit more robust.
It also fixes a nasty bug. Before all the Spectre nonsense, the xen_failsafe_callback entry point returned like this:
ALLOC_PT_GPREGS_ON_STACK
SAVE_C_REGS
SAVE_EXTRA_REGS
ENCODE_FRAME_POINTER
jmp error_exit
And it did not go through error_entry. This was bogus: RBX contained garbage, and error_exit expected a flag in RBX.
Fortunately, it generally contained *nonzero* garbage, so the correct code path was used. As part of the Spectre fixes, code was added to clear RBX to mitigate certain speculation attacks. Now, depending on kernel configuration, RBX got zeroed and, when running some Wine workloads, the kernel crashes. This was introduced by:
commit 3ac6d8c787b8 ("x86/entry/64: Clear registers for exceptions/interrupts, to reduce speculation attack surface")
With this patch applied, RBX is no longer needed as a flag, and the problem goes away.
I suspect that malicious userspace could use this bug to crash the kernel even without the offending patch applied, though.
[ Historical note: I wrote this patch as a cleanup before I was aware
of the bug it fixed. ]
[ Note to stable maintainers: this should probably get applied to all
kernels. If you're nervous about that, a more conservative fix to add xorl %ebx,%ebx; incl %ebx before the jump to error_exit should also fix the problem. ]
--- arch/x86/entry/entry_64.S | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-)
arch/x86/entry/entry_64.S +4 -14
@@ -933,7 +933,7 @@ ENTRY(\sym) call \do_sym - jmp error_exit /* %ebx: no swapgs flag */ + jmp error_exit .endif END(\sym) .endm
@@ -1166,7 +1166,6 @@ END(paranoid_exit) /* * Save all registers in pt_regs, and switch GS if needed. - * Return: EBX=0: came from user mode; EBX=1: otherwise */ ENTRY(error_entry) UNWIND_HINT_FUNC
@@ -1213,7 +1212,6 @@ ENTRY(error_entry) * for these here too. */ .Lerror_kernelspace: - incl %ebx leaq native_irq_return_iret(%rip), %rcx cmpq %rcx, RIP+8(%rsp) je .Lerror_bad_iret
@@ -1247,28 +1245,20 @@ ENTRY(error_entry) /* * Pretend that the exception came from user mode: set up pt_regs - * as if we faulted immediately after IRET and clear EBX so that - * error_exit knows that we will be returning to user mode. + * as if we faulted immediately after IRET. */ mov %rsp, %rdi call fixup_bad_iret mov %rax, %rsp - decl %ebx jmp .Lerror_entry_from_usermode_after_swapgs END(error_entry) - -/* - * On entry, EBX is a "return to kernel mode" flag: - * 1: already in kernel mode, don't need SWAPGS - * 0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode - */ ENTRY(error_exit) UNWIND_HINT_REGS DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF - testl %ebx, %ebx - jnz retint_kernel + testb $3, CS(%rsp) + jz retint_kernel jmp retint_user END(error_exit)
Greg Kroah-Hartman
maintainerPATCH 18/23 userfaultfd: remove uffd flags from vma->vm_flags if UFFD_EVENT_FORK fails
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mike Rapoport <[email protected]>
commit 31e810aa1033a7db50a2746cd34a2432237f6420 upstream.
The fix in commit 0cbb4b4f4c44 ("userfaultfd: clear the vma->vm_userfaultfd_ctx if UFFD_EVENT_FORK fails") cleared the vma->vm_userfaultfd_ctx but kept userfaultfd flags in vma->vm_flags that were copied from the parent process VMA.
As the result, there is an inconsistency between the values of vma->vm_userfaultfd_ctx.ctx and vma->vm_flags which triggers BUG_ON in userfaultfd_release().
Clearing the uffd flags from vma->vm_flags in case of UFFD_EVENT_FORK failure resolves the issue.
--- fs/userfaultfd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
fs/userfaultfd.c +3 -1
@@ -628,8 +628,10 @@ static void userfaultfd_event_wait_compl/* the various vma->vm_userfaultfd_ctx still points to it */ down_write (&mm->mmap_sem);for (vma = mm->mmap; vma; vma = vma->vm_next) -if (vma->vm_userfaultfd_ctx.ctx == release_new_ctx) +if (vma->vm_userfaultfd_ctx.ctx == release_new_ctx) { vma->vm_userfaultfd_ctx =NULL_VM_UFFD_CTX ; + vma->vm_flags &= ~(VM_UFFD_WP |VM_UFFD_MISSING ); + }up_write (&mm->mmap_sem);userfaultfd_ctx_put (release_new_ctx);
Greg Kroah-Hartman
maintainerPATCH 20/23 RDMA/uverbs: Expand primary and alt AV port checks
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Morgenstein <[email protected]>
commit addb8a6559f0f8b5a37582b7ca698358445a55bf upstream.
The commit cited below checked that the port numbers provided in the primary and alt AVs are legal.
That is sufficient to prevent a kernel panic. However, it is not sufficient for correct operation.
In Linux, AVs (both primary and alt) must be completely self-described. We do not accept an AV from userspace without an embedded port number. (This has been the case since kernel 3.14 commit dbf727de7440 ("IB/core: Use GID table in AH creation and dmac resolution")).
For the primary AV, this embedded port number must match the port number specified with IB_QP_PORT.
We also expect the port number embedded in the alt AV to match the alt_port_num value passed by the userspace driver in the modify_qp command base structure.
Add these checks to modify_qp.
--- drivers/infiniband/core/uverbs_cmd.c | 59 ++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-)
drivers/infiniband/core/uverbs_cmd.c +54 -5
@@ -1981,15 +1981,64 @@ static int modify_qp(struct ib_uverbs_fi goto release_qp; } -if ((cmd->base.attr_mask &IB_QP_AV ) && - !rdma_is_port_valid (qp->device, cmd->base.dest.port_num)) { - ret = -EINVAL ; - goto release_qp; +if ((cmd->base.attr_mask &IB_QP_AV )) { +if (!rdma_is_port_valid (qp->device, cmd->base.dest.port_num)) { + ret = -EINVAL ; + goto release_qp; + } + +if (cmd->base.attr_mask &IB_QP_STATE && + cmd->base.qp_state ==IB_QPS_RTR ) { +/* We are in INIT->RTR TRANSITION (if we are not, +* this transition will be rejected in subsequent checks). +* In the INIT->RTR transition, we cannot have IB_QP_PORT set, +* but the IB_QP_STATE flag is required. +* +* Since kernel 3.14 (commit dbf727de7440), the uverbs driver, +* when IB_QP_AV is set, has required inclusion of a valid +* port number in the primary AV. (AVs are created and handled +* differently for infiniband and ethernet (RoCE) ports). +* +* Check the port number included in the primary AV against +* the port number in the qp struct, which was set (and saved) +* in the RST->INIT transition. +*/ +if (cmd->base.dest.port_num != qp->real_qp->port) { + ret = -EINVAL ; + goto release_qp; + } + }else { +/* We are in SQD->SQD. (If we are not, this transition will +* be rejected later in the verbs layer checks). +* Check for both IB_QP_PORT and IB_QP_AV, these can be set +* together in the SQD->SQD transition. +* +* If only IP_QP_AV was set, add in IB_QP_PORT as well (the +* verbs layer driver does not track primary port changes +* resulting from path migration. Thus, in SQD, if the primary +* AV is modified, the primary port should also be modified). +* +* Note that in this transition, the IB_QP_STATE flag +* is not allowed. +*/ +if (((cmd->base.attr_mask & (IB_QP_AV |IB_QP_PORT )) + == (IB_QP_AV |IB_QP_PORT )) && + cmd->base.port_num != cmd->base.dest.port_num) { + ret = -EINVAL ; + goto release_qp; + } +if ((cmd->base.attr_mask & (IB_QP_AV |IB_QP_PORT )) + ==IB_QP_AV ) { + cmd->base.attr_mask |=IB_QP_PORT ; + cmd->base.port_num = cmd->base.dest.port_num; + } + } }if ((cmd->base.attr_mask &IB_QP_ALT_PATH ) && (!rdma_is_port_valid (qp->device, cmd->base.alt_port_num) || - !rdma_is_port_valid (qp->device, cmd->base.alt_dest.port_num))) { + !rdma_is_port_valid (qp->device, cmd->base.alt_dest.port_num) || + cmd->base.alt_port_num != cmd->base.alt_dest.port_num)) { ret = -EINVAL ; goto release_qp; }
Greg Kroah-Hartman
maintainerPATCH 22/23 drm/vc4: Reset ->{x, y}_scaling[1] when dealing with uniplanar formats
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Boris Brezillon <[email protected]>
commit a6a00918d4ad8718c3ccde38c02cec17f116b2fd upstream.
This is needed to ensure ->is_unity is correct when the plane was previously configured to output a multi-planar format with scaling enabled, and is then being reconfigured to output a uniplanar format.
--- drivers/gpu/drm/vc4/vc4_plane.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/gpu/drm/vc4/vc4_plane.c +3 -0
@@ -352,6 +352,9 @@ static int vc4_plane_setup_clipping_and_ vc4_state->x_scaling[0 ] =VC4_SCALING_TPZ ;if (vc4_state->y_scaling[0 ] ==VC4_SCALING_NONE ) vc4_state->y_scaling[0 ] =VC4_SCALING_TPZ ; + }else { + vc4_state->x_scaling[1 ] =VC4_SCALING_NONE ; + vc4_state->y_scaling[1 ] =VC4_SCALING_NONE ; } vc4_state->is_unity = (vc4_state->x_scaling[0] == VC4_SCALING_NONE &&
Greg Kroah-Hartman
maintainerPATCH 4/23 net: dsa: Do not suspend/resume closed slave_dev
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Fainelli <[email protected]>
[ Upstream commit a94c689e6c9e72e722f28339e12dff191ee5a265 ]
If a DSA slave network device was previously disabled, there is no need to suspend or resume it.
--- net/dsa/slave.c | 6 ++++++ 1 file changed, 6 insertions(+)
net/dsa/slave.c +6 -0
@@ -1219,6 +1219,9 @@ int dsa_slave_suspend(struct net_device {struct dsa_slave_priv *p =netdev_priv (slave_dev); +if (!netif_running (slave_dev)) +return 0 ; +netif_device_detach (slave_dev);if (p->phy) {
@@ -1236,6 +1239,9 @@ int dsa_slave_resume(struct net_device * {struct dsa_slave_priv *p =netdev_priv (slave_dev); +if (!netif_running (slave_dev)) +return 0 ; +netif_device_attach (slave_dev);if (p->phy) {
Greg Kroah-Hartman
maintainerPATCH 6/23 net: stmmac: Fix WoL for PCI-based setups
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jose Abreu <[email protected]>
[ Upstream commit b7d0f08e9129c45ed41bc0cfa8e77067881e45fd ]
WoL won't work in PCI-based setups because we are not saving the PCI EP state before entering suspend state and not allowing D3 wake.
Fix this by using a wrapper around stmmac_{suspend/resume} which correctly sets the PCI EP state.
--- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 40 +++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +38 -2
@@ -257,7 +257,7 @@ static int stmmac_pci_probe(struct pci_dreturn -ENOMEM ;/* Enable pci device */ - ret =pcim_enable_device (pdev); + ret =pci_enable_device (pdev);if (ret) {dev_err (&pdev->dev,"%s: ERROR: failed to enable device\n" , __func__);
@@ -300,9 +300,45 @@ static int stmmac_pci_probe(struct pci_dstatic void stmmac_pci_remove (struct pci_dev *pdev) {stmmac_dvr_remove (&pdev->dev); +pci_disable_device (pdev); } -static SIMPLE_DEV_PM_OPS(stmmac_pm_ops, stmmac_suspend, stmmac_resume); +static int stmmac_pci_suspend (struct device *dev) +{ +struct pci_dev *pdev =to_pci_dev (dev); +int ret; + + ret =stmmac_suspend (dev); +if (ret) +return ret; + + ret =pci_save_state (pdev); +if (ret) +return ret; + +pci_disable_device (pdev); +pci_wake_from_d3 (pdev, true); +return 0 ; +} + +static int stmmac_pci_resume (struct device *dev) +{ +struct pci_dev *pdev =to_pci_dev (dev); +int ret; + +pci_restore_state (pdev); +pci_set_power_state (pdev,PCI_D0 ); + + ret =pci_enable_device (pdev); +if (ret) +return ret; + +pci_set_master (pdev); + +return stmmac_resume (dev); +} + +static SIMPLE_DEV_PM_OPS(stmmac_pm_ops, stmmac_pci_suspend, stmmac_pci_resume);/* synthetic ID, no official vendor */ #define PCI_VENDOR_ID_STMMAC 0x700
Greg Kroah-Hartman
maintainerPATCH 7/23 rxrpc: Fix user call ID check in rxrpc_service_prealloc_one
In reply to Greg Kroah-Hartman4.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: YueHaibing <[email protected]>
[ Upstream commit c01f6c9b3207e52fc9973a066a856ddf7a0538d8 ]
There just check the user call ID isn't already in use, hence should compare user_call_ID with xcall->user_call_ID, which is current node's user_call_ID.
--- net/rxrpc/call_accept.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/rxrpc/call_accept.c +2 -2
@@ -115,9 +115,9 @@ static int rxrpc_service_prealloc_one(stwhile (*pp) { parent = *pp; xcall = rb_entry(parent, struct rxrpc_call, sock_node); -if (user_call_ID < call->user_call_ID) +if (user_call_ID < xcall->user_call_ID) pp = &(*pp)->rb_left; -else if (user_call_ID > call->user_call_ID) +else if (user_call_ID > xcall->user_call_ID) pp = &(*pp)->rb_right;else goto id_in_use;
Greg Kroah-Hartman
maintainercover 4.14.61-stable review
This is the start of the stable review cycle for the 4.14.61 release. There are 23 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 Mon Aug 6 08:26:30 UTC 2018. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.61-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.14.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 4.14.61-rc1
Tony Battersby <[email protected]>
scsi: sg: fix minor memory leak in error path
Boris Brezillon <[email protected]>
drm/vc4: Reset ->{x, y}_scaling[1] when dealing with uniplanar formatsHerbert Xu <[email protected]>
crypto: padlock-aes - Fix Nano workaround data corruption
Jack Morgenstein <[email protected]>
RDMA/uverbs: Expand primary and alt AV port checks
Emmanuel Grumbach <[email protected]>
iwlwifi: add more card IDs for 9000 series
Mike Rapoport <[email protected]>
userfaultfd: remove uffd flags from vma->vm_flags if UFFD_EVENT_FORK fails
Yi Wang <[email protected]>
audit: fix potential null dereference 'context->module.name'
Roman Kagan <[email protected]>
kvm: x86: vmx: fix vpid leak
Andy Lutomirski <[email protected]>
x86/entry/64: Remove %ebx handling from error_entry/exit
Len Brown <[email protected]>
x86/apic: Future-proof the TSC_DEADLINE quirk for SKX
Jiang Biao <[email protected]>
virtio_balloon: fix another race between migration and ballooning
Jeremy Cline <[email protected]>
net: socket: fix potential spectre v1 gadget in socketcall
Anton Vasilyev <[email protected]>
can: ems_usb: Fix memory leak on ems_usb_disconnect()
Linus Torvalds <[email protected]>
squashfs: more metadata hardenings
Linus Torvalds <[email protected]>
squashfs: more metadata hardening
Eli Cohen <[email protected]>
net/mlx5e: E-Switch, Initialize eswitch only if eswitch manager
YueHaibing <[email protected]>
rxrpc: Fix user call ID check in rxrpc_service_prealloc_one
Jose Abreu <[email protected]>
net: stmmac: Fix WoL for PCI-based setups
Jeremy Cline <[email protected]>
netlink: Fix spectre v1 gadget in netlink_create()
Florian Fainelli <[email protected]>
net: dsa: Do not suspend/resume closed slave_dev
Eric Dumazet <[email protected]>
ipv4: frags: handle possible skb truesize change
Eric Dumazet <[email protected]>
inet: frag: enforce memory limits earlier
Eric Dumazet <[email protected]>
bonding: avoid lockdep confusion in bond_get_stats()
-------------
Diffstat:
Makefile | 4 +- arch/x86/entry/entry_64.S | 18 ++---- arch/x86/kernel/apic/apic.c | 3 + arch/x86/kvm/vmx.c | 7 +-- drivers/crypto/padlock-aes.c | 8 ++- drivers/gpu/drm/vc4/vc4_plane.c | 3 + drivers/infiniband/core/uverbs_cmd.c | 59 +++++++++++++++++-- drivers/net/bonding/bond_main.c | 14 ++++- drivers/net/can/usb/ems_usb.c | 1 + drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 4 +- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 40 ++++++++++++- drivers/net/wireless/intel/iwlwifi/cfg/9000.c | 69 +++++++++++++++++++++++ drivers/net/wireless/intel/iwlwifi/iwl-config.h | 5 ++ drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 22 ++++++++ drivers/scsi/sg.c | 1 + drivers/virtio/virtio_balloon.c | 2 + fs/squashfs/block.c | 2 + fs/squashfs/fragment.c | 13 +++-- fs/squashfs/squashfs_fs_sb.h | 1 + fs/squashfs/super.c | 5 +- fs/userfaultfd.c | 4 +- kernel/auditsc.c | 13 +++-- net/dsa/slave.c | 6 ++ net/ipv4/inet_fragment.c | 10 ++-- net/ipv4/ip_fragment.c | 5 ++ net/netlink/af_netlink.c | 2 + net/rxrpc/call_accept.c | 4 +- net/socket.c | 2 + 28 files changed, 276 insertions(+), 51 deletions(-)
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 4.14.61 release. There are 23 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 Mon Aug 6 08:26:30 UTC 2018. Anything received after that time might be too late.
Build results:
total: 148 pass: 148 fail: 0 Qemu test results: total: 258 pass: 258 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 4.14.61 release. There are 23 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 Mon Aug 6 08:26:30 UTC 2018. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.14.61-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-4.14.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm and x86_64.
Summary
------------------------------------------------------------------------
kernel: 4.14.61-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.14.y
git commit: f345ad471fe555c7fe8f8e75ec5fdb9a54d7ffba
git describe: v4.14.60-24-gf345ad471fe5
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.14-oe/build/v4.14.60-24-gf345ad471fe5
No regressions (compared to build v4.14.60)
Ran 16336 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- juno-r2 - arm64
- qemu_arm
- qemu_arm64
- qemu_x86_64
- x15 - arm
- x86_64
Test Suites
-----------
* boot
* kselftest
* libhugetlbfs
* ltp-cap_bounds-tests
* ltp-containers-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-timers-tests
* ltp-cve-tests
* ltp-open-posix-tests
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-none
Signature · 2 lines
Linaro LKFT https://lkft.linaro.org