From b466df0cbbf331a071630e765418be3b58137839 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Jun 2019 07:40:31 +0200 Subject: [PATCH] fix up 4.19 merge mess --- ...l6_sock_lookup-must-use-atomic_inc_n.patch | 50 ----- ...pb-fixed-leak-of-control-blocks.patch-3152 | 45 ----- ...er-free-read-in-pneigh_get_next.patch-3377 | 188 ------------------ ...a-rtl8366-fix-up-vlan-filtering.patch-7886 | 63 ------ ...loading-already-removed-devices.patch-5846 | 64 ------ ...parser-range-for-vid-filtering.patch-28142 | 80 -------- ...e-the-correct-helpers-when-removing-.patch | 43 ---- ...do-not-free-vport-if-register_netdev.patch | 112 ----------- ...the-autoneg-state-in-phylink_phy_cha.patch | 35 ---- ...nce-of-required-attributes-in-the-de.patch | 38 ---- ...okie-before-we-memdup-a-new-one.patch-9156 | 85 -------- queue-4.19/series | 14 -- ...-naming-inconsistency-between-sunhv_.patch | 65 ------ ...redq-list-for-each-grp-member-in-tip.patch | 41 ---- ...-set-sock_done-on-peer-shutdown.patch-7251 | 41 ---- 15 files changed, 964 deletions(-) delete mode 100644 queue-4.19/ipv6-flowlabel-fl6_sock_lookup-must-use-atomic_inc_n.patch delete mode 100644 queue-4.19/lapb-fixed-leak-of-control-blocks.patch-3152 delete mode 100644 queue-4.19/neigh-fix-use-after-free-read-in-pneigh_get_next.patch-3377 delete mode 100644 queue-4.19/net-dsa-rtl8366-fix-up-vlan-filtering.patch-7886 delete mode 100644 queue-4.19/net-mlx5-avoid-reloading-already-removed-devices.patch-5846 delete mode 100644 queue-4.19/net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch-28142 delete mode 100644 queue-4.19/net-mvpp2-prs-use-the-correct-helpers-when-removing-.patch delete mode 100644 queue-4.19/net-openvswitch-do-not-free-vport-if-register_netdev.patch delete mode 100644 queue-4.19/net-phylink-set-the-autoneg-state-in-phylink_phy_cha.patch delete mode 100644 queue-4.19/nfc-ensure-presence-of-required-attributes-in-the-de.patch delete mode 100644 queue-4.19/sctp-free-cookie-before-we-memdup-a-new-one.patch-9156 delete mode 100644 queue-4.19/sunhv-fix-device-naming-inconsistency-between-sunhv_.patch delete mode 100644 queue-4.19/tipc-purge-deferredq-list-for-each-grp-member-in-tip.patch delete mode 100644 queue-4.19/vsock-virtio-set-sock_done-on-peer-shutdown.patch-7251 diff --git a/queue-4.19/ipv6-flowlabel-fl6_sock_lookup-must-use-atomic_inc_n.patch b/queue-4.19/ipv6-flowlabel-fl6_sock_lookup-must-use-atomic_inc_n.patch deleted file mode 100644 index f03b0dd32b..0000000000 --- a/queue-4.19/ipv6-flowlabel-fl6_sock_lookup-must-use-atomic_inc_n.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 1355406b8d840e932fae71e38323c9a6566e67ad Mon Sep 17 00:00:00 2001 -From: Eric Dumazet -Date: Thu, 6 Jun 2019 14:32:34 -0700 -Subject: ipv6: flowlabel: fl6_sock_lookup() must use atomic_inc_not_zero - -[ Upstream commit 65a3c497c0e965a552008db8bc2653f62bc925a1 ] - -Before taking a refcount, make sure the object is not already -scheduled for deletion. - -Same fix is needed in ipv6_flowlabel_opt() - -Fixes: 18367681a10b ("ipv6 flowlabel: Convert np->ipv6_fl_list to RCU.") -Signed-off-by: Eric Dumazet -Cc: Willem de Bruijn -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/ipv6/ip6_flowlabel.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c -index be5f3d7ceb96..f994f50e1516 100644 ---- a/net/ipv6/ip6_flowlabel.c -+++ b/net/ipv6/ip6_flowlabel.c -@@ -254,9 +254,9 @@ struct ip6_flowlabel *fl6_sock_lookup(struct sock *sk, __be32 label) - rcu_read_lock_bh(); - for_each_sk_fl_rcu(np, sfl) { - struct ip6_flowlabel *fl = sfl->fl; -- if (fl->label == label) { -+ -+ if (fl->label == label && atomic_inc_not_zero(&fl->users)) { - fl->lastuse = jiffies; -- atomic_inc(&fl->users); - rcu_read_unlock_bh(); - return fl; - } -@@ -622,7 +622,8 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen) - goto done; - } - fl1 = sfl->fl; -- atomic_inc(&fl1->users); -+ if (!atomic_inc_not_zero(&fl1->users)) -+ fl1 = NULL; - break; - } - } --- -2.20.1 - diff --git a/queue-4.19/lapb-fixed-leak-of-control-blocks.patch-3152 b/queue-4.19/lapb-fixed-leak-of-control-blocks.patch-3152 deleted file mode 100644 index 39b96cb9c6..0000000000 --- a/queue-4.19/lapb-fixed-leak-of-control-blocks.patch-3152 +++ /dev/null @@ -1,45 +0,0 @@ -From 20a6bbf9cf4ba9667612f9e7408b6aa3fd9a54f1 Mon Sep 17 00:00:00 2001 -From: Jeremy Sowden -Date: Sun, 16 Jun 2019 16:54:37 +0100 -Subject: lapb: fixed leak of control-blocks. - -[ Upstream commit 6be8e297f9bcea666ea85ac7a6cd9d52d6deaf92 ] - -lapb_register calls lapb_create_cb, which initializes the control- -block's ref-count to one, and __lapb_insert_cb, which increments it when -adding the new block to the list of blocks. - -lapb_unregister calls __lapb_remove_cb, which decrements the ref-count -when removing control-block from the list of blocks, and calls lapb_put -itself to decrement the ref-count before returning. - -However, lapb_unregister also calls __lapb_devtostruct to look up the -right control-block for the given net_device, and __lapb_devtostruct -also bumps the ref-count, which means that when lapb_unregister returns -the ref-count is still 1 and the control-block is leaked. - -Call lapb_put after __lapb_devtostruct to fix leak. - -Reported-by: syzbot+afb980676c836b4a0afa@syzkaller.appspotmail.com -Signed-off-by: Jeremy Sowden -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/lapb/lapb_iface.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c -index db6e0afe3a20..1740f852002e 100644 ---- a/net/lapb/lapb_iface.c -+++ b/net/lapb/lapb_iface.c -@@ -182,6 +182,7 @@ int lapb_unregister(struct net_device *dev) - lapb = __lapb_devtostruct(dev); - if (!lapb) - goto out; -+ lapb_put(lapb); - - lapb_stop_t1timer(lapb); - lapb_stop_t2timer(lapb); --- -2.20.1 - diff --git a/queue-4.19/neigh-fix-use-after-free-read-in-pneigh_get_next.patch-3377 b/queue-4.19/neigh-fix-use-after-free-read-in-pneigh_get_next.patch-3377 deleted file mode 100644 index 2ecce3a0ac..0000000000 --- a/queue-4.19/neigh-fix-use-after-free-read-in-pneigh_get_next.patch-3377 +++ /dev/null @@ -1,188 +0,0 @@ -From c5095242d1faf966c4e2605277caf3014f66f9c1 Mon Sep 17 00:00:00 2001 -From: Eric Dumazet -Date: Sat, 15 Jun 2019 16:28:48 -0700 -Subject: neigh: fix use-after-free read in pneigh_get_next - -[ Upstream commit f3e92cb8e2eb8c27d109e6fd73d3a69a8c09e288 ] - -Nine years ago, I added RCU handling to neighbours, not pneighbours. -(pneigh are not commonly used) - -Unfortunately I missed that /proc dump operations would use a -common entry and exit point : neigh_seq_start() and neigh_seq_stop() - -We need to read_lock(tbl->lock) or risk use-after-free while -iterating the pneigh structures. - -We might later convert pneigh to RCU and revert this patch. - -sysbot reported : - -BUG: KASAN: use-after-free in pneigh_get_next.isra.0+0x24b/0x280 net/core/neighbour.c:3158 -Read of size 8 at addr ffff888097f2a700 by task syz-executor.0/9825 - -CPU: 1 PID: 9825 Comm: syz-executor.0 Not tainted 5.2.0-rc4+ #32 -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+0x172/0x1f0 lib/dump_stack.c:113 - print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188 - __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317 - kasan_report+0x12/0x20 mm/kasan/common.c:614 - __asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:132 - pneigh_get_next.isra.0+0x24b/0x280 net/core/neighbour.c:3158 - neigh_seq_next+0xdb/0x210 net/core/neighbour.c:3240 - seq_read+0x9cf/0x1110 fs/seq_file.c:258 - proc_reg_read+0x1fc/0x2c0 fs/proc/inode.c:221 - do_loop_readv_writev fs/read_write.c:714 [inline] - do_loop_readv_writev fs/read_write.c:701 [inline] - do_iter_read+0x4a4/0x660 fs/read_write.c:935 - vfs_readv+0xf0/0x160 fs/read_write.c:997 - kernel_readv fs/splice.c:359 [inline] - default_file_splice_read+0x475/0x890 fs/splice.c:414 - do_splice_to+0x127/0x180 fs/splice.c:877 - splice_direct_to_actor+0x2d2/0x970 fs/splice.c:954 - do_splice_direct+0x1da/0x2a0 fs/splice.c:1063 - do_sendfile+0x597/0xd00 fs/read_write.c:1464 - __do_sys_sendfile64 fs/read_write.c:1525 [inline] - __se_sys_sendfile64 fs/read_write.c:1511 [inline] - __x64_sys_sendfile64+0x1dd/0x220 fs/read_write.c:1511 - do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301 - entry_SYSCALL_64_after_hwframe+0x49/0xbe -RIP: 0033:0x4592c9 -Code: fd b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 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 cb b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 -RSP: 002b:00007f4aab51dc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000028 -RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00000000004592c9 -RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000005 -RBP: 000000000075bf20 R08: 0000000000000000 R09: 0000000000000000 -R10: 0000000080000000 R11: 0000000000000246 R12: 00007f4aab51e6d4 -R13: 00000000004c689d R14: 00000000004db828 R15: 00000000ffffffff - -Allocated by task 9827: - save_stack+0x23/0x90 mm/kasan/common.c:71 - set_track mm/kasan/common.c:79 [inline] - __kasan_kmalloc mm/kasan/common.c:489 [inline] - __kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:462 - kasan_kmalloc+0x9/0x10 mm/kasan/common.c:503 - __do_kmalloc mm/slab.c:3660 [inline] - __kmalloc+0x15c/0x740 mm/slab.c:3669 - kmalloc include/linux/slab.h:552 [inline] - pneigh_lookup+0x19c/0x4a0 net/core/neighbour.c:731 - arp_req_set_public net/ipv4/arp.c:1010 [inline] - arp_req_set+0x613/0x720 net/ipv4/arp.c:1026 - arp_ioctl+0x652/0x7f0 net/ipv4/arp.c:1226 - inet_ioctl+0x2a0/0x340 net/ipv4/af_inet.c:926 - sock_do_ioctl+0xd8/0x2f0 net/socket.c:1043 - sock_ioctl+0x3ed/0x780 net/socket.c:1194 - vfs_ioctl fs/ioctl.c:46 [inline] - file_ioctl fs/ioctl.c:509 [inline] - do_vfs_ioctl+0xd5f/0x1380 fs/ioctl.c:696 - ksys_ioctl+0xab/0xd0 fs/ioctl.c:713 - __do_sys_ioctl fs/ioctl.c:720 [inline] - __se_sys_ioctl fs/ioctl.c:718 [inline] - __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718 - do_syscall_64+0xfd/0x680 arch/x86/entry/common.c:301 - entry_SYSCALL_64_after_hwframe+0x49/0xbe - -Freed by task 9824: - save_stack+0x23/0x90 mm/kasan/common.c:71 - set_track mm/kasan/common.c:79 [inline] - __kasan_slab_free+0x102/0x150 mm/kasan/common.c:451 - kasan_slab_free+0xe/0x10 mm/kasan/common.c:459 - __cache_free mm/slab.c:3432 [inline] - kfree+0xcf/0x220 mm/slab.c:3755 - pneigh_ifdown_and_unlock net/core/neighbour.c:812 [inline] - __neigh_ifdown+0x236/0x2f0 net/core/neighbour.c:356 - neigh_ifdown+0x20/0x30 net/core/neighbour.c:372 - arp_ifdown+0x1d/0x21 net/ipv4/arp.c:1274 - inetdev_destroy net/ipv4/devinet.c:319 [inline] - inetdev_event+0xa14/0x11f0 net/ipv4/devinet.c:1544 - notifier_call_chain+0xc2/0x230 kernel/notifier.c:95 - __raw_notifier_call_chain kernel/notifier.c:396 [inline] - raw_notifier_call_chain+0x2e/0x40 kernel/notifier.c:403 - call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1749 - call_netdevice_notifiers_extack net/core/dev.c:1761 [inline] - call_netdevice_notifiers net/core/dev.c:1775 [inline] - rollback_registered_many+0x9b9/0xfc0 net/core/dev.c:8178 - rollback_registered+0x109/0x1d0 net/core/dev.c:8220 - unregister_netdevice_queue net/core/dev.c:9267 [inline] - unregister_netdevice_queue+0x1ee/0x2c0 net/core/dev.c:9260 - unregister_netdevice include/linux/netdevice.h:2631 [inline] - __tun_detach+0xd8a/0x1040 drivers/net/tun.c:724 - tun_detach drivers/net/tun.c:741 [inline] - tun_chr_close+0xe0/0x180 drivers/net/tun.c:3451 - __fput+0x2ff/0x890 fs/file_table.c:280 - ____fput+0x16/0x20 fs/file_table.c:313 - task_work_run+0x145/0x1c0 kernel/task_work.c:113 - tracehook_notify_resume include/linux/tracehook.h:185 [inline] - exit_to_usermode_loop+0x273/0x2c0 arch/x86/entry/common.c:168 - prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] - syscall_return_slowpath arch/x86/entry/common.c:279 [inline] - do_syscall_64+0x58e/0x680 arch/x86/entry/common.c:304 - entry_SYSCALL_64_after_hwframe+0x49/0xbe - -The buggy address belongs to the object at ffff888097f2a700 - which belongs to the cache kmalloc-64 of size 64 -The buggy address is located 0 bytes inside of - 64-byte region [ffff888097f2a700, ffff888097f2a740) -The buggy address belongs to the page: -page:ffffea00025fca80 refcount:1 mapcount:0 mapping:ffff8880aa400340 index:0x0 -flags: 0x1fffc0000000200(slab) -raw: 01fffc0000000200 ffffea000250d548 ffffea00025726c8 ffff8880aa400340 -raw: 0000000000000000 ffff888097f2a000 0000000100000020 0000000000000000 -page dumped because: kasan: bad access detected - -Memory state around the buggy address: - ffff888097f2a600: 00 00 00 00 00 00 00 00 fc fc fc fc fc fc fc fc - ffff888097f2a680: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc ->ffff888097f2a700: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc - ^ - ffff888097f2a780: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc - ffff888097f2a800: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc - -Fixes: 767e97e1e0db ("neigh: RCU conversion of struct neighbour") -Signed-off-by: Eric Dumazet -Reported-by: syzbot -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/core/neighbour.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/net/core/neighbour.c b/net/core/neighbour.c -index 4e4ac77c6816..cd9e991f21d7 100644 ---- a/net/core/neighbour.c -+++ b/net/core/neighbour.c -@@ -2751,6 +2751,7 @@ static void *neigh_get_idx_any(struct seq_file *seq, loff_t *pos) - } - - void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl, unsigned int neigh_seq_flags) -+ __acquires(tbl->lock) - __acquires(rcu_bh) - { - struct neigh_seq_state *state = seq->private; -@@ -2761,6 +2762,7 @@ void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl - - rcu_read_lock_bh(); - state->nht = rcu_dereference_bh(tbl->nht); -+ read_lock(&tbl->lock); - - return *pos ? neigh_get_idx_any(seq, pos) : SEQ_START_TOKEN; - } -@@ -2794,8 +2796,13 @@ void *neigh_seq_next(struct seq_file *seq, void *v, loff_t *pos) - EXPORT_SYMBOL(neigh_seq_next); - - void neigh_seq_stop(struct seq_file *seq, void *v) -+ __releases(tbl->lock) - __releases(rcu_bh) - { -+ struct neigh_seq_state *state = seq->private; -+ struct neigh_table *tbl = state->tbl; -+ -+ read_unlock(&tbl->lock); - rcu_read_unlock_bh(); - } - EXPORT_SYMBOL(neigh_seq_stop); --- -2.20.1 - diff --git a/queue-4.19/net-dsa-rtl8366-fix-up-vlan-filtering.patch-7886 b/queue-4.19/net-dsa-rtl8366-fix-up-vlan-filtering.patch-7886 deleted file mode 100644 index 51bf1032f7..0000000000 --- a/queue-4.19/net-dsa-rtl8366-fix-up-vlan-filtering.patch-7886 +++ /dev/null @@ -1,63 +0,0 @@ -From 435b8bc77d6adeb6e65128fbb9bb2bd41cd1de19 Mon Sep 17 00:00:00 2001 -From: Linus Walleij -Date: Fri, 14 Jun 2019 00:25:20 +0200 -Subject: net: dsa: rtl8366: Fix up VLAN filtering - -[ Upstream commit 760c80b70bed2cd01630e8595d1bbde910339f31 ] - -We get this regression when using RTL8366RB as part of a bridge -with OpenWrt: - -WARNING: CPU: 0 PID: 1347 at net/switchdev/switchdev.c:291 - switchdev_port_attr_set_now+0x80/0xa4 -lan0: Commit of attribute (id=7) failed. -(...) -realtek-smi switch lan0: failed to initialize vlan filtering on this port - -This is because it is trying to disable VLAN filtering -on VLAN0, as we have forgot to add 1 to the port number -to get the right VLAN in rtl8366_vlan_filtering(): when -we initialize the VLAN we associate VLAN1 with port 0, -VLAN2 with port 1 etc, so we need to add 1 to the port -offset. - -Fixes: d8652956cf37 ("net: dsa: realtek-smi: Add Realtek SMI driver") -Signed-off-by: Linus Walleij -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/dsa/rtl8366.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/dsa/rtl8366.c b/drivers/net/dsa/rtl8366.c -index 6dedd43442cc..35b767baf21f 100644 ---- a/drivers/net/dsa/rtl8366.c -+++ b/drivers/net/dsa/rtl8366.c -@@ -307,7 +307,8 @@ int rtl8366_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering) - struct rtl8366_vlan_4k vlan4k; - int ret; - -- if (!smi->ops->is_vlan_valid(smi, port)) -+ /* Use VLAN nr port + 1 since VLAN0 is not valid */ -+ if (!smi->ops->is_vlan_valid(smi, port + 1)) - return -EINVAL; - - dev_info(smi->dev, "%s filtering on port %d\n", -@@ -318,12 +319,12 @@ int rtl8366_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering) - * The hardware support filter ID (FID) 0..7, I have no clue how to - * support this in the driver when the callback only says on/off. - */ -- ret = smi->ops->get_vlan_4k(smi, port, &vlan4k); -+ ret = smi->ops->get_vlan_4k(smi, port + 1, &vlan4k); - if (ret) - return ret; - - /* Just set the filter to FID 1 for now then */ -- ret = rtl8366_set_vlan(smi, port, -+ ret = rtl8366_set_vlan(smi, port + 1, - vlan4k.member, - vlan4k.untag, - 1); --- -2.20.1 - diff --git a/queue-4.19/net-mlx5-avoid-reloading-already-removed-devices.patch-5846 b/queue-4.19/net-mlx5-avoid-reloading-already-removed-devices.patch-5846 deleted file mode 100644 index 02908655cd..0000000000 --- a/queue-4.19/net-mlx5-avoid-reloading-already-removed-devices.patch-5846 +++ /dev/null @@ -1,64 +0,0 @@ -From 51e480eb6aba358e6f3f5be906574e3c2b122780 Mon Sep 17 00:00:00 2001 -From: Alaa Hleihel -Date: Sun, 19 May 2019 11:11:49 +0300 -Subject: net/mlx5: Avoid reloading already removed devices - -Prior to reloading a device we must first verify that it was not already -removed. Otherwise, the attempt to remove the device will do nothing, and -in that case we will end up proceeding with adding an new device that no -one was expecting to remove, leaving behind used resources such as EQs that -causes a failure to destroy comp EQs and syndrome (0x30f433). - -Fix that by making sure that we try to remove and add a device (based on a -protocol) only if the device is already added. - -Fixes: c5447c70594b ("net/mlx5: E-Switch, Reload IB interface when switching devlink modes") -Signed-off-by: Alaa Hleihel -Signed-off-by: Saeed Mahameed -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/mellanox/mlx5/core/dev.c | 25 +++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/ethernet/mellanox/mlx5/core/dev.c b/drivers/net/ethernet/mellanox/mlx5/core/dev.c -index 37ba7c78859d..1c225be9c7db 100644 ---- a/drivers/net/ethernet/mellanox/mlx5/core/dev.c -+++ b/drivers/net/ethernet/mellanox/mlx5/core/dev.c -@@ -342,11 +342,32 @@ void mlx5_unregister_interface(struct mlx5_interface *intf) - } - EXPORT_SYMBOL(mlx5_unregister_interface); - -+/* Must be called with intf_mutex held */ -+static bool mlx5_has_added_dev_by_protocol(struct mlx5_core_dev *mdev, int protocol) -+{ -+ struct mlx5_device_context *dev_ctx; -+ struct mlx5_interface *intf; -+ bool found = false; -+ -+ list_for_each_entry(intf, &intf_list, list) { -+ if (intf->protocol == protocol) { -+ dev_ctx = mlx5_get_device(intf, &mdev->priv); -+ if (dev_ctx && test_bit(MLX5_INTERFACE_ADDED, &dev_ctx->state)) -+ found = true; -+ break; -+ } -+ } -+ -+ return found; -+} -+ - void mlx5_reload_interface(struct mlx5_core_dev *mdev, int protocol) - { - mutex_lock(&mlx5_intf_mutex); -- mlx5_remove_dev_by_protocol(mdev, protocol); -- mlx5_add_dev_by_protocol(mdev, protocol); -+ if (mlx5_has_added_dev_by_protocol(mdev, protocol)) { -+ mlx5_remove_dev_by_protocol(mdev, protocol); -+ mlx5_add_dev_by_protocol(mdev, protocol); -+ } - mutex_unlock(&mlx5_intf_mutex); - } - --- -2.20.1 - diff --git a/queue-4.19/net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch-28142 b/queue-4.19/net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch-28142 deleted file mode 100644 index ec70173f8f..0000000000 --- a/queue-4.19/net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch-28142 +++ /dev/null @@ -1,80 +0,0 @@ -From 80968ca355fa5b1cff3c15aafa82996405f36f44 Mon Sep 17 00:00:00 2001 -From: Maxime Chevallier -Date: Tue, 11 Jun 2019 11:51:42 +0200 -Subject: net: mvpp2: prs: Fix parser range for VID filtering - -[ Upstream commit 46b0090a6636cf34c0e856f15dd03e15ba4cdda6 ] - -VID filtering is implemented in the Header Parser, with one range of 11 -vids being assigned for each no-loopback port. - -Make sure we use the per-port range when looking for existing entries in -the Parser. - -Since we used a global range instead of a per-port one, this causes VIDs -to be removed from the whitelist from all ports of the same PPv2 -instance. - -Fixes: 56beda3db602 ("net: mvpp2: Add hardware offloading for VLAN filtering") -Suggested-by: Yuri Chipchev -Signed-off-by: Maxime Chevallier -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c | 17 ++++++++--------- - 1 file changed, 8 insertions(+), 9 deletions(-) - -diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -index 392fd895f278..e0da4db3bf56 100644 ---- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -@@ -1905,8 +1905,7 @@ static int mvpp2_prs_ip6_init(struct mvpp2 *priv) - } - - /* Find tcam entry with matched pair */ --static int mvpp2_prs_vid_range_find(struct mvpp2 *priv, int pmap, u16 vid, -- u16 mask) -+static int mvpp2_prs_vid_range_find(struct mvpp2_port *port, u16 vid, u16 mask) - { - unsigned char byte[2], enable[2]; - struct mvpp2_prs_entry pe; -@@ -1914,13 +1913,13 @@ static int mvpp2_prs_vid_range_find(struct mvpp2 *priv, int pmap, u16 vid, - int tid; - - /* Go through the all entries with MVPP2_PRS_LU_VID */ -- for (tid = MVPP2_PE_VID_FILT_RANGE_START; -- tid <= MVPP2_PE_VID_FILT_RANGE_END; tid++) { -- if (!priv->prs_shadow[tid].valid || -- priv->prs_shadow[tid].lu != MVPP2_PRS_LU_VID) -+ for (tid = MVPP2_PRS_VID_PORT_FIRST(port->id); -+ tid <= MVPP2_PRS_VID_PORT_LAST(port->id); tid++) { -+ if (!port->priv->prs_shadow[tid].valid || -+ port->priv->prs_shadow[tid].lu != MVPP2_PRS_LU_VID) - continue; - -- mvpp2_prs_init_from_hw(priv, &pe, tid); -+ mvpp2_prs_init_from_hw(port->priv, &pe, tid); - - mvpp2_prs_tcam_data_byte_get(&pe, 2, &byte[0], &enable[0]); - mvpp2_prs_tcam_data_byte_get(&pe, 3, &byte[1], &enable[1]); -@@ -1950,7 +1949,7 @@ int mvpp2_prs_vid_entry_add(struct mvpp2_port *port, u16 vid) - memset(&pe, 0, sizeof(pe)); - - /* Scan TCAM and see if entry with this already exist */ -- tid = mvpp2_prs_vid_range_find(priv, (1 << port->id), vid, mask); -+ tid = mvpp2_prs_vid_range_find(port, vid, mask); - - reg_val = mvpp2_read(priv, MVPP2_MH_REG(port->id)); - if (reg_val & MVPP2_DSA_EXTENDED) -@@ -2008,7 +2007,7 @@ void mvpp2_prs_vid_entry_remove(struct mvpp2_port *port, u16 vid) - int tid; - - /* Scan TCAM and see if entry with this already exist */ -- tid = mvpp2_prs_vid_range_find(priv, (1 << port->id), vid, 0xfff); -+ tid = mvpp2_prs_vid_range_find(port, vid, 0xfff); - - /* No such entry */ - if (tid < 0) --- -2.20.1 - diff --git a/queue-4.19/net-mvpp2-prs-use-the-correct-helpers-when-removing-.patch b/queue-4.19/net-mvpp2-prs-use-the-correct-helpers-when-removing-.patch deleted file mode 100644 index 1cc2b20c09..0000000000 --- a/queue-4.19/net-mvpp2-prs-use-the-correct-helpers-when-removing-.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 8f1114692bcc6038f9179a8376ae873f1fbac8bc Mon Sep 17 00:00:00 2001 -From: Maxime Chevallier -Date: Tue, 11 Jun 2019 11:51:43 +0200 -Subject: net: mvpp2: prs: Use the correct helpers when removing all VID - filters - -[ Upstream commit 6b7a3430c163455cf8a514d636bda52b04654972 ] - -When removing all VID filters, the mvpp2_prs_vid_entry_remove would be -called with the TCAM id incorrectly used as a VID, causing the wrong -TCAM entries to be invalidated. - -Fix this by directly invalidating entries in the VID range. - -Fixes: 56beda3db602 ("net: mvpp2: Add hardware offloading for VLAN filtering") -Suggested-by: Yuri Chipchev -Signed-off-by: Maxime Chevallier -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -index e0da4db3bf56..ae2240074d8e 100644 ---- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_prs.c -@@ -2025,8 +2025,10 @@ void mvpp2_prs_vid_remove_all(struct mvpp2_port *port) - - for (tid = MVPP2_PRS_VID_PORT_FIRST(port->id); - tid <= MVPP2_PRS_VID_PORT_LAST(port->id); tid++) { -- if (priv->prs_shadow[tid].valid) -- mvpp2_prs_vid_entry_remove(port, tid); -+ if (priv->prs_shadow[tid].valid) { -+ mvpp2_prs_hw_inv(priv, tid); -+ priv->prs_shadow[tid].valid = false; -+ } - } - } - --- -2.20.1 - diff --git a/queue-4.19/net-openvswitch-do-not-free-vport-if-register_netdev.patch b/queue-4.19/net-openvswitch-do-not-free-vport-if-register_netdev.patch deleted file mode 100644 index b3871707ab..0000000000 --- a/queue-4.19/net-openvswitch-do-not-free-vport-if-register_netdev.patch +++ /dev/null @@ -1,112 +0,0 @@ -From b7acd5b9344e6997587f2853406d9ff96716758f Mon Sep 17 00:00:00 2001 -From: Taehee Yoo -Date: Sun, 9 Jun 2019 23:26:21 +0900 -Subject: net: openvswitch: do not free vport if register_netdevice() is - failed. - -[ Upstream commit 309b66970ee2abf721ecd0876a48940fa0b99a35 ] - -In order to create an internal vport, internal_dev_create() is used and -that calls register_netdevice() internally. -If register_netdevice() fails, it calls dev->priv_destructor() to free -private data of netdev. actually, a private data of this is a vport. - -Hence internal_dev_create() should not free and use a vport after failure -of register_netdevice(). - -Test command - ovs-dpctl add-dp bonding_masters - -Splat looks like: -[ 1035.667767] kasan: GPF could be caused by NULL-ptr deref or user memory access -[ 1035.675958] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI -[ 1035.676916] CPU: 1 PID: 1028 Comm: ovs-vswitchd Tainted: G B 5.2.0-rc3+ #240 -[ 1035.676916] RIP: 0010:internal_dev_create+0x2e5/0x4e0 [openvswitch] -[ 1035.676916] Code: 48 c1 ea 03 80 3c 02 00 0f 85 9f 01 00 00 4c 8b 23 48 b8 00 00 00 00 00 fc ff df 49 8d bc 24 60 05 00 00 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 86 01 00 00 49 8b bc 24 60 05 00 00 e8 e4 68 f4 -[ 1035.713720] RSP: 0018:ffff88810dcb7578 EFLAGS: 00010206 -[ 1035.713720] RAX: dffffc0000000000 RBX: ffff88810d13fe08 RCX: ffffffff84297704 -[ 1035.713720] RDX: 00000000000000ac RSI: 0000000000000000 RDI: 0000000000000560 -[ 1035.713720] RBP: 00000000ffffffef R08: fffffbfff0d3b881 R09: fffffbfff0d3b881 -[ 1035.713720] R10: 0000000000000001 R11: fffffbfff0d3b880 R12: 0000000000000000 -[ 1035.768776] R13: 0000607ee460b900 R14: ffff88810dcb7690 R15: ffff88810dcb7698 -[ 1035.777709] FS: 00007f02095fc980(0000) GS:ffff88811b400000(0000) knlGS:0000000000000000 -[ 1035.777709] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 -[ 1035.777709] CR2: 00007ffdf01d2f28 CR3: 0000000108258000 CR4: 00000000001006e0 -[ 1035.777709] Call Trace: -[ 1035.777709] ovs_vport_add+0x267/0x4f0 [openvswitch] -[ 1035.777709] new_vport+0x15/0x1e0 [openvswitch] -[ 1035.777709] ovs_vport_cmd_new+0x567/0xd10 [openvswitch] -[ 1035.777709] ? ovs_dp_cmd_dump+0x490/0x490 [openvswitch] -[ 1035.777709] ? __kmalloc+0x131/0x2e0 -[ 1035.777709] ? genl_family_rcv_msg+0xa54/0x1030 -[ 1035.777709] genl_family_rcv_msg+0x63a/0x1030 -[ 1035.777709] ? genl_unregister_family+0x630/0x630 -[ 1035.841681] ? debug_show_all_locks+0x2d0/0x2d0 -[ ... ] - -Fixes: cf124db566e6 ("net: Fix inconsistent teardown and release of private netdev state.") -Signed-off-by: Taehee Yoo -Reviewed-by: Greg Rose -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/openvswitch/vport-internal_dev.c | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c -index bb95c43aae76..5a304cfc8423 100644 ---- a/net/openvswitch/vport-internal_dev.c -+++ b/net/openvswitch/vport-internal_dev.c -@@ -169,7 +169,9 @@ static struct vport *internal_dev_create(const struct vport_parms *parms) - { - struct vport *vport; - struct internal_dev *internal_dev; -+ struct net_device *dev; - int err; -+ bool free_vport = true; - - vport = ovs_vport_alloc(0, &ovs_internal_vport_ops, parms); - if (IS_ERR(vport)) { -@@ -177,8 +179,9 @@ static struct vport *internal_dev_create(const struct vport_parms *parms) - goto error; - } - -- vport->dev = alloc_netdev(sizeof(struct internal_dev), -- parms->name, NET_NAME_USER, do_setup); -+ dev = alloc_netdev(sizeof(struct internal_dev), -+ parms->name, NET_NAME_USER, do_setup); -+ vport->dev = dev; - if (!vport->dev) { - err = -ENOMEM; - goto error_free_vport; -@@ -199,8 +202,10 @@ static struct vport *internal_dev_create(const struct vport_parms *parms) - - rtnl_lock(); - err = register_netdevice(vport->dev); -- if (err) -+ if (err) { -+ free_vport = false; - goto error_unlock; -+ } - - dev_set_promiscuity(vport->dev, 1); - rtnl_unlock(); -@@ -210,11 +215,12 @@ static struct vport *internal_dev_create(const struct vport_parms *parms) - - error_unlock: - rtnl_unlock(); -- free_percpu(vport->dev->tstats); -+ free_percpu(dev->tstats); - error_free_netdev: -- free_netdev(vport->dev); -+ free_netdev(dev); - error_free_vport: -- ovs_vport_free(vport); -+ if (free_vport) -+ ovs_vport_free(vport); - error: - return ERR_PTR(err); - } --- -2.20.1 - diff --git a/queue-4.19/net-phylink-set-the-autoneg-state-in-phylink_phy_cha.patch b/queue-4.19/net-phylink-set-the-autoneg-state-in-phylink_phy_cha.patch deleted file mode 100644 index 19a5335794..0000000000 --- a/queue-4.19/net-phylink-set-the-autoneg-state-in-phylink_phy_cha.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 85735f3acb2fd44e0b490996bbf26c6a23474a73 Mon Sep 17 00:00:00 2001 -From: Ioana Ciornei -Date: Thu, 13 Jun 2019 09:37:51 +0300 -Subject: net: phylink: set the autoneg state in phylink_phy_change - -[ Upstream commit ef7bfa84725d891bbdb88707ed55b2cbf94942bb ] - -The phy_state field of phylink should carry only valid information -especially when this can be passed to the .mac_config callback. -Update the an_enabled field with the autoneg state in the -phylink_phy_change function. - -Fixes: 9525ae83959b ("phylink: add phylink infrastructure") -Signed-off-by: Ioana Ciornei -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/phy/phylink.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c -index f6e70f2dfd12..c5a509129ae6 100644 ---- a/drivers/net/phy/phylink.c -+++ b/drivers/net/phy/phylink.c -@@ -662,6 +662,7 @@ static void phylink_phy_change(struct phy_device *phydev, bool up, - pl->phy_state.pause |= MLO_PAUSE_ASYM; - pl->phy_state.interface = phydev->interface; - pl->phy_state.link = up; -+ pl->phy_state.an_enabled = phydev->autoneg; - mutex_unlock(&pl->state_mutex); - - phylink_run_resolve(pl); --- -2.20.1 - diff --git a/queue-4.19/nfc-ensure-presence-of-required-attributes-in-the-de.patch b/queue-4.19/nfc-ensure-presence-of-required-attributes-in-the-de.patch deleted file mode 100644 index 75606848be..0000000000 --- a/queue-4.19/nfc-ensure-presence-of-required-attributes-in-the-de.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 80ced5ac18af3ef4dc9300fd6b152a732891cdb1 Mon Sep 17 00:00:00 2001 -From: Young Xiao <92siuyang@gmail.com> -Date: Fri, 14 Jun 2019 15:13:02 +0800 -Subject: nfc: Ensure presence of required attributes in the deactivate_target - handler - -[ Upstream commit 385097a3675749cbc9e97c085c0e5dfe4269ca51 ] - -Check that the NFC_ATTR_TARGET_INDEX attributes (in addition to -NFC_ATTR_DEVICE_INDEX) are provided by the netlink client prior to -accessing them. This prevents potential unhandled NULL pointer dereference -exceptions which can be triggered by malicious user-mode programs, -if they omit one or both of these attributes. - -Signed-off-by: Young Xiao <92siuyang@gmail.com> -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/nfc/netlink.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c -index 376181cc1def..9f2875efb4ac 100644 ---- a/net/nfc/netlink.c -+++ b/net/nfc/netlink.c -@@ -922,7 +922,8 @@ static int nfc_genl_deactivate_target(struct sk_buff *skb, - u32 device_idx, target_idx; - int rc; - -- if (!info->attrs[NFC_ATTR_DEVICE_INDEX]) -+ if (!info->attrs[NFC_ATTR_DEVICE_INDEX] || -+ !info->attrs[NFC_ATTR_TARGET_INDEX]) - return -EINVAL; - - device_idx = nla_get_u32(info->attrs[NFC_ATTR_DEVICE_INDEX]); --- -2.20.1 - diff --git a/queue-4.19/sctp-free-cookie-before-we-memdup-a-new-one.patch-9156 b/queue-4.19/sctp-free-cookie-before-we-memdup-a-new-one.patch-9156 deleted file mode 100644 index d8ac5cf99b..0000000000 --- a/queue-4.19/sctp-free-cookie-before-we-memdup-a-new-one.patch-9156 +++ /dev/null @@ -1,85 +0,0 @@ -From 94952b029ca67d652a477f4d01300a91fdf05f26 Mon Sep 17 00:00:00 2001 -From: Neil Horman -Date: Thu, 13 Jun 2019 06:35:59 -0400 -Subject: sctp: Free cookie before we memdup a new one - -[ Upstream commit ce950f1050cece5e406a5cde723c69bba60e1b26 ] - -Based on comments from Xin, even after fixes for our recent syzbot -report of cookie memory leaks, its possible to get a resend of an INIT -chunk which would lead to us leaking cookie memory. - -To ensure that we don't leak cookie memory, free any previously -allocated cookie first. - -Change notes -v1->v2 -update subsystem tag in subject (davem) -repeat kfree check for peer_random and peer_hmacs (xin) - -v2->v3 -net->sctp -also free peer_chunks - -v3->v4 -fix subject tags - -v4->v5 -remove cut line - -Signed-off-by: Neil Horman -Reported-by: syzbot+f7e9153b037eac9b1df8@syzkaller.appspotmail.com -CC: Marcelo Ricardo Leitner -CC: Xin Long -CC: "David S. Miller" -CC: netdev@vger.kernel.org -Acked-by: Marcelo Ricardo Leitner -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/sctp/sm_make_chunk.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c -index ae65a1cfa596..fb546b2d67ca 100644 ---- a/net/sctp/sm_make_chunk.c -+++ b/net/sctp/sm_make_chunk.c -@@ -2600,6 +2600,8 @@ static int sctp_process_param(struct sctp_association *asoc, - case SCTP_PARAM_STATE_COOKIE: - asoc->peer.cookie_len = - ntohs(param.p->length) - sizeof(struct sctp_paramhdr); -+ if (asoc->peer.cookie) -+ kfree(asoc->peer.cookie); - asoc->peer.cookie = kmemdup(param.cookie->body, asoc->peer.cookie_len, gfp); - if (!asoc->peer.cookie) - retval = 0; -@@ -2664,6 +2666,8 @@ static int sctp_process_param(struct sctp_association *asoc, - goto fall_through; - - /* Save peer's random parameter */ -+ if (asoc->peer.peer_random) -+ kfree(asoc->peer.peer_random); - asoc->peer.peer_random = kmemdup(param.p, - ntohs(param.p->length), gfp); - if (!asoc->peer.peer_random) { -@@ -2677,6 +2681,8 @@ static int sctp_process_param(struct sctp_association *asoc, - goto fall_through; - - /* Save peer's HMAC list */ -+ if (asoc->peer.peer_hmacs) -+ kfree(asoc->peer.peer_hmacs); - asoc->peer.peer_hmacs = kmemdup(param.p, - ntohs(param.p->length), gfp); - if (!asoc->peer.peer_hmacs) { -@@ -2692,6 +2698,8 @@ static int sctp_process_param(struct sctp_association *asoc, - if (!ep->auth_enable) - goto fall_through; - -+ if (asoc->peer.peer_chunks) -+ kfree(asoc->peer.peer_chunks); - asoc->peer.peer_chunks = kmemdup(param.p, - ntohs(param.p->length), gfp); - if (!asoc->peer.peer_chunks) --- -2.20.1 - diff --git a/queue-4.19/series b/queue-4.19/series index 3bab3dd3c4..1af947816e 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -15,20 +15,6 @@ vsock-virtio-set-sock_done-on-peer-shutdown.patch net-mlx5-avoid-reloading-already-removed-devices.patch net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch net-mvpp2-prs-use-the-correct-helpers-when-removing-all-vid-filters.patch -ipv6-flowlabel-fl6_sock_lookup-must-use-atomic_inc_n.patch -lapb-fixed-leak-of-control-blocks.patch-3152 -neigh-fix-use-after-free-read-in-pneigh_get_next.patch-3377 -net-dsa-rtl8366-fix-up-vlan-filtering.patch-7886 -net-openvswitch-do-not-free-vport-if-register_netdev.patch -net-phylink-set-the-autoneg-state-in-phylink_phy_cha.patch -nfc-ensure-presence-of-required-attributes-in-the-de.patch -sctp-free-cookie-before-we-memdup-a-new-one.patch-9156 -sunhv-fix-device-naming-inconsistency-between-sunhv_.patch -tipc-purge-deferredq-list-for-each-grp-member-in-tip.patch -vsock-virtio-set-sock_done-on-peer-shutdown.patch-7251 -net-mlx5-avoid-reloading-already-removed-devices.patch-5846 -net-mvpp2-prs-fix-parser-range-for-vid-filtering.patch-28142 -net-mvpp2-prs-use-the-correct-helpers-when-removing-.patch staging-vc04_services-fix-a-couple-error-codes.patch perf-x86-intel-ds-fix-event-vs.-uevent-pebs-constrai.patch netfilter-nf_queue-fix-reinject-verdict-handling.patch diff --git a/queue-4.19/sunhv-fix-device-naming-inconsistency-between-sunhv_.patch b/queue-4.19/sunhv-fix-device-naming-inconsistency-between-sunhv_.patch deleted file mode 100644 index 8844e67903..0000000000 --- a/queue-4.19/sunhv-fix-device-naming-inconsistency-between-sunhv_.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 837cc34fcc298696326f1bd3d4e919d65f81e0b5 Mon Sep 17 00:00:00 2001 -From: John Paul Adrian Glaubitz -Date: Tue, 11 Jun 2019 17:38:37 +0200 -Subject: sunhv: Fix device naming inconsistency between sunhv_console and - sunhv_reg - -[ Upstream commit 07a6d63eb1b54b5fb38092780fe618dfe1d96e23 ] - -In d5a2aa24, the name in struct console sunhv_console was changed from "ttyS" -to "ttyHV" while the name in struct uart_ops sunhv_pops remained unchanged. - -This results in the hypervisor console device to be listed as "ttyHV0" under -/proc/consoles while the device node is still named "ttyS0": - -root@osaka:~# cat /proc/consoles -ttyHV0 -W- (EC p ) 4:64 -tty0 -WU (E ) 4:1 -root@osaka:~# readlink /sys/dev/char/4:64 -../../devices/root/f02836f0/f0285690/tty/ttyS0 -root@osaka:~# - -This means that any userland code which tries to determine the name of the -device file of the hypervisor console device can not rely on the information -provided by /proc/consoles. In particular, booting current versions of debian- -installer inside a SPARC LDOM will fail with the installer unable to determine -the console device. - -After renaming the device in struct uart_ops sunhv_pops to "ttyHV" as well, -the inconsistency is fixed and it is possible again to determine the name -of the device file of the hypervisor console device by reading the contents -of /proc/console: - -root@osaka:~# cat /proc/consoles -ttyHV0 -W- (EC p ) 4:64 -tty0 -WU (E ) 4:1 -root@osaka:~# readlink /sys/dev/char/4:64 -../../devices/root/f02836f0/f0285690/tty/ttyHV0 -root@osaka:~# - -With this change, debian-installer works correctly when installing inside -a SPARC LDOM. - -Signed-off-by: John Paul Adrian Glaubitz -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - drivers/tty/serial/sunhv.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c -index 63e34d868de8..f8503f8fc44e 100644 ---- a/drivers/tty/serial/sunhv.c -+++ b/drivers/tty/serial/sunhv.c -@@ -397,7 +397,7 @@ static const struct uart_ops sunhv_pops = { - static struct uart_driver sunhv_reg = { - .owner = THIS_MODULE, - .driver_name = "sunhv", -- .dev_name = "ttyS", -+ .dev_name = "ttyHV", - .major = TTY_MAJOR, - }; - --- -2.20.1 - diff --git a/queue-4.19/tipc-purge-deferredq-list-for-each-grp-member-in-tip.patch b/queue-4.19/tipc-purge-deferredq-list-for-each-grp-member-in-tip.patch deleted file mode 100644 index 84c7538c3f..0000000000 --- a/queue-4.19/tipc-purge-deferredq-list-for-each-grp-member-in-tip.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b539b3ac7f8ef183a88e29e9e196832f88dbd43e Mon Sep 17 00:00:00 2001 -From: Xin Long -Date: Sun, 16 Jun 2019 17:24:07 +0800 -Subject: tipc: purge deferredq list for each grp member in tipc_group_delete - -[ Upstream commit 5cf02612b33f104fe1015b2dfaf1758ad3675588 ] - -Syzbot reported a memleak caused by grp members' deferredq list not -purged when the grp is be deleted. - -The issue occurs when more(msg_grp_bc_seqno(hdr), m->bc_rcv_nxt) in -tipc_group_filter_msg() and the skb will stay in deferredq. - -So fix it by calling __skb_queue_purge for each member's deferredq -in tipc_group_delete() when a tipc sk leaves the grp. - -Fixes: b87a5ea31c93 ("tipc: guarantee group unicast doesn't bypass group broadcast") -Reported-by: syzbot+78fbe679c8ca8d264a8d@syzkaller.appspotmail.com -Signed-off-by: Xin Long -Acked-by: Ying Xue -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/tipc/group.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/net/tipc/group.c b/net/tipc/group.c -index 06fee142f09f..3ee93b5c19b6 100644 ---- a/net/tipc/group.c -+++ b/net/tipc/group.c -@@ -218,6 +218,7 @@ void tipc_group_delete(struct net *net, struct tipc_group *grp) - - rbtree_postorder_for_each_entry_safe(m, tmp, tree, tree_node) { - tipc_group_proto_xmit(grp, m, GRP_LEAVE_MSG, &xmitq); -+ __skb_queue_purge(&m->deferredq); - list_del(&m->list); - kfree(m); - } --- -2.20.1 - diff --git a/queue-4.19/vsock-virtio-set-sock_done-on-peer-shutdown.patch-7251 b/queue-4.19/vsock-virtio-set-sock_done-on-peer-shutdown.patch-7251 deleted file mode 100644 index 0787e4f7c8..0000000000 --- a/queue-4.19/vsock-virtio-set-sock_done-on-peer-shutdown.patch-7251 +++ /dev/null @@ -1,41 +0,0 @@ -From 42a9ce27172ea5f3858bf742a60d3c0e352c0018 Mon Sep 17 00:00:00 2001 -From: Stephen Barber -Date: Fri, 14 Jun 2019 23:42:37 -0700 -Subject: vsock/virtio: set SOCK_DONE on peer shutdown - -[ Upstream commit 42f5cda5eaf4396a939ae9bb43bb8d1d09c1b15c ] - -Set the SOCK_DONE flag to match the TCP_CLOSING state when a peer has -shut down and there is nothing left to read. - -This fixes the following bug: -1) Peer sends SHUTDOWN(RDWR). -2) Socket enters TCP_CLOSING but SOCK_DONE is not set. -3) read() returns -ENOTCONN until close() is called, then returns 0. - -Signed-off-by: Stephen Barber -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/vmw_vsock/virtio_transport_common.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c -index f3f3d06cb6d8..e30f53728725 100644 ---- a/net/vmw_vsock/virtio_transport_common.c -+++ b/net/vmw_vsock/virtio_transport_common.c -@@ -871,8 +871,10 @@ virtio_transport_recv_connected(struct sock *sk, - if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SHUTDOWN_SEND) - vsk->peer_shutdown |= SEND_SHUTDOWN; - if (vsk->peer_shutdown == SHUTDOWN_MASK && -- vsock_stream_has_data(vsk) <= 0) -+ vsock_stream_has_data(vsk) <= 0) { -+ sock_set_flag(sk, SOCK_DONE); - sk->sk_state = TCP_CLOSING; -+ } - if (le32_to_cpu(pkt->hdr.flags)) - sk->sk_state_change(sk); - break; --- -2.20.1 - -- 2.39.2