2020-03-17 11:23:08

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 00/89] 4.19.111-rc1 review

This is the start of the stable review cycle for the 4.19.111 release.
There are 89 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 Thu, 19 Mar 2020 10:31:16 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.111-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.19.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <[email protected]>
Linux 4.19.111-rc1

Sven Eckelmann <[email protected]>
batman-adv: Avoid free/alloc race when handling OGM2 buffer

Vladis Dronov <[email protected]>
efi: Add a sanity check to efivar_store_raw()

Karsten Graul <[email protected]>
net/smc: cancel event worker during device removal

Karsten Graul <[email protected]>
net/smc: check for valid ib_client_data

Eric Dumazet <[email protected]>
ipv6: restrict IPV6_ADDRFORM operation

Wolfram Sang <[email protected]>
i2c: acpi: put device when verifying client fails

Daniel Drake <[email protected]>
iommu/vt-d: Ignore devices with out-of-spec domain number

Zhenzhong Duan <[email protected]>
iommu/vt-d: Fix the wrong printing in RHSA parsing

Jakub Kicinski <[email protected]>
netfilter: nft_tunnel: add missing attribute validation for tunnels

Jakub Kicinski <[email protected]>
netfilter: nft_payload: add missing attribute validation for payload csum flags

Jakub Kicinski <[email protected]>
netfilter: cthelper: add missing attribute validation for cthelper

Tommi Rantala <[email protected]>
perf bench futex-wake: Restore thread count default to online CPU count

Jakub Kicinski <[email protected]>
nl80211: add missing attribute validation for channel switch

Jakub Kicinski <[email protected]>
nl80211: add missing attribute validation for beacon report scanning

Jakub Kicinski <[email protected]>
nl80211: add missing attribute validation for critical protocol indication

Hamish Martin <[email protected]>
i2c: gpio: suppress error on probe defer

Zhenyu Wang <[email protected]>
drm/i915/gvt: Fix unnecessary schedule timer when no vGPU exits

Charles Keepax <[email protected]>
pinctrl: core: Remove extra kref_get which blocks hogs being freed

Nicolas Belin <[email protected]>
pinctrl: meson-gxl: fix GPIOX sdio pins

Sven Eckelmann <[email protected]>
batman-adv: Don't schedule OGM for disabled interface

Yonghyun Hwang <[email protected]>
iommu/vt-d: Fix a bug in intel_iommu_iova_to_phys() for huge page

Hans de Goede <[email protected]>
iommu/vt-d: dmar: replace WARN_TAINT with pr_warn + add_taint

Marc Zyngier <[email protected]>
iommu/dma: Fix MSI reservation allocation

Tony Luck <[email protected]>
x86/mce: Fix logic and comments around MSR_PPIN_CTL

Felix Fietkau <[email protected]>
mt76: fix array overflow on receiving too many fragments for a packet

Sai Praneeth <[email protected]>
efi: Make efi_rts_work accessible to efi page fault handler

Vladis Dronov <[email protected]>
efi: Fix a race and a buffer overflow while reading efivars via sysfs

Wolfram Sang <[email protected]>
macintosh: windfarm: fix MODINFO regression

Eugeniy Paltsev <[email protected]>
ARC: define __ALIGN_STR and __ALIGN symbols for ARC

Vitaly Kuznetsov <[email protected]>
KVM: x86: clear stale x86_emulate_ctxt->intercept value

Al Viro <[email protected]>
gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache

Al Viro <[email protected]>
cifs_atomic_open(): fix double-put on late allocation failure

Steven Rostedt (VMware) <[email protected]>
ktest: Add timeout for ssh sync testing

Colin Ian King <[email protected]>
drm/amd/display: remove duplicated assignment to grph_obj_type

Hillf Danton <[email protected]>
workqueue: don't use wq_select_unbound_cpu() for bound works

Vasily Averin <[email protected]>
netfilter: x_tables: xt_mttg_seq_next should increase position index

Vasily Averin <[email protected]>
netfilter: xt_recent: recent_seq_next should increase position index

Vasily Averin <[email protected]>
netfilter: synproxy: synproxy_cpu_seq_next should increase position index

Vasily Averin <[email protected]>
netfilter: nf_conntrack: ct_cpu_seq_next should increase position index

Hans de Goede <[email protected]>
iommu/vt-d: quirk_ioat_snb_local_iommu: replace WARN_TAINT with pr_warn + add_taint

Halil Pasic <[email protected]>
virtio-blk: fix hw_queue stopped on arbitrary error

Dan Moulding <[email protected]>
iwlwifi: mvm: Do not require PHY_SKU NVM section for 3168 devices

Michal Koutný <[email protected]>
cgroup: Iterate tasks that did not finish do_exit()

Vasily Averin <[email protected]>
cgroup: cgroup_procs_next should increase position index

Mahesh Bandewar <[email protected]>
macvlan: add cond_resched() during multicast processing

Jakub Kicinski <[email protected]>
net: fec: validate the new settings in fec_enet_set_coalesce()

Eric Dumazet <[email protected]>
slip: make slhc_compress() more robust against malicious packets

Eric Dumazet <[email protected]>
bonding/alb: make sure arp header is pulled before accessing it

Jakub Kicinski <[email protected]>
devlink: validate length of region addr/len

Jakub Kicinski <[email protected]>
tipc: add missing attribute validation for MTU property

Hangbin Liu <[email protected]>
net/ipv6: remove the old peer route if change it to a new one

Hangbin Liu <[email protected]>
net/ipv6: need update peer route when modify metric

Hangbin Liu <[email protected]>
selftests/net/fib_tests: update addr_metric_test for peer route testing

Heiner Kallweit <[email protected]>
net: phy: fix MDIO bus PM PHY resuming

Jakub Kicinski <[email protected]>
nfc: add missing attribute validation for vendor subcommand

Jakub Kicinski <[email protected]>
nfc: add missing attribute validation for deactivate target

Jakub Kicinski <[email protected]>
nfc: add missing attribute validation for SE API

Jakub Kicinski <[email protected]>
team: add missing attribute validation for array index

Jakub Kicinski <[email protected]>
team: add missing attribute validation for port ifindex

Jakub Kicinski <[email protected]>
net: fq: add missing attribute validation for orphan mask

Jakub Kicinski <[email protected]>
macsec: add missing attribute validation for port

Jakub Kicinski <[email protected]>
can: add missing attribute validation for termination

Jakub Kicinski <[email protected]>
nl802154: add missing attribute validation for dev_type

Jakub Kicinski <[email protected]>
nl802154: add missing attribute validation

Jakub Kicinski <[email protected]>
fib: add missing attribute validation for tun_id

Jakub Kicinski <[email protected]>
devlink: validate length of param values

Eric Dumazet <[email protected]>
net: memcg: fix lockdep splat in inet_csk_accept()

Shakeel Butt <[email protected]>
net: memcg: late association of sock to memcg

Shakeel Butt <[email protected]>
cgroup: memcg: net: do not associate sock with unrelated cgroup

Vasundhara Volam <[email protected]>
bnxt_en: reinitialize IRQs when MTU is modified

Edward Cree <[email protected]>
sfc: detach from cb_page in efx_copy_channel()

You-Sheng Yang <[email protected]>
r8152: check disconnect status after long sleep

Colin Ian King <[email protected]>
net: systemport: fix index check to avoid an array out of bounds access

Remi Pommarel <[email protected]>
net: stmmac: dwmac1000: Disable ACS if enhanced descs are not used

Willem de Bruijn <[email protected]>
net/packet: tpacket_rcv: do not increment ring index on drop

Dan Carpenter <[email protected]>
net: nfc: fix bounds checking bugs on "pipe"

Dmitry Bogdanov <[email protected]>
net: macsec: update SCI upon MAC address change.

Pablo Neira Ayuso <[email protected]>
netlink: Use netlink header as base to calculate bad attribute offset

Hangbin Liu <[email protected]>
net/ipv6: use configured metric when add peer route

Mahesh Bandewar <[email protected]>
ipvlan: don't deref eth hdr before checking it's set

Eric Dumazet <[email protected]>
ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()

Jiri Wiesner <[email protected]>
ipvlan: do not add hardware address of master to its unicast filter list

Mahesh Bandewar <[email protected]>
ipvlan: add cond_resched_rcu() while processing muticast backlog

Hangbin Liu <[email protected]>
ipv6/addrconf: call ipv6_mc_up() for non-Ethernet interface

Dmitry Yakunin <[email protected]>
inet_diag: return classid for all socket types

Eric Dumazet <[email protected]>
gre: fix uninit-value in __iptunnel_pull_header

Dmitry Yakunin <[email protected]>
cgroup, netclassid: periodically release file_lock on classid updating

Florian Fainelli <[email protected]>
net: phy: Avoid multiple suspends

David S. Miller <[email protected]>
phy: Revert toggling reset changes.


-------------

Diffstat:

Documentation/filesystems/porting | 7 +++
Makefile | 4 +-
arch/arc/include/asm/linkage.h | 2 +
arch/x86/kernel/cpu/mcheck/mce_intel.c | 9 ++--
arch/x86/kvm/emulate.c | 1 +
drivers/block/virtio_blk.c | 8 ++--
drivers/firmware/efi/efivars.c | 32 +++++++++----
drivers/firmware/efi/runtime-wrappers.c | 53 ++++------------------
drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 3 +-
drivers/gpu/drm/i915/gvt/vgpu.c | 12 +++--
drivers/i2c/busses/i2c-gpio.c | 2 +-
drivers/i2c/i2c-core-acpi.c | 10 +++-
drivers/iommu/dma-iommu.c | 16 +++----
drivers/iommu/dmar.c | 21 ++++++---
drivers/iommu/intel-iommu.c | 13 ++++--
drivers/macintosh/windfarm_ad7417_sensor.c | 7 +++
drivers/macintosh/windfarm_fcu_controls.c | 7 +++
drivers/macintosh/windfarm_lm75_sensor.c | 16 ++++++-
drivers/macintosh/windfarm_lm87_sensor.c | 7 +++
drivers/macintosh/windfarm_max6690_sensor.c | 7 +++
drivers/macintosh/windfarm_smu_sat.c | 7 +++
drivers/net/bonding/bond_alb.c | 20 ++++----
drivers/net/can/dev.c | 1 +
drivers/net/ethernet/broadcom/bcmsysport.c | 2 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 +-
drivers/net/ethernet/freescale/fec_main.c | 6 +--
drivers/net/ethernet/sfc/efx.c | 1 +
.../net/ethernet/stmicro/stmmac/dwmac1000_core.c | 3 +-
drivers/net/ipvlan/ipvlan_core.c | 19 ++++----
drivers/net/ipvlan/ipvlan_main.c | 5 +-
drivers/net/macsec.c | 12 +++--
drivers/net/macvlan.c | 2 +
drivers/net/phy/phy_device.c | 18 +++++---
drivers/net/slip/slhc.c | 14 ++++--
drivers/net/team/team.c | 2 +
drivers/net/usb/r8152.c | 8 ++++
drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 3 +-
drivers/net/wireless/mediatek/mt76/dma.c | 9 ++--
drivers/pinctrl/core.c | 1 -
drivers/pinctrl/meson/pinctrl-meson-gxl.c | 4 +-
fs/cifs/dir.c | 1 -
fs/gfs2/inode.c | 2 +-
fs/open.c | 3 --
include/linux/cgroup.h | 1 +
include/linux/efi.h | 36 +++++++++++++++
include/linux/inet_diag.h | 18 +++++---
include/linux/phy.h | 2 +
include/net/fib_rules.h | 1 +
kernel/cgroup/cgroup.c | 37 +++++++++++----
kernel/workqueue.c | 14 +++---
mm/memcontrol.c | 14 +-----
net/batman-adv/bat_iv_ogm.c | 4 ++
net/batman-adv/bat_v_ogm.c | 42 +++++++++++++----
net/batman-adv/types.h | 4 ++
net/core/devlink.c | 33 +++++++++-----
net/core/netclassid_cgroup.c | 47 +++++++++++++++----
net/core/sock.c | 5 +-
net/ieee802154/nl_policy.c | 6 +++
net/ipv4/gre_demux.c | 12 ++++-
net/ipv4/inet_connection_sock.c | 20 ++++++++
net/ipv4/inet_diag.c | 44 ++++++++----------
net/ipv4/raw_diag.c | 5 +-
net/ipv4/udp_diag.c | 5 +-
net/ipv6/addrconf.c | 49 +++++++++++++++-----
net/ipv6/ipv6_sockglue.c | 10 +++-
net/netfilter/nf_conntrack_standalone.c | 2 +-
net/netfilter/nf_synproxy_core.c | 2 +-
net/netfilter/nfnetlink_cthelper.c | 2 +
net/netfilter/nft_payload.c | 1 +
net/netfilter/nft_tunnel.c | 2 +
net/netfilter/x_tables.c | 6 +--
net/netfilter/xt_recent.c | 2 +-
net/netlink/af_netlink.c | 2 +-
net/nfc/hci/core.c | 19 ++++++--
net/nfc/netlink.c | 4 ++
net/packet/af_packet.c | 13 +++---
net/sched/sch_fq.c | 1 +
net/sctp/diag.c | 8 +---
net/smc/smc_ib.c | 3 ++
net/tipc/netlink.c | 3 +-
net/wireless/nl80211.c | 5 ++
tools/perf/bench/futex-wake.c | 4 +-
tools/testing/ktest/ktest.pl | 2 +-
tools/testing/selftests/net/fib_tests.sh | 34 ++++++++++++--
84 files changed, 625 insertions(+), 283 deletions(-)



2020-03-17 11:23:09

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 09/89] ipvlan: do not use cond_resched_rcu() in ipvlan_process_multicast()

From: Eric Dumazet <[email protected]>

[ Upstream commit afe207d80a61e4d6e7cfa0611a4af46d0ba95628 ]

Commit e18b353f102e ("ipvlan: add cond_resched_rcu() while
processing muticast backlog") added a cond_resched_rcu() in a loop
using rcu protection to iterate over slaves.

This is breaking rcu rules, so lets instead use cond_resched()
at a point we can reschedule

Fixes: e18b353f102e ("ipvlan: add cond_resched_rcu() while processing muticast backlog")
Signed-off-by: Eric Dumazet <[email protected]>
Cc: Mahesh Bandewar <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ipvlan/ipvlan_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/ipvlan/ipvlan_core.c
+++ b/drivers/net/ipvlan/ipvlan_core.c
@@ -282,7 +282,6 @@ void ipvlan_process_multicast(struct wor
}
ipvlan_count_rx(ipvlan, len, ret == NET_RX_SUCCESS, true);
local_bh_enable();
- cond_resched_rcu();
}
rcu_read_unlock();

@@ -299,6 +298,7 @@ void ipvlan_process_multicast(struct wor
}
if (dev)
dev_put(dev);
+ cond_resched();
}
}



2020-03-17 11:23:09

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 32/89] team: add missing attribute validation for array index

From: Jakub Kicinski <[email protected]>

[ Upstream commit 669fcd7795900cd1880237cbbb57a7db66cb9ac8 ]

Add missing attribute validation for TEAM_ATTR_OPTION_ARRAY_INDEX
to the netlink policy.

Fixes: b13033262d24 ("team: introduce array options")
Signed-off-by: Jakub Kicinski <[email protected]>
Reviewed-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/team/team.c | 1 +
1 file changed, 1 insertion(+)

--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -2216,6 +2216,7 @@ team_nl_option_policy[TEAM_ATTR_OPTION_M
[TEAM_ATTR_OPTION_TYPE] = { .type = NLA_U8 },
[TEAM_ATTR_OPTION_DATA] = { .type = NLA_BINARY },
[TEAM_ATTR_OPTION_PORT_IFINDEX] = { .type = NLA_U32 },
+ [TEAM_ATTR_OPTION_ARRAY_INDEX] = { .type = NLA_U32 },
};

static int team_nl_cmd_noop(struct sk_buff *skb, struct genl_info *info)


2020-03-17 11:23:12

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 03/89] cgroup, netclassid: periodically release file_lock on classid updating

From: Dmitry Yakunin <[email protected]>

[ Upstream commit 018d26fcd12a75fb9b5fe233762aa3f2f0854b88 ]

In our production environment we have faced with problem that updating
classid in cgroup with heavy tasks cause long freeze of the file tables
in this tasks. By heavy tasks we understand tasks with many threads and
opened sockets (e.g. balancers). This freeze leads to an increase number
of client timeouts.

This patch implements following logic to fix this issue:
аfter iterating 1000 file descriptors file table lock will be released
thus providing a time gap for socket creation/deletion.

Now update is non atomic and socket may be skipped using calls:

dup2(oldfd, newfd);
close(oldfd);

But this case is not typical. Moreover before this patch skip is possible
too by hiding socket fd in unix socket buffer.

New sockets will be allocated with updated classid because cgroup state
is updated before start of the file descriptors iteration.

So in common cases this patch has no side effects.

Signed-off-by: Dmitry Yakunin <[email protected]>
Reviewed-by: Konstantin Khlebnikov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/core/netclassid_cgroup.c | 47 +++++++++++++++++++++++++++++++++----------
1 file changed, 37 insertions(+), 10 deletions(-)

--- a/net/core/netclassid_cgroup.c
+++ b/net/core/netclassid_cgroup.c
@@ -57,30 +57,60 @@ static void cgrp_css_free(struct cgroup_
kfree(css_cls_state(css));
}

+/*
+ * To avoid freezing of sockets creation for tasks with big number of threads
+ * and opened sockets lets release file_lock every 1000 iterated descriptors.
+ * New sockets will already have been created with new classid.
+ */
+
+struct update_classid_context {
+ u32 classid;
+ unsigned int batch;
+};
+
+#define UPDATE_CLASSID_BATCH 1000
+
static int update_classid_sock(const void *v, struct file *file, unsigned n)
{
int err;
+ struct update_classid_context *ctx = (void *)v;
struct socket *sock = sock_from_file(file, &err);

if (sock) {
spin_lock(&cgroup_sk_update_lock);
- sock_cgroup_set_classid(&sock->sk->sk_cgrp_data,
- (unsigned long)v);
+ sock_cgroup_set_classid(&sock->sk->sk_cgrp_data, ctx->classid);
spin_unlock(&cgroup_sk_update_lock);
}
+ if (--ctx->batch == 0) {
+ ctx->batch = UPDATE_CLASSID_BATCH;
+ return n + 1;
+ }
return 0;
}

+static void update_classid_task(struct task_struct *p, u32 classid)
+{
+ struct update_classid_context ctx = {
+ .classid = classid,
+ .batch = UPDATE_CLASSID_BATCH
+ };
+ unsigned int fd = 0;
+
+ do {
+ task_lock(p);
+ fd = iterate_fd(p->files, fd, update_classid_sock, &ctx);
+ task_unlock(p);
+ cond_resched();
+ } while (fd);
+}
+
static void cgrp_attach(struct cgroup_taskset *tset)
{
struct cgroup_subsys_state *css;
struct task_struct *p;

cgroup_taskset_for_each(p, css, tset) {
- task_lock(p);
- iterate_fd(p->files, 0, update_classid_sock,
- (void *)(unsigned long)css_cls_state(css)->classid);
- task_unlock(p);
+ update_classid_task(p, css_cls_state(css)->classid);
}
}

@@ -102,10 +132,7 @@ static int write_classid(struct cgroup_s

css_task_iter_start(css, 0, &it);
while ((p = css_task_iter_next(&it))) {
- task_lock(p);
- iterate_fd(p->files, 0, update_classid_sock,
- (void *)(unsigned long)cs->classid);
- task_unlock(p);
+ update_classid_task(p, cs->classid);
cond_resched();
}
css_task_iter_end(&it);


2020-03-17 11:23:14

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 07/89] ipvlan: add cond_resched_rcu() while processing muticast backlog

From: Mahesh Bandewar <[email protected]>

[ Upstream commit e18b353f102e371580f3f01dd47567a25acc3c1d ]

If there are substantial number of slaves created as simulated by
Syzbot, the backlog processing could take much longer and result
into the issue found in the Syzbot report.

INFO: rcu_sched detected stalls on CPUs/tasks:
(detected by 1, t=10502 jiffies, g=5049, c=5048, q=752)
All QSes seen, last rcu_sched kthread activity 10502 (4294965563-4294955061), jiffies_till_next_fqs=1, root ->qsmask 0x0
syz-executor.1 R running task on cpu 1 10984 11210 3866 0x30020008 179034491270
Call Trace:
<IRQ>
[<ffffffff81497163>] _sched_show_task kernel/sched/core.c:8063 [inline]
[<ffffffff81497163>] _sched_show_task.cold+0x2fd/0x392 kernel/sched/core.c:8030
[<ffffffff8146a91b>] sched_show_task+0xb/0x10 kernel/sched/core.c:8073
[<ffffffff815c931b>] print_other_cpu_stall kernel/rcu/tree.c:1577 [inline]
[<ffffffff815c931b>] check_cpu_stall kernel/rcu/tree.c:1695 [inline]
[<ffffffff815c931b>] __rcu_pending kernel/rcu/tree.c:3478 [inline]
[<ffffffff815c931b>] rcu_pending kernel/rcu/tree.c:3540 [inline]
[<ffffffff815c931b>] rcu_check_callbacks.cold+0xbb4/0xc29 kernel/rcu/tree.c:2876
[<ffffffff815e3962>] update_process_times+0x32/0x80 kernel/time/timer.c:1635
[<ffffffff816164f0>] tick_sched_handle+0xa0/0x180 kernel/time/tick-sched.c:161
[<ffffffff81616ae4>] tick_sched_timer+0x44/0x130 kernel/time/tick-sched.c:1193
[<ffffffff815e75f7>] __run_hrtimer kernel/time/hrtimer.c:1393 [inline]
[<ffffffff815e75f7>] __hrtimer_run_queues+0x307/0xd90 kernel/time/hrtimer.c:1455
[<ffffffff815e90ea>] hrtimer_interrupt+0x2ea/0x730 kernel/time/hrtimer.c:1513
[<ffffffff844050f4>] local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1031 [inline]
[<ffffffff844050f4>] smp_apic_timer_interrupt+0x144/0x5e0 arch/x86/kernel/apic/apic.c:1056
[<ffffffff84401cbe>] apic_timer_interrupt+0x8e/0xa0 arch/x86/entry/entry_64.S:778
RIP: 0010:do_raw_read_lock+0x22/0x80 kernel/locking/spinlock_debug.c:153
RSP: 0018:ffff8801dad07ab8 EFLAGS: 00000a02 ORIG_RAX: ffffffffffffff12
RAX: 0000000000000000 RBX: ffff8801c4135680 RCX: 0000000000000000
RDX: 1ffff10038826afe RSI: ffff88019d816bb8 RDI: ffff8801c41357f0
RBP: ffff8801dad07ac0 R08: 0000000000004b15 R09: 0000000000310273
R10: ffff88019d816bb8 R11: 0000000000000001 R12: ffff8801c41357e8
R13: 0000000000000000 R14: ffff8801cfb19850 R15: ffff8801cfb198b0
[<ffffffff8101460e>] __raw_read_lock_bh include/linux/rwlock_api_smp.h:177 [inline]
[<ffffffff8101460e>] _raw_read_lock_bh+0x3e/0x50 kernel/locking/spinlock.c:240
[<ffffffff840d78ca>] ipv6_chk_mcast_addr+0x11a/0x6f0 net/ipv6/mcast.c:1006
[<ffffffff84023439>] ip6_mc_input+0x319/0x8e0 net/ipv6/ip6_input.c:482
[<ffffffff840211c8>] dst_input include/net/dst.h:449 [inline]
[<ffffffff840211c8>] ip6_rcv_finish+0x408/0x610 net/ipv6/ip6_input.c:78
[<ffffffff840214de>] NF_HOOK include/linux/netfilter.h:292 [inline]
[<ffffffff840214de>] NF_HOOK include/linux/netfilter.h:286 [inline]
[<ffffffff840214de>] ipv6_rcv+0x10e/0x420 net/ipv6/ip6_input.c:278
[<ffffffff83a29efa>] __netif_receive_skb_one_core+0x12a/0x1f0 net/core/dev.c:5303
[<ffffffff83a2a15c>] __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:5417
[<ffffffff83a2f536>] process_backlog+0x216/0x6c0 net/core/dev.c:6243
[<ffffffff83a30d1b>] napi_poll net/core/dev.c:6680 [inline]
[<ffffffff83a30d1b>] net_rx_action+0x47b/0xfb0 net/core/dev.c:6748
[<ffffffff846002c8>] __do_softirq+0x2c8/0x99a kernel/softirq.c:317
[<ffffffff813e656a>] invoke_softirq kernel/softirq.c:399 [inline]
[<ffffffff813e656a>] irq_exit+0x16a/0x1a0 kernel/softirq.c:439
[<ffffffff84405115>] exiting_irq arch/x86/include/asm/apic.h:561 [inline]
[<ffffffff84405115>] smp_apic_timer_interrupt+0x165/0x5e0 arch/x86/kernel/apic/apic.c:1058
[<ffffffff84401cbe>] apic_timer_interrupt+0x8e/0xa0 arch/x86/entry/entry_64.S:778
</IRQ>
RIP: 0010:__sanitizer_cov_trace_pc+0x26/0x50 kernel/kcov.c:102
RSP: 0018:ffff880196033bd8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff12
RAX: ffff88019d8161c0 RBX: 00000000ffffffff RCX: ffffc90003501000
RDX: 0000000000000002 RSI: ffffffff816236d1 RDI: 0000000000000005
RBP: ffff880196033bd8 R08: ffff88019d8161c0 R09: 0000000000000000
R10: 1ffff10032c067f0 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000080 R14: 0000000000000000 R15: 0000000000000000
[<ffffffff816236d1>] do_futex+0x151/0x1d50 kernel/futex.c:3548
[<ffffffff816260f0>] C_SYSC_futex kernel/futex_compat.c:201 [inline]
[<ffffffff816260f0>] compat_SyS_futex+0x270/0x3b0 kernel/futex_compat.c:175
[<ffffffff8101da17>] do_syscall_32_irqs_on arch/x86/entry/common.c:353 [inline]
[<ffffffff8101da17>] do_fast_syscall_32+0x357/0xe1c arch/x86/entry/common.c:415
[<ffffffff84401a9b>] entry_SYSENTER_compat+0x8b/0x9d arch/x86/entry/entry_64_compat.S:139
RIP: 0023:0xf7f23c69
RSP: 002b:00000000f5d1f12c EFLAGS: 00000282 ORIG_RAX: 00000000000000f0
RAX: ffffffffffffffda RBX: 000000000816af88 RCX: 0000000000000080
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000816af8c
RBP: 00000000f5d1f228 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
rcu_sched kthread starved for 10502 jiffies! g5049 c5048 f0x2 RCU_GP_WAIT_FQS(3) ->state=0x0 ->cpu=1
rcu_sched R running task on cpu 1 13048 8 2 0x90000000 179099587640
Call Trace:
[<ffffffff8147321f>] context_switch+0x60f/0xa60 kernel/sched/core.c:3209
[<ffffffff8100095a>] __schedule+0x5aa/0x1da0 kernel/sched/core.c:3934
[<ffffffff810021df>] schedule+0x8f/0x1b0 kernel/sched/core.c:4011
[<ffffffff8101116d>] schedule_timeout+0x50d/0xee0 kernel/time/timer.c:1803
[<ffffffff815c13f1>] rcu_gp_kthread+0xda1/0x3b50 kernel/rcu/tree.c:2327
[<ffffffff8144b318>] kthread+0x348/0x420 kernel/kthread.c:246
[<ffffffff84400266>] ret_from_fork+0x56/0x70 arch/x86/entry/entry_64.S:393

Fixes: ba35f8588f47 (“ipvlan: Defer multicast / broadcast processing to a work-queue”)
Signed-off-by: Mahesh Bandewar <[email protected]>
Reported-by: syzbot <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ipvlan/ipvlan_core.c | 1 +
1 file changed, 1 insertion(+)

--- a/drivers/net/ipvlan/ipvlan_core.c
+++ b/drivers/net/ipvlan/ipvlan_core.c
@@ -282,6 +282,7 @@ void ipvlan_process_multicast(struct wor
}
ipvlan_count_rx(ipvlan, len, ret == NET_RX_SUCCESS, true);
local_bh_enable();
+ cond_resched_rcu();
}
rcu_read_unlock();



2020-03-17 11:23:19

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 52/89] netfilter: synproxy: synproxy_cpu_seq_next should increase position index

From: Vasily Averin <[email protected]>

commit bb71f846a0002239f7058c84f1496648ff4a5c20 upstream.

If .next function does not change position index,
following .show function will repeat output related
to current position index.

Cc: [email protected]
Fixes: 1f4aace60b0e ("fs/seq_file.c: simplify seq_file iteration code ...")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=206283
Signed-off-by: Vasily Averin <[email protected]>
Signed-off-by: Pablo Neira Ayuso <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
net/netfilter/nf_synproxy_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/net/netfilter/nf_synproxy_core.c
+++ b/net/netfilter/nf_synproxy_core.c
@@ -273,7 +273,7 @@ static void *synproxy_cpu_seq_next(struc
*pos = cpu + 1;
return per_cpu_ptr(snet->stats, cpu);
}
-
+ (*pos)++;
return NULL;
}



2020-03-17 11:23:22

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 62/89] macintosh: windfarm: fix MODINFO regression

From: Wolfram Sang <[email protected]>

commit bcf3588d8ed3517e6ffaf083f034812aee9dc8e2 upstream.

Commit af503716ac14 made sure OF devices get an OF style modalias with
I2C events. It assumed all in-tree users were converted, yet it missed
some Macintosh drivers.

Add an OF module device table for all windfarm drivers to make them
automatically load again.

Fixes: af503716ac14 ("i2c: core: report OF style module alias for devices registered via OF")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=199471
Reported-by: Erhard Furtner <[email protected]>
Tested-by: Erhard Furtner <[email protected]>
Acked-by: Michael Ellerman <[email protected]> (powerpc)
Signed-off-by: Wolfram Sang <[email protected]>
Cc: [email protected] # v4.17+
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
drivers/macintosh/windfarm_ad7417_sensor.c | 7 +++++++
drivers/macintosh/windfarm_fcu_controls.c | 7 +++++++
drivers/macintosh/windfarm_lm75_sensor.c | 16 +++++++++++++++-
drivers/macintosh/windfarm_lm87_sensor.c | 7 +++++++
drivers/macintosh/windfarm_max6690_sensor.c | 7 +++++++
drivers/macintosh/windfarm_smu_sat.c | 7 +++++++
6 files changed, 50 insertions(+), 1 deletion(-)

--- a/drivers/macintosh/windfarm_ad7417_sensor.c
+++ b/drivers/macintosh/windfarm_ad7417_sensor.c
@@ -313,9 +313,16 @@ static const struct i2c_device_id wf_ad7
};
MODULE_DEVICE_TABLE(i2c, wf_ad7417_id);

+static const struct of_device_id wf_ad7417_of_id[] = {
+ { .compatible = "ad7417", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_ad7417_of_id);
+
static struct i2c_driver wf_ad7417_driver = {
.driver = {
.name = "wf_ad7417",
+ .of_match_table = wf_ad7417_of_id,
},
.probe = wf_ad7417_probe,
.remove = wf_ad7417_remove,
--- a/drivers/macintosh/windfarm_fcu_controls.c
+++ b/drivers/macintosh/windfarm_fcu_controls.c
@@ -583,9 +583,16 @@ static const struct i2c_device_id wf_fcu
};
MODULE_DEVICE_TABLE(i2c, wf_fcu_id);

+static const struct of_device_id wf_fcu_of_id[] = {
+ { .compatible = "fcu", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_fcu_of_id);
+
static struct i2c_driver wf_fcu_driver = {
.driver = {
.name = "wf_fcu",
+ .of_match_table = wf_fcu_of_id,
},
.probe = wf_fcu_probe,
.remove = wf_fcu_remove,
--- a/drivers/macintosh/windfarm_lm75_sensor.c
+++ b/drivers/macintosh/windfarm_lm75_sensor.c
@@ -15,6 +15,7 @@
#include <linux/init.h>
#include <linux/wait.h>
#include <linux/i2c.h>
+#include <linux/of_device.h>
#include <asm/prom.h>
#include <asm/machdep.h>
#include <asm/io.h>
@@ -92,9 +93,14 @@ static int wf_lm75_probe(struct i2c_clie
const struct i2c_device_id *id)
{
struct wf_lm75_sensor *lm;
- int rc, ds1775 = id->driver_data;
+ int rc, ds1775;
const char *name, *loc;

+ if (id)
+ ds1775 = id->driver_data;
+ else
+ ds1775 = !!of_device_get_match_data(&client->dev);
+
DBG("wf_lm75: creating %s device at address 0x%02x\n",
ds1775 ? "ds1775" : "lm75", client->addr);

@@ -165,9 +171,17 @@ static const struct i2c_device_id wf_lm7
};
MODULE_DEVICE_TABLE(i2c, wf_lm75_id);

+static const struct of_device_id wf_lm75_of_id[] = {
+ { .compatible = "lm75", .data = (void *)0},
+ { .compatible = "ds1775", .data = (void *)1 },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_lm75_of_id);
+
static struct i2c_driver wf_lm75_driver = {
.driver = {
.name = "wf_lm75",
+ .of_match_table = wf_lm75_of_id,
},
.probe = wf_lm75_probe,
.remove = wf_lm75_remove,
--- a/drivers/macintosh/windfarm_lm87_sensor.c
+++ b/drivers/macintosh/windfarm_lm87_sensor.c
@@ -168,9 +168,16 @@ static const struct i2c_device_id wf_lm8
};
MODULE_DEVICE_TABLE(i2c, wf_lm87_id);

+static const struct of_device_id wf_lm87_of_id[] = {
+ { .compatible = "lm87cimt", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_lm87_of_id);
+
static struct i2c_driver wf_lm87_driver = {
.driver = {
.name = "wf_lm87",
+ .of_match_table = wf_lm87_of_id,
},
.probe = wf_lm87_probe,
.remove = wf_lm87_remove,
--- a/drivers/macintosh/windfarm_max6690_sensor.c
+++ b/drivers/macintosh/windfarm_max6690_sensor.c
@@ -121,9 +121,16 @@ static const struct i2c_device_id wf_max
};
MODULE_DEVICE_TABLE(i2c, wf_max6690_id);

+static const struct of_device_id wf_max6690_of_id[] = {
+ { .compatible = "max6690", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_max6690_of_id);
+
static struct i2c_driver wf_max6690_driver = {
.driver = {
.name = "wf_max6690",
+ .of_match_table = wf_max6690_of_id,
},
.probe = wf_max6690_probe,
.remove = wf_max6690_remove,
--- a/drivers/macintosh/windfarm_smu_sat.c
+++ b/drivers/macintosh/windfarm_smu_sat.c
@@ -343,9 +343,16 @@ static const struct i2c_device_id wf_sat
};
MODULE_DEVICE_TABLE(i2c, wf_sat_id);

+static const struct of_device_id wf_sat_of_id[] = {
+ { .compatible = "smu-sat", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, wf_sat_of_id);
+
static struct i2c_driver wf_sat_driver = {
.driver = {
.name = "wf_smu_sat",
+ .of_match_table = wf_sat_of_id,
},
.probe = wf_sat_probe,
.remove = wf_sat_remove,


2020-03-17 11:23:31

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 19/89] sfc: detach from cb_page in efx_copy_channel()

From: Edward Cree <[email protected]>

[ Upstream commit 4b1bd9db078f7d5332c8601a2f5bd43cf0458fd4 ]

It's a resource, not a parameter, so we can't copy it into the new
channel's TX queues, otherwise aliasing will lead to resource-
management bugs if the channel is subsequently torn down without
being initialised.

Before the Fixes:-tagged commit there was a similar bug with
tsoh_page, but I'm not sure it's worth doing another fix for such
old kernels.

Fixes: e9117e5099ea ("sfc: Firmware-Assisted TSO version 2")
Suggested-by: Derek Shute <[email protected]>
Signed-off-by: Edward Cree <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/sfc/efx.c | 1 +
1 file changed, 1 insertion(+)

--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -522,6 +522,7 @@ efx_copy_channel(const struct efx_channe
if (tx_queue->channel)
tx_queue->channel = channel;
tx_queue->buffer = NULL;
+ tx_queue->cb_page = NULL;
memset(&tx_queue->txd, 0, sizeof(tx_queue->txd));
}



2020-03-17 11:23:33

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 55/89] workqueue: dont use wq_select_unbound_cpu() for bound works

From: Hillf Danton <[email protected]>

commit aa202f1f56960c60e7befaa0f49c72b8fa11b0a8 upstream.

wq_select_unbound_cpu() is designed for unbound workqueues only, but
it's wrongly called when using a bound workqueue too.

Fixing this ensures work queued to a bound workqueue with
cpu=WORK_CPU_UNBOUND always runs on the local CPU.

Before, that would happen only if wq_unbound_cpumask happened to include
it (likely almost always the case), or was empty, or we got lucky with
forced round-robin placement. So restricting
/sys/devices/virtual/workqueue/cpumask to a small subset of a machine's
CPUs would cause some bound work items to run unexpectedly there.

Fixes: ef557180447f ("workqueue: schedule WORK_CPU_UNBOUND work on wq_unbound_cpumask CPUs")
Cc: [email protected] # v4.5+
Signed-off-by: Hillf Danton <[email protected]>
[dj: massage changelog]
Signed-off-by: Daniel Jordan <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Lai Jiangshan <[email protected]>
Cc: [email protected]
Signed-off-by: Tejun Heo <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
kernel/workqueue.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -1384,14 +1384,16 @@ static void __queue_work(int cpu, struct
WARN_ON_ONCE(!is_chained_work(wq)))
return;
retry:
- if (req_cpu == WORK_CPU_UNBOUND)
- cpu = wq_select_unbound_cpu(raw_smp_processor_id());
-
/* pwq which will be used unless @work is executing elsewhere */
- if (!(wq->flags & WQ_UNBOUND))
- pwq = per_cpu_ptr(wq->cpu_pwqs, cpu);
- else
+ if (wq->flags & WQ_UNBOUND) {
+ if (req_cpu == WORK_CPU_UNBOUND)
+ cpu = wq_select_unbound_cpu(raw_smp_processor_id());
pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu));
+ } else {
+ if (req_cpu == WORK_CPU_UNBOUND)
+ cpu = raw_smp_processor_id();
+ pwq = per_cpu_ptr(wq->cpu_pwqs, cpu);
+ }

/*
* If @work was previously on a different pool, it might still be


2020-03-17 11:23:40

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 41/89] devlink: validate length of region addr/len

From: Jakub Kicinski <[email protected]>

[ Upstream commit ff3b63b8c299b73ac599b120653b47e275407656 ]

DEVLINK_ATTR_REGION_CHUNK_ADDR and DEVLINK_ATTR_REGION_CHUNK_LEN
lack entries in the netlink policy. Corresponding nla_get_u64()s
may read beyond the end of the message.

Fixes: 4e54795a27f5 ("devlink: Add support for region snapshot read command")
Signed-off-by: Jakub Kicinski <[email protected]>
Reviewed-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
net/core/devlink.c | 2 ++
1 file changed, 2 insertions(+)

--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -3607,6 +3607,8 @@ static const struct nla_policy devlink_n
[DEVLINK_ATTR_PARAM_VALUE_CMODE] = { .type = NLA_U8 },
[DEVLINK_ATTR_REGION_NAME] = { .type = NLA_NUL_STRING },
[DEVLINK_ATTR_REGION_SNAPSHOT_ID] = { .type = NLA_U32 },
+ [DEVLINK_ATTR_REGION_CHUNK_ADDR] = { .type = NLA_U64 },
+ [DEVLINK_ATTR_REGION_CHUNK_LEN] = { .type = NLA_U64 },
};

static const struct genl_ops devlink_nl_ops[] = {


2020-03-17 11:24:07

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 17/89] net: systemport: fix index check to avoid an array out of bounds access

From: Colin Ian King <[email protected]>

[ Upstream commit c0368595c1639947839c0db8294ee96aca0b3b86 ]

Currently the bounds check on index is off by one and can lead to
an out of bounds access on array priv->filters_loc when index is
RXCHK_BRCM_TAG_MAX.

Fixes: bb9051a2b230 ("net: systemport: Add support for WAKE_FILTER")
Signed-off-by: Colin Ian King <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ethernet/broadcom/bcmsysport.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -2168,7 +2168,7 @@ static int bcm_sysport_rule_set(struct b
return -ENOSPC;

index = find_first_zero_bit(priv->filters, RXCHK_BRCM_TAG_MAX);
- if (index > RXCHK_BRCM_TAG_MAX)
+ if (index >= RXCHK_BRCM_TAG_MAX)
return -ENOSPC;

/* Location is the classification ID, and index is the position


2020-03-17 11:24:14

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 4.19 08/89] ipvlan: do not add hardware address of master to its unicast filter list

From: Jiri Wiesner <[email protected]>

[ Upstream commit 63aae7b17344d4b08a7d05cb07044de4c0f9dcc6 ]

There is a problem when ipvlan slaves are created on a master device that
is a vmxnet3 device (ipvlan in VMware guests). The vmxnet3 driver does not
support unicast address filtering. When an ipvlan device is brought up in
ipvlan_open(), the ipvlan driver calls dev_uc_add() to add the hardware
address of the vmxnet3 master device to the unicast address list of the
master device, phy_dev->uc. This inevitably leads to the vmxnet3 master
device being forced into promiscuous mode by __dev_set_rx_mode().

Promiscuous mode is switched on the master despite the fact that there is
still only one hardware address that the master device should use for
filtering in order for the ipvlan device to be able to receive packets.
The comment above struct net_device describes the uc_promisc member as a
"counter, that indicates, that promiscuous mode has been enabled due to
the need to listen to additional unicast addresses in a device that does
not implement ndo_set_rx_mode()". Moreover, the design of ipvlan
guarantees that only the hardware address of a master device,
phy_dev->dev_addr, will be used to transmit and receive all packets from
its ipvlan slaves. Thus, the unicast address list of the master device
should not be modified by ipvlan_open() and ipvlan_stop() in order to make
ipvlan a workable option on masters that do not support unicast address
filtering.

Fixes: 2ad7bf3638411 ("ipvlan: Initial check-in of the IPVLAN driver")
Reported-by: Per Sundstrom <[email protected]>
Signed-off-by: Jiri Wiesner <[email protected]>
Reviewed-by: Eric Dumazet <[email protected]>
Acked-by: Mahesh Bandewar <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ipvlan/ipvlan_main.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -236,7 +236,6 @@ static void ipvlan_uninit(struct net_dev
static int ipvlan_open(struct net_device *dev)
{
struct ipvl_dev *ipvlan = netdev_priv(dev);
- struct net_device *phy_dev = ipvlan->phy_dev;
struct ipvl_addr *addr;

if (ipvlan->port->mode == IPVLAN_MODE_L3 ||
@@ -250,7 +249,7 @@ static int ipvlan_open(struct net_device
ipvlan_ht_addr_add(ipvlan, addr);
rcu_read_unlock();

- return dev_uc_add(phy_dev, phy_dev->dev_addr);
+ return 0;
}

static int ipvlan_stop(struct net_device *dev)
@@ -262,8 +261,6 @@ static int ipvlan_stop(struct net_device
dev_uc_unsync(phy_dev, dev);
dev_mc_unsync(phy_dev, dev);

- dev_uc_del(phy_dev, phy_dev->dev_addr);
-
rcu_read_lock();
list_for_each_entry_rcu(addr, &ipvlan->addrs, anode)
ipvlan_ht_addr_del(addr);


2020-03-17 20:17:58

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 4.19 00/89] 4.19.111-rc1 review

On 3/17/20 3:54 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.111 release.
> There are 89 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 Thu, 19 Mar 2020 10:31:16 +0000.
> Anything received after that time might be too late.
>

Build results:
total: 156 pass: 156 fail: 0
Qemu test results:
total: 418 pass: 418 fail: 0

Guenter

2020-03-17 20:28:08

by Naresh Kamboju

[permalink] [raw]
Subject: Re: [PATCH 4.19 00/89] 4.19.111-rc1 review

On Tue, 17 Mar 2020 at 16:27, Greg Kroah-Hartman
<[email protected]> wrote:
>
> This is the start of the stable review cycle for the 4.19.111 release.
> There are 89 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 Thu, 19 Mar 2020 10:31:16 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.111-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.19.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h

Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.

Summary
------------------------------------------------------------------------

kernel: 4.19.111-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-4.19.y
git commit: ad35ac79caefa8ec9fbaaf4737d87fd7bc0329cd
git describe: v4.19.110-90-gad35ac79caef
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-4.19-oe/build/v4.19.110-90-gad35ac79caef

No regressions (compared to build v4.19.109-92-gad35ac79caef)

No fixes (compared to build v4.19.109-92-gad35ac79caef)

Ran 17272 total tests in the following environments and test suites.

Environments
--------------
- dragonboard-410c - arm64
- hi6220-hikey - arm64
- i386
- juno-r2 - arm64
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15 - arm
- x86_64

Test Suites
-----------
* build
* install-android-platform-tools-r2600
* linux-log-parser
* perf
* kselftest
* libhugetlbfs
* ltp-commands-tests
* ltp-containers-tests
* ltp-dio-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* network-basic-tests
* v4l2-compliance
* ltp-cap_bounds-tests
* ltp-cpuhotplug-tests
* ltp-cve-tests
* ltp-fcntl-locktests-tests
* spectre-meltdown-checker-test
* ltp-open-posix-tests

--
Linaro LKFT
https://lkft.linaro.org

2020-03-18 00:10:23

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH 4.19 00/89] 4.19.111-rc1 review

On 3/17/20 4:54 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.111 release.
> There are 89 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 Thu, 19 Mar 2020 10:31:16 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.111-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.19.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>

Compiled and booted on my test system. No dmesg regressions.

thanks,
-- Shuah

2020-03-18 09:03:58

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH 4.19 03/89] cgroup, netclassid: periodically release file_lock on classid updating

Hi!

> From: Dmitry Yakunin <[email protected]>
>
> [ Upstream commit 018d26fcd12a75fb9b5fe233762aa3f2f0854b88 ]
...
> Now update is non atomic and socket may be skipped using calls:
>
> dup2(oldfd, newfd);
> close(oldfd);
>
> But this case is not typical. Moreover before this patch skip is possible
> too by hiding socket fd in unix socket buffer.

Dunno. This makes interface even more interesting.

> +
> static int update_classid_sock(const void *v, struct file *file, unsigned n)
> {
> int err;
> + struct update_classid_context *ctx = (void *)v;
> struct socket *sock = sock_from_file(file, &err);
>
...
> + if (--ctx->batch == 0) {
> + ctx->batch = UPDATE_CLASSID_BATCH;
> + return n + 1;
> + }
> return 0;
> }

We take "const void *" and then write to it. That's asking for
trouble... right? Should the const annotation be removed, at least for
sake of humans trying to understand the code?

Best regards,
Pavel

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


Attachments:
(No filename) (1.10 kB)
signature.asc (201.00 B)
Download all attachments

2020-03-18 10:02:47

by Konstantin Khlebnikov

[permalink] [raw]
Subject: Re: [PATCH 4.19 03/89] cgroup, netclassid: periodically release file_lock on classid updating

On 18/03/2020 12.02, Pavel Machek wrote:
> Hi!
>
>> From: Dmitry Yakunin <[email protected]>
>>
>> [ Upstream commit 018d26fcd12a75fb9b5fe233762aa3f2f0854b88 ]
> ...
>> Now update is non atomic and socket may be skipped using calls:
>>
>> dup2(oldfd, newfd);
>> close(oldfd);
>>
>> But this case is not typical. Moreover before this patch skip is possible
>> too by hiding socket fd in unix socket buffer.
>
> Dunno. This makes interface even more interesting.

This is part of brilliant cgroup-v1 design. =)
Cgroup-v2 doesn't recolor sockets when task is moved.

>
>> +
>> static int update_classid_sock(const void *v, struct file *file, unsigned n)
>> {
>> int err;
>> + struct update_classid_context *ctx = (void *)v;
>> struct socket *sock = sock_from_file(file, &err);
>>
> ...
>> + if (--ctx->batch == 0) {
>> + ctx->batch = UPDATE_CLASSID_BATCH;
>> + return n + 1;
>> + }
>> return 0;
>> }
>
> We take "const void *" and then write to it. That's asking for
> trouble... right? Should the const annotation be removed, at least for
> sake of humans trying to understand the code?

Indeed, there is no much sense in opaque const void *.
This is how iterate_fd() is declared.

>
> Best regards,
> Pavel
>