* [PATCH 4.19 00/29] 4.19.282-rc1 review
@ 2023-04-24 13:18 Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 01/29] ARM: dts: rockchip: fix a typo error for rk3288 spdif node Greg Kroah-Hartman
` (32 more replies)
0 siblings, 33 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow
This is the start of the stable review cycle for the 4.19.282 release.
There are 29 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Wed, 26 Apr 2023 13:11:11 +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.282-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 <gregkh@linuxfoundation.org>
Linux 4.19.282-rc1
Ekaterina Orlova <vorobushek.ok@gmail.com>
ASN.1: Fix check for strdup() success
Dan Carpenter <error27@gmail.com>
iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger()
William Breathitt Gray <william.gray@linaro.org>
counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
Kuniyuki Iwashima <kuniyu@amazon.com>
sctp: Call inet6_destroy_sock() via sk->sk_destruct().
Kuniyuki Iwashima <kuniyu@amazon.com>
dccp: Call inet6_destroy_sock() via sk->sk_destruct().
Kuniyuki Iwashima <kuniyu@amazon.com>
inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy().
Kuniyuki Iwashima <kuniyu@amazon.com>
tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct().
Kuniyuki Iwashima <kuniyu@amazon.com>
udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM).
Baokun Li <libaokun1@huawei.com>
ext4: fix use-after-free in ext4_xattr_set_entry
Ritesh Harjani <riteshh@linux.ibm.com>
ext4: remove duplicate definition of ext4_xattr_ibody_inline_set()
Tudor Ambarus <tudor.ambarus@linaro.org>
Revert "ext4: fix use-after-free in ext4_xattr_set_entry"
Pingfan Liu <kernelfans@gmail.com>
x86/purgatory: Don't generate debug info for purgatory.ro
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
memstick: fix memory leak if card device is never registered
Ryusuke Konishi <konishi.ryusuke@gmail.com>
nilfs2: initialize unused bytes in segment summary blocks
Juergen Gross <jgross@suse.com>
xen/netback: use same error messages for same errors
Heiko Carstens <hca@linux.ibm.com>
s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling
Álvaro Fernández Rojas <noltari@gmail.com>
net: dsa: b53: mmap: add phy ops
Damien Le Moal <damien.lemoal@opensource.wdc.com>
scsi: core: Improve scsi_vpd_inquiry() checks
Tomas Henzl <thenzl@redhat.com>
scsi: megaraid_sas: Fix fw_crash_buffer_show()
Nick Desaulniers <ndesaulniers@google.com>
selftests: sigaltstack: fix -Wuninitialized
Jonathan Denose <jdenose@chromium.org>
Input: i8042 - add quirk for Fujitsu Lifebook A574/H
Douglas Raillard <douglas.raillard@arm.com>
f2fs: Fix f2fs_truncate_partial_nodes ftrace event
Sebastian Basierski <sebastianx.basierski@intel.com>
e1000e: Disable TSO on i219-LM card to increase speed
Nikita Zhandarovich <n.zhandarovich@fintech.ru>
mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next()
Aleksandr Loktionov <aleksandr.loktionov@intel.com>
i40e: fix i40e_setup_misc_vector() error handling
Aleksandr Loktionov <aleksandr.loktionov@intel.com>
i40e: fix accessing vsi->active_filters without holding lock
Xuan Zhuo <xuanzhuo@linux.alibaba.com>
virtio_net: bugfix overflow inside xdp_linearize_page()
Gwangun Jung <exsociety@gmail.com>
net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg
Jianqun Xu <jay.xu@rock-chips.com>
ARM: dts: rockchip: fix a typo error for rk3288 spdif node
-------------
Diffstat:
Makefile | 4 +-
arch/arm/boot/dts/rk3288.dtsi | 2 +-
arch/s390/kernel/ptrace.c | 8 +---
arch/x86/purgatory/Makefile | 5 ++-
drivers/iio/adc/at91-sama5d2_adc.c | 2 +-
drivers/iio/counter/104-quad-8.c | 14 +-----
drivers/input/serio/i8042-x86ia64io.h | 8 ++++
drivers/memstick/core/memstick.c | 5 ++-
drivers/net/dsa/b53/b53_mmap.c | 14 ++++++
drivers/net/ethernet/intel/e1000e/netdev.c | 51 +++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_main.c | 9 ++--
.../ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c | 2 +
drivers/net/virtio_net.c | 8 +++-
drivers/net/xen-netback/netback.c | 6 +--
drivers/scsi/megaraid/megaraid_sas_base.c | 2 +-
drivers/scsi/scsi.c | 11 ++++-
fs/ext4/inline.c | 11 +++--
fs/ext4/xattr.c | 26 +----------
fs/ext4/xattr.h | 6 +--
fs/nilfs2/segment.c | 20 +++++++++
include/net/ipv6.h | 2 +
include/net/udp.h | 2 +-
include/net/udplite.h | 8 ----
include/trace/events/f2fs.h | 2 +-
net/dccp/dccp.h | 1 +
net/dccp/ipv6.c | 15 ++++---
net/dccp/proto.c | 8 +++-
net/ipv4/udp.c | 9 ++--
net/ipv4/udplite.c | 8 ++++
net/ipv6/af_inet6.c | 15 ++++++-
net/ipv6/ipv6_sockglue.c | 20 ++++-----
net/ipv6/ping.c | 6 ---
net/ipv6/raw.c | 2 -
net/ipv6/tcp_ipv6.c | 8 +---
net/ipv6/udp.c | 17 ++++++--
net/ipv6/udp_impl.h | 1 +
net/ipv6/udplite.c | 9 +++-
net/l2tp/l2tp_ip6.c | 2 -
net/sched/sch_qfq.c | 13 +++---
net/sctp/socket.c | 29 ++++++++----
scripts/asn1_compiler.c | 2 +-
.../selftests/sigaltstack/current_stack_pointer.h | 23 ++++++++++
tools/testing/selftests/sigaltstack/sas.c | 7 +--
43 files changed, 251 insertions(+), 172 deletions(-)
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 01/29] ARM: dts: rockchip: fix a typo error for rk3288 spdif node
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 02/29] net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg Greg Kroah-Hartman
` (31 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jianqun Xu, Sjoerd Simons,
Heiko Stuebner, Sasha Levin
From: Jianqun Xu <jay.xu@rock-chips.com>
[ Upstream commit 02c84f91adb9a64b75ec97d772675c02a3e65ed7 ]
Fix the address in the spdif node name.
Fixes: 874e568e500a ("ARM: dts: rockchip: Add SPDIF transceiver for RK3288")
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Reviewed-by: Sjoerd Simons <sjoerd@collabora.com>
Link: https://lore.kernel.org/r/20230208091411.1603142-1-jay.xu@rock-chips.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/rk3288.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index 402b5e0fd616c..4de88ded6d9a1 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -924,7 +924,7 @@
status = "disabled";
};
- spdif: sound@ff88b0000 {
+ spdif: sound@ff8b0000 {
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
reg = <0x0 0xff8b0000 0x0 0x10000>;
#sound-dai-cells = <0>;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 02/29] net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 01/29] ARM: dts: rockchip: fix a typo error for rk3288 spdif node Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 03/29] virtio_net: bugfix overflow inside xdp_linearize_page() Greg Kroah-Hartman
` (30 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gwangun Jung, Jamal Hadi Salim,
David S. Miller, Sasha Levin
From: Gwangun Jung <exsociety@gmail.com>
[ Upstream commit 3037933448f60f9acb705997eae62013ecb81e0d ]
If the TCA_QFQ_LMAX value is not offered through nlattr, lmax is determined by the MTU value of the network device.
The MTU of the loopback device can be set up to 2^31-1.
As a result, it is possible to have an lmax value that exceeds QFQ_MIN_LMAX.
Due to the invalid lmax value, an index is generated that exceeds the QFQ_MAX_INDEX(=24) value, causing out-of-bounds read/write errors.
The following reports a oob access:
[ 84.582666] BUG: KASAN: slab-out-of-bounds in qfq_activate_agg.constprop.0 (net/sched/sch_qfq.c:1027 net/sched/sch_qfq.c:1060 net/sched/sch_qfq.c:1313)
[ 84.583267] Read of size 4 at addr ffff88810f676948 by task ping/301
[ 84.583686]
[ 84.583797] CPU: 3 PID: 301 Comm: ping Not tainted 6.3.0-rc5 #1
[ 84.584164] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
[ 84.584644] Call Trace:
[ 84.584787] <TASK>
[ 84.584906] dump_stack_lvl (lib/dump_stack.c:107 (discriminator 1))
[ 84.585108] print_report (mm/kasan/report.c:320 mm/kasan/report.c:430)
[ 84.585570] kasan_report (mm/kasan/report.c:538)
[ 84.585988] qfq_activate_agg.constprop.0 (net/sched/sch_qfq.c:1027 net/sched/sch_qfq.c:1060 net/sched/sch_qfq.c:1313)
[ 84.586599] qfq_enqueue (net/sched/sch_qfq.c:1255)
[ 84.587607] dev_qdisc_enqueue (net/core/dev.c:3776)
[ 84.587749] __dev_queue_xmit (./include/net/sch_generic.h:186 net/core/dev.c:3865 net/core/dev.c:4212)
[ 84.588763] ip_finish_output2 (./include/net/neighbour.h:546 net/ipv4/ip_output.c:228)
[ 84.589460] ip_output (net/ipv4/ip_output.c:430)
[ 84.590132] ip_push_pending_frames (./include/net/dst.h:444 net/ipv4/ip_output.c:126 net/ipv4/ip_output.c:1586 net/ipv4/ip_output.c:1606)
[ 84.590285] raw_sendmsg (net/ipv4/raw.c:649)
[ 84.591960] sock_sendmsg (net/socket.c:724 net/socket.c:747)
[ 84.592084] __sys_sendto (net/socket.c:2142)
[ 84.593306] __x64_sys_sendto (net/socket.c:2150)
[ 84.593779] do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80)
[ 84.593902] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
[ 84.594070] RIP: 0033:0x7fe568032066
[ 84.594192] Code: 0e 0d 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 41 89 ca 64 8b 04 25 18 00 00 00 85 c09[ 84.594796] RSP: 002b:00007ffce388b4e8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
Code starting with the faulting instruction
===========================================
[ 84.595047] RAX: ffffffffffffffda RBX: 00007ffce388cc70 RCX: 00007fe568032066
[ 84.595281] RDX: 0000000000000040 RSI: 00005605fdad6d10 RDI: 0000000000000003
[ 84.595515] RBP: 00005605fdad6d10 R08: 00007ffce388eeec R09: 0000000000000010
[ 84.595749] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000040
[ 84.595984] R13: 00007ffce388cc30 R14: 00007ffce388b4f0 R15: 0000001d00000001
[ 84.596218] </TASK>
[ 84.596295]
[ 84.596351] Allocated by task 291:
[ 84.596467] kasan_save_stack (mm/kasan/common.c:46)
[ 84.596597] kasan_set_track (mm/kasan/common.c:52)
[ 84.596725] __kasan_kmalloc (mm/kasan/common.c:384)
[ 84.596852] __kmalloc_node (./include/linux/kasan.h:196 mm/slab_common.c:967 mm/slab_common.c:974)
[ 84.596979] qdisc_alloc (./include/linux/slab.h:610 ./include/linux/slab.h:731 net/sched/sch_generic.c:938)
[ 84.597100] qdisc_create (net/sched/sch_api.c:1244)
[ 84.597222] tc_modify_qdisc (net/sched/sch_api.c:1680)
[ 84.597357] rtnetlink_rcv_msg (net/core/rtnetlink.c:6174)
[ 84.597495] netlink_rcv_skb (net/netlink/af_netlink.c:2574)
[ 84.597627] netlink_unicast (net/netlink/af_netlink.c:1340 net/netlink/af_netlink.c:1365)
[ 84.597759] netlink_sendmsg (net/netlink/af_netlink.c:1942)
[ 84.597891] sock_sendmsg (net/socket.c:724 net/socket.c:747)
[ 84.598016] ____sys_sendmsg (net/socket.c:2501)
[ 84.598147] ___sys_sendmsg (net/socket.c:2557)
[ 84.598275] __sys_sendmsg (./include/linux/file.h:31 net/socket.c:2586)
[ 84.598399] do_syscall_64 (arch/x86/entry/common.c:50 arch/x86/entry/common.c:80)
[ 84.598520] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:120)
[ 84.598688]
[ 84.598744] The buggy address belongs to the object at ffff88810f674000
[ 84.598744] which belongs to the cache kmalloc-8k of size 8192
[ 84.599135] The buggy address is located 2664 bytes to the right of
[ 84.599135] allocated 7904-byte region [ffff88810f674000, ffff88810f675ee0)
[ 84.599544]
[ 84.599598] The buggy address belongs to the physical page:
[ 84.599777] page:00000000e638567f refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x10f670
[ 84.600074] head:00000000e638567f order:3 entire_mapcount:0 nr_pages_mapped:0 pincount:0
[ 84.600330] flags: 0x200000000010200(slab|head|node=0|zone=2)
[ 84.600517] raw: 0200000000010200 ffff888100043180 dead000000000122 0000000000000000
[ 84.600764] raw: 0000000000000000 0000000080020002 00000001ffffffff 0000000000000000
[ 84.601009] page dumped because: kasan: bad access detected
[ 84.601187]
[ 84.601241] Memory state around the buggy address:
[ 84.601396] ffff88810f676800: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 84.601620] ffff88810f676880: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 84.601845] >ffff88810f676900: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 84.602069] ^
[ 84.602243] ffff88810f676980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 84.602468] ffff88810f676a00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
[ 84.602693] ==================================================================
[ 84.602924] Disabling lock debugging due to kernel taint
Fixes: 3015f3d2a3cd ("pkt_sched: enable QFQ to support TSO/GSO")
Reported-by: Gwangun Jung <exsociety@gmail.com>
Signed-off-by: Gwangun Jung <exsociety@gmail.com>
Acked-by: Jamal Hadi Salim<jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/sched/sch_qfq.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/net/sched/sch_qfq.c b/net/sched/sch_qfq.c
index 20dc1851d4ffe..c2a68f6e427ed 100644
--- a/net/sched/sch_qfq.c
+++ b/net/sched/sch_qfq.c
@@ -433,15 +433,16 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
} else
weight = 1;
- if (tb[TCA_QFQ_LMAX]) {
+ if (tb[TCA_QFQ_LMAX])
lmax = nla_get_u32(tb[TCA_QFQ_LMAX]);
- if (lmax < QFQ_MIN_LMAX || lmax > (1UL << QFQ_MTU_SHIFT)) {
- pr_notice("qfq: invalid max length %u\n", lmax);
- return -EINVAL;
- }
- } else
+ else
lmax = psched_mtu(qdisc_dev(sch));
+ if (lmax < QFQ_MIN_LMAX || lmax > (1UL << QFQ_MTU_SHIFT)) {
+ pr_notice("qfq: invalid max length %u\n", lmax);
+ return -EINVAL;
+ }
+
inv_w = ONE_FP / weight;
weight = ONE_FP / inv_w;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 03/29] virtio_net: bugfix overflow inside xdp_linearize_page()
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 01/29] ARM: dts: rockchip: fix a typo error for rk3288 spdif node Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 02/29] net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 04/29] i40e: fix accessing vsi->active_filters without holding lock Greg Kroah-Hartman
` (29 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xuan Zhuo, Jason Wang,
Michael S. Tsirkin, David S. Miller, Sasha Levin
From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
[ Upstream commit 853618d5886bf94812f31228091cd37d308230f7 ]
Here we copy the data from the original buf to the new page. But we
not check that it may be overflow.
As long as the size received(including vnethdr) is greater than 3840
(PAGE_SIZE -VIRTIO_XDP_HEADROOM). Then the memcpy will overflow.
And this is completely possible, as long as the MTU is large, such
as 4096. In our test environment, this will cause crash. Since crash is
caused by the written memory, it is meaningless, so I do not include it.
Fixes: 72979a6c3590 ("virtio_net: xdp, add slowpath case for non contiguous buffers")
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/virtio_net.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 406ef4cc636d4..0cd46735e3950 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -600,8 +600,13 @@ static struct page *xdp_linearize_page(struct receive_queue *rq,
int page_off,
unsigned int *len)
{
- struct page *page = alloc_page(GFP_ATOMIC);
+ int tailroom = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
+ struct page *page;
+ if (page_off + *len + tailroom > PAGE_SIZE)
+ return NULL;
+
+ page = alloc_page(GFP_ATOMIC);
if (!page)
return NULL;
@@ -609,7 +614,6 @@ static struct page *xdp_linearize_page(struct receive_queue *rq,
page_off += *len;
while (--*num_buf) {
- int tailroom = SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
unsigned int buflen;
void *buf;
int off;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 04/29] i40e: fix accessing vsi->active_filters without holding lock
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (2 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 03/29] virtio_net: bugfix overflow inside xdp_linearize_page() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 05/29] i40e: fix i40e_setup_misc_vector() error handling Greg Kroah-Hartman
` (28 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Aleksandr Loktionov, Tony Nguyen,
Sasha Levin, Pucha Himasekhar Reddy
From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
[ Upstream commit 8485d093b076e59baff424552e8aecfc5bd2d261 ]
Fix accessing vsi->active_filters without holding the mac_filter_hash_lock.
Move vsi->active_filters = 0 inside critical section and
move clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state) after the critical
section to ensure the new filters from other threads can be added only after
filters cleaning in the critical section is finished.
Fixes: 278e7d0b9d68 ("i40e: store MAC/VLAN filters in a hash with the MAC Address as key")
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 795f8fe2570e4..3f8c37660e860 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -12484,15 +12484,15 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
vsi->id = ctxt.vsi_number;
}
- vsi->active_filters = 0;
- clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
spin_lock_bh(&vsi->mac_filter_hash_lock);
+ vsi->active_filters = 0;
/* If macvlan filters already exist, force them to get loaded */
hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) {
f->state = I40E_FILTER_NEW;
f_count++;
}
spin_unlock_bh(&vsi->mac_filter_hash_lock);
+ clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
if (f_count) {
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 05/29] i40e: fix i40e_setup_misc_vector() error handling
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (3 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 04/29] i40e: fix accessing vsi->active_filters without holding lock Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 06/29] mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() Greg Kroah-Hartman
` (27 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Aleksandr Loktionov, Tony Nguyen,
Sasha Levin, Pucha Himasekhar Reddy
From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
[ Upstream commit c86c00c6935505929cc9adb29ddb85e48c71f828 ]
Add error handling of i40e_setup_misc_vector() in i40e_rebuild().
In case interrupt vectors setup fails do not re-open vsi-s and
do not bring up vf-s, we have no interrupts to serve a traffic
anyway.
Fixes: 41c445ff0f48 ("i40e: main driver core")
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/intel/i40e/i40e_main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 3f8c37660e860..a908720535ceb 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -9702,8 +9702,11 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)
pf->hw.aq.asq_last_status));
}
/* reinit the misc interrupt */
- if (pf->flags & I40E_FLAG_MSIX_ENABLED)
+ if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
ret = i40e_setup_misc_vector(pf);
+ if (ret)
+ goto end_unlock;
+ }
/* Add a filter to drop all Flow control frames from any VSI from being
* transmitted. By doing so we stop a malicious VF from sending out
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 06/29] mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next()
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (4 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 05/29] i40e: fix i40e_setup_misc_vector() error handling Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 07/29] e1000e: Disable TSO on i219-LM card to increase speed Greg Kroah-Hartman
` (26 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nikita Zhandarovich, Ido Schimmel,
Paolo Abeni, Sasha Levin, Natalia Petrova
From: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
[ Upstream commit c0e73276f0fcbbd3d4736ba975d7dc7a48791b0c ]
Function mlxfw_mfa2_tlv_multi_get() returns NULL if 'tlv' in
question does not pass checks in mlxfw_mfa2_tlv_payload_get(). This
behaviour may lead to NULL pointer dereference in 'multi->total_len'.
Fix this issue by testing mlxfw_mfa2_tlv_multi_get()'s return value
against NULL.
Found by Linux Verification Center (linuxtesting.org) with static
analysis tool SVACE.
Fixes: 410ed13cae39 ("Add the mlxfw module for Mellanox firmware flash process")
Co-developed-by: Natalia Petrova <n.petrova@fintech.ru>
Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://lore.kernel.org/r/20230417120718.52325-1-n.zhandarovich@fintech.ru
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c b/drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c
index 0094b92a233ba..31c0d6ee81b16 100644
--- a/drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c
+++ b/drivers/net/ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c
@@ -62,6 +62,8 @@ mlxfw_mfa2_tlv_next(const struct mlxfw_mfa2_file *mfa2_file,
if (tlv->type == MLXFW_MFA2_TLV_MULTI_PART) {
multi = mlxfw_mfa2_tlv_multi_get(mfa2_file, tlv);
+ if (!multi)
+ return NULL;
tlv_len = NLA_ALIGN(tlv_len + be16_to_cpu(multi->total_len));
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 07/29] e1000e: Disable TSO on i219-LM card to increase speed
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (5 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 06/29] mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 08/29] f2fs: Fix f2fs_truncate_partial_nodes ftrace event Greg Kroah-Hartman
` (25 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Sebastian Basierski,
Mateusz Palczewski, Naama Meir, Tony Nguyen, Simon Horman,
Jakub Kicinski, Sasha Levin
From: Sebastian Basierski <sebastianx.basierski@intel.com>
[ Upstream commit 67d47b95119ad589b0a0b16b88b1dd9a04061ced ]
While using i219-LM card currently it was only possible to achieve
about 60% of maximum speed due to regression introduced in Linux 5.8.
This was caused by TSO not being disabled by default despite commit
f29801030ac6 ("e1000e: Disable TSO for buffer overrun workaround").
Fix that by disabling TSO during driver probe.
Fixes: f29801030ac6 ("e1000e: Disable TSO for buffer overrun workaround")
Signed-off-by: Sebastian Basierski <sebastianx.basierski@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Naama Meir <naamax.meir@linux.intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230417205345.1030801-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/intel/e1000e/netdev.c | 51 +++++++++++-----------
1 file changed, 26 insertions(+), 25 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 0629f87a20be7..202f734f8733b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -5230,31 +5230,6 @@ static void e1000_watchdog_task(struct work_struct *work)
ew32(TARC(0), tarc0);
}
- /* disable TSO for pcie and 10/100 speeds, to avoid
- * some hardware issues
- */
- if (!(adapter->flags & FLAG_TSO_FORCE)) {
- switch (adapter->link_speed) {
- case SPEED_10:
- case SPEED_100:
- e_info("10/100 speed: disabling TSO\n");
- netdev->features &= ~NETIF_F_TSO;
- netdev->features &= ~NETIF_F_TSO6;
- break;
- case SPEED_1000:
- netdev->features |= NETIF_F_TSO;
- netdev->features |= NETIF_F_TSO6;
- break;
- default:
- /* oops */
- break;
- }
- if (hw->mac.type == e1000_pch_spt) {
- netdev->features &= ~NETIF_F_TSO;
- netdev->features &= ~NETIF_F_TSO6;
- }
- }
-
/* enable transmits in the hardware, need to do this
* after setting TARC(0)
*/
@@ -7191,6 +7166,32 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
NETIF_F_RXCSUM |
NETIF_F_HW_CSUM);
+ /* disable TSO for pcie and 10/100 speeds to avoid
+ * some hardware issues and for i219 to fix transfer
+ * speed being capped at 60%
+ */
+ if (!(adapter->flags & FLAG_TSO_FORCE)) {
+ switch (adapter->link_speed) {
+ case SPEED_10:
+ case SPEED_100:
+ e_info("10/100 speed: disabling TSO\n");
+ netdev->features &= ~NETIF_F_TSO;
+ netdev->features &= ~NETIF_F_TSO6;
+ break;
+ case SPEED_1000:
+ netdev->features |= NETIF_F_TSO;
+ netdev->features |= NETIF_F_TSO6;
+ break;
+ default:
+ /* oops */
+ break;
+ }
+ if (hw->mac.type == e1000_pch_spt) {
+ netdev->features &= ~NETIF_F_TSO;
+ netdev->features &= ~NETIF_F_TSO6;
+ }
+ }
+
/* Set user-changeable features (subset of all device features) */
netdev->hw_features = netdev->features;
netdev->hw_features |= NETIF_F_RXFCS;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 08/29] f2fs: Fix f2fs_truncate_partial_nodes ftrace event
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (6 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 07/29] e1000e: Disable TSO on i219-LM card to increase speed Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 09/29] Input: i8042 - add quirk for Fujitsu Lifebook A574/H Greg Kroah-Hartman
` (24 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Douglas Raillard, Mukesh Ojha,
Chao Yu, Jaegeuk Kim, Sasha Levin
From: Douglas Raillard <douglas.raillard@arm.com>
[ Upstream commit 0b04d4c0542e8573a837b1d81b94209e48723b25 ]
Fix the nid_t field so that its size is correctly reported in the text
format embedded in trace.dat files. As it stands, it is reported as
being of size 4:
field:nid_t nid[3]; offset:24; size:4; signed:0;
Instead of 12:
field:nid_t nid[3]; offset:24; size:12; signed:0;
This also fixes the reported offset of subsequent fields so that they
match with the actual struct layout.
Signed-off-by: Douglas Raillard <douglas.raillard@arm.com>
Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/trace/events/f2fs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index 52e6456bdb922..098d6dff20bef 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -498,7 +498,7 @@ TRACE_EVENT(f2fs_truncate_partial_nodes,
TP_STRUCT__entry(
__field(dev_t, dev)
__field(ino_t, ino)
- __field(nid_t, nid[3])
+ __array(nid_t, nid, 3)
__field(int, depth)
__field(int, err)
),
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 09/29] Input: i8042 - add quirk for Fujitsu Lifebook A574/H
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (7 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 08/29] f2fs: Fix f2fs_truncate_partial_nodes ftrace event Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 10/29] selftests: sigaltstack: fix -Wuninitialized Greg Kroah-Hartman
` (23 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jonathan Denose, Hans de Goede,
Dmitry Torokhov, Sasha Levin
From: Jonathan Denose <jdenose@chromium.org>
[ Upstream commit f5bad62f9107b701a6def7cac1f5f65862219b83 ]
Fujitsu Lifebook A574/H requires the nomux option to properly
probe the touchpad, especially when waking from sleep.
Signed-off-by: Jonathan Denose <jdenose@google.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230303152623.45859-1-jdenose@google.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/input/serio/i8042-x86ia64io.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index b2ab20c16cc77..da2bf8259330e 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -605,6 +605,14 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
},
.driver_data = (void *)(SERIO_QUIRK_NOMUX)
},
+ {
+ /* Fujitsu Lifebook A574/H */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "FMVA0501PZ"),
+ },
+ .driver_data = (void *)(SERIO_QUIRK_NOMUX)
+ },
{
/* Gigabyte M912 */
.matches = {
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 10/29] selftests: sigaltstack: fix -Wuninitialized
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (8 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 09/29] Input: i8042 - add quirk for Fujitsu Lifebook A574/H Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 11/29] scsi: megaraid_sas: Fix fw_crash_buffer_show() Greg Kroah-Hartman
` (22 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Linux Kernel Functional Testing,
Nick Desaulniers, Kees Cook, Anders Roxell, Shuah Khan,
Sasha Levin
From: Nick Desaulniers <ndesaulniers@google.com>
[ Upstream commit 05107edc910135d27fe557267dc45be9630bf3dd ]
Building sigaltstack with clang via:
$ ARCH=x86 make LLVM=1 -C tools/testing/selftests/sigaltstack/
produces the following warning:
warning: variable 'sp' is uninitialized when used here [-Wuninitialized]
if (sp < (unsigned long)sstack ||
^~
Clang expects these to be declared at global scope; we've fixed this in
the kernel proper by using the macro `current_stack_pointer`. This is
defined in different headers for different target architectures, so just
create a new header that defines the arch-specific register names for
the stack pointer register, and define it for more targets (at least the
ones that support current_stack_pointer/ARCH_HAS_CURRENT_STACK_POINTER).
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Link: https://lore.kernel.org/lkml/CA+G9fYsi3OOu7yCsMutpzKDnBMAzJBCPimBp86LhGBa0eCnEpA@mail.gmail.com/
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Anders Roxell <anders.roxell@linaro.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../sigaltstack/current_stack_pointer.h | 23 +++++++++++++++++++
tools/testing/selftests/sigaltstack/sas.c | 7 +-----
2 files changed, 24 insertions(+), 6 deletions(-)
create mode 100644 tools/testing/selftests/sigaltstack/current_stack_pointer.h
diff --git a/tools/testing/selftests/sigaltstack/current_stack_pointer.h b/tools/testing/selftests/sigaltstack/current_stack_pointer.h
new file mode 100644
index 0000000000000..ea9bdf3a90b16
--- /dev/null
+++ b/tools/testing/selftests/sigaltstack/current_stack_pointer.h
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#if __alpha__
+register unsigned long sp asm("$30");
+#elif __arm__ || __aarch64__ || __csky__ || __m68k__ || __mips__ || __riscv
+register unsigned long sp asm("sp");
+#elif __i386__
+register unsigned long sp asm("esp");
+#elif __loongarch64
+register unsigned long sp asm("$sp");
+#elif __ppc__
+register unsigned long sp asm("r1");
+#elif __s390x__
+register unsigned long sp asm("%15");
+#elif __sh__
+register unsigned long sp asm("r15");
+#elif __x86_64__
+register unsigned long sp asm("rsp");
+#elif __XTENSA__
+register unsigned long sp asm("a1");
+#else
+#error "implement current_stack_pointer equivalent"
+#endif
diff --git a/tools/testing/selftests/sigaltstack/sas.c b/tools/testing/selftests/sigaltstack/sas.c
index 228c2ae47687d..6069d97bf5063 100644
--- a/tools/testing/selftests/sigaltstack/sas.c
+++ b/tools/testing/selftests/sigaltstack/sas.c
@@ -19,6 +19,7 @@
#include <errno.h>
#include "../kselftest.h"
+#include "current_stack_pointer.h"
#ifndef SS_AUTODISARM
#define SS_AUTODISARM (1U << 31)
@@ -40,12 +41,6 @@ void my_usr1(int sig, siginfo_t *si, void *u)
stack_t stk;
struct stk_data *p;
-#if __s390x__
- register unsigned long sp asm("%15");
-#else
- register unsigned long sp asm("sp");
-#endif
-
if (sp < (unsigned long)sstack ||
sp >= (unsigned long)sstack + SIGSTKSZ) {
ksft_exit_fail_msg("SP is not on sigaltstack\n");
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 11/29] scsi: megaraid_sas: Fix fw_crash_buffer_show()
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (9 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 10/29] selftests: sigaltstack: fix -Wuninitialized Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 12/29] scsi: core: Improve scsi_vpd_inquiry() checks Greg Kroah-Hartman
` (21 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Tomas Henzl, Martin K. Petersen,
Sasha Levin
From: Tomas Henzl <thenzl@redhat.com>
[ Upstream commit 0808ed6ebbc292222ca069d339744870f6d801da ]
If crash_dump_buf is not allocated then crash dump can't be available.
Replace logical 'and' with 'or'.
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Link: https://lore.kernel.org/r/20230324135249.9733-1-thenzl@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/megaraid/megaraid_sas_base.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 8877a21102f1d..8d1df03386b4f 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -3032,7 +3032,7 @@ megasas_fw_crash_buffer_show(struct device *cdev,
spin_lock_irqsave(&instance->crashdump_lock, flags);
buff_offset = instance->fw_crash_buffer_offset;
- if (!instance->crash_dump_buf &&
+ if (!instance->crash_dump_buf ||
!((instance->fw_crash_state == AVAILABLE) ||
(instance->fw_crash_state == COPYING))) {
dev_err(&instance->pdev->dev,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 12/29] scsi: core: Improve scsi_vpd_inquiry() checks
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (10 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 11/29] scsi: megaraid_sas: Fix fw_crash_buffer_show() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 13/29] net: dsa: b53: mmap: add phy ops Greg Kroah-Hartman
` (20 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Damien Le Moal, Benjamin Block,
Martin K. Petersen, Sasha Levin
From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
[ Upstream commit f0aa59a33d2ac2267d260fe21eaf92500df8e7b4 ]
Some USB-SATA adapters have broken behavior when an unsupported VPD page is
probed: Depending on the VPD page number, a 4-byte header with a valid VPD
page number but with a 0 length is returned. Currently, scsi_vpd_inquiry()
only checks that the page number is valid to determine if the page is
valid, which results in receiving only the 4-byte header for the
non-existent page. This error manifests itself very often with page 0xb9
for the Concurrent Positioning Ranges detection done by sd_read_cpr(),
resulting in the following error message:
sd 0:0:0:0: [sda] Invalid Concurrent Positioning Ranges VPD page
Prevent such misleading error message by adding a check in
scsi_vpd_inquiry() to verify that the page length is not 0.
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Link: https://lore.kernel.org/r/20230322022211.116327-1-damien.lemoal@opensource.wdc.com
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/scsi.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index febe29a9b8b06..acd118da88bfb 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -351,11 +351,18 @@ static int scsi_vpd_inquiry(struct scsi_device *sdev, unsigned char *buffer,
if (result)
return -EIO;
- /* Sanity check that we got the page back that we asked for */
+ /*
+ * Sanity check that we got the page back that we asked for and that
+ * the page size is not 0.
+ */
if (buffer[1] != page)
return -EIO;
- return get_unaligned_be16(&buffer[2]) + 4;
+ result = get_unaligned_be16(&buffer[2]);
+ if (!result)
+ return -EIO;
+
+ return result + 4;
}
/**
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 13/29] net: dsa: b53: mmap: add phy ops
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (11 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 12/29] scsi: core: Improve scsi_vpd_inquiry() checks Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 14/29] s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling Greg Kroah-Hartman
` (19 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Álvaro Fernández Rojas,
Florian Fainelli, David S. Miller, Sasha Levin
From: Álvaro Fernández Rojas <noltari@gmail.com>
[ Upstream commit 45977e58ce65ed0459edc9a0466d9dfea09463f5 ]
Implement phy_read16() and phy_write16() ops for B53 MMAP to avoid accessing
B53_PORT_MII_PAGE registers which hangs the device.
This access should be done through the MDIO Mux bus controller.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/dsa/b53/b53_mmap.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index c628d0980c0b1..1d52cb3e46d52 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -215,6 +215,18 @@ static int b53_mmap_write64(struct b53_device *dev, u8 page, u8 reg,
return 0;
}
+static int b53_mmap_phy_read16(struct b53_device *dev, int addr, int reg,
+ u16 *value)
+{
+ return -EIO;
+}
+
+static int b53_mmap_phy_write16(struct b53_device *dev, int addr, int reg,
+ u16 value)
+{
+ return -EIO;
+}
+
static const struct b53_io_ops b53_mmap_ops = {
.read8 = b53_mmap_read8,
.read16 = b53_mmap_read16,
@@ -226,6 +238,8 @@ static const struct b53_io_ops b53_mmap_ops = {
.write32 = b53_mmap_write32,
.write48 = b53_mmap_write48,
.write64 = b53_mmap_write64,
+ .phy_read16 = b53_mmap_phy_read16,
+ .phy_write16 = b53_mmap_phy_write16,
};
static int b53_mmap_probe(struct platform_device *pdev)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 14/29] s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (12 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 13/29] net: dsa: b53: mmap: add phy ops Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 15/29] xen/netback: use same error messages for same errors Greg Kroah-Hartman
` (18 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Sven Schnelle, Heiko Carstens,
Vasily Gorbik, Sasha Levin
From: Heiko Carstens <hca@linux.ibm.com>
[ Upstream commit f9bbf25e7b2b74b52b2f269216a92657774f239c ]
Return -EFAULT if put_user() for the PTRACE_GET_LAST_BREAK
request fails, instead of silently ignoring it.
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/s390/kernel/ptrace.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 3ffa2847c110b..c36289a3ad500 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -503,9 +503,7 @@ long arch_ptrace(struct task_struct *child, long request,
}
return 0;
case PTRACE_GET_LAST_BREAK:
- put_user(child->thread.last_break,
- (unsigned long __user *) data);
- return 0;
+ return put_user(child->thread.last_break, (unsigned long __user *)data);
case PTRACE_ENABLE_TE:
if (!MACHINE_HAS_TE)
return -EIO;
@@ -857,9 +855,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
}
return 0;
case PTRACE_GET_LAST_BREAK:
- put_user(child->thread.last_break,
- (unsigned int __user *) data);
- return 0;
+ return put_user(child->thread.last_break, (unsigned int __user *)data);
}
return compat_ptrace_request(child, request, addr, data);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 15/29] xen/netback: use same error messages for same errors
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (13 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 14/29] s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 16/29] nilfs2: initialize unused bytes in segment summary blocks Greg Kroah-Hartman
` (17 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jan Beulich, Juergen Gross,
Paolo Abeni, Sasha Levin
From: Juergen Gross <jgross@suse.com>
[ Upstream commit 2eca98e5b24d01c02b46c67be05a5f98cc9789b1 ]
Issue the same error message in case an illegal page boundary crossing
has been detected in both cases where this is tested.
Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Link: https://lore.kernel.org/r/20230329080259.14823-1-jgross@suse.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/xen-netback/netback.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index ed644b6824cef..d2b79d7c0b881 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -989,10 +989,8 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue,
/* No crossing a page as the payload mustn't fragment. */
if (unlikely((txreq.offset + txreq.size) > XEN_PAGE_SIZE)) {
- netdev_err(queue->vif->dev,
- "txreq.offset: %u, size: %u, end: %lu\n",
- txreq.offset, txreq.size,
- (unsigned long)(txreq.offset&~XEN_PAGE_MASK) + txreq.size);
+ netdev_err(queue->vif->dev, "Cross page boundary, txreq.offset: %u, size: %u\n",
+ txreq.offset, txreq.size);
xenvif_fatal_tx_err(queue->vif);
break;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH 4.19 16/29] nilfs2: initialize unused bytes in segment summary blocks
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (14 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 15/29] xen/netback: use same error messages for same errors Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 17/29] memstick: fix memory leak if card device is never registered Greg Kroah-Hartman
` (16 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ryusuke Konishi,
syzbot+048585f3f4227bb2b49b, Alexander Potapenko, Andrew Morton
From: Ryusuke Konishi <konishi.ryusuke@gmail.com>
commit ef832747a82dfbc22a3702219cc716f449b24e4a upstream.
Syzbot still reports uninit-value in nilfs_add_checksums_on_logs() for
KMSAN enabled kernels after applying commit 7397031622e0 ("nilfs2:
initialize "struct nilfs_binfo_dat"->bi_pad field").
This is because the unused bytes at the end of each block in segment
summaries are not initialized. So this fixes the issue by padding the
unused bytes with null bytes.
Link: https://lkml.kernel.org/r/20230417173513.12598-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Reported-by: syzbot+048585f3f4227bb2b49b@syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=048585f3f4227bb2b49b
Cc: Alexander Potapenko <glider@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/nilfs2/segment.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
--- a/fs/nilfs2/segment.c
+++ b/fs/nilfs2/segment.c
@@ -435,6 +435,23 @@ static int nilfs_segctor_reset_segment_b
return 0;
}
+/**
+ * nilfs_segctor_zeropad_segsum - zero pad the rest of the segment summary area
+ * @sci: segment constructor object
+ *
+ * nilfs_segctor_zeropad_segsum() zero-fills unallocated space at the end of
+ * the current segment summary block.
+ */
+static void nilfs_segctor_zeropad_segsum(struct nilfs_sc_info *sci)
+{
+ struct nilfs_segsum_pointer *ssp;
+
+ ssp = sci->sc_blk_cnt > 0 ? &sci->sc_binfo_ptr : &sci->sc_finfo_ptr;
+ if (ssp->offset < ssp->bh->b_size)
+ memset(ssp->bh->b_data + ssp->offset, 0,
+ ssp->bh->b_size - ssp->offset);
+}
+
static int nilfs_segctor_feed_segment(struct nilfs_sc_info *sci)
{
sci->sc_nblk_this_inc += sci->sc_curseg->sb_sum.nblocks;
@@ -443,6 +460,7 @@ static int nilfs_segctor_feed_segment(st
* The current segment is filled up
* (internal code)
*/
+ nilfs_segctor_zeropad_segsum(sci);
sci->sc_curseg = NILFS_NEXT_SEGBUF(sci->sc_curseg);
return nilfs_segctor_reset_segment_buffer(sci);
}
@@ -547,6 +565,7 @@ static int nilfs_segctor_add_file_block(
goto retry;
}
if (unlikely(required)) {
+ nilfs_segctor_zeropad_segsum(sci);
err = nilfs_segbuf_extend_segsum(segbuf);
if (unlikely(err))
goto failed;
@@ -1531,6 +1550,7 @@ static int nilfs_segctor_collect(struct
nadd = min_t(int, nadd << 1, SC_MAX_SEGDELTA);
sci->sc_stage = prev_stage;
}
+ nilfs_segctor_zeropad_segsum(sci);
nilfs_segctor_truncate_segments(sci, sci->sc_curseg, nilfs->ns_sufile);
return 0;
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 17/29] memstick: fix memory leak if card device is never registered
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (15 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 16/29] nilfs2: initialize unused bytes in segment summary blocks Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 18/29] x86/purgatory: Dont generate debug info for purgatory.ro Greg Kroah-Hartman
` (15 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maxim Levitsky, Alex Dubov,
Ulf Hansson, Rafael J. Wysocki, Hans de Goede, Kay Sievers,
linux-mmc, stable, Mirsad Goran Todorovac
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
commit 4b6d621c9d859ff89e68cebf6178652592676013 upstream.
When calling dev_set_name() memory is allocated for the name for the
struct device. Once that structure device is registered, or attempted
to be registerd, with the driver core, the driver core will handle
cleaning up that memory when the device is removed from the system.
Unfortunatly for the memstick code, there is an error path that causes
the struct device to never be registered, and so the memory allocated in
dev_set_name will be leaked. Fix that leak by manually freeing it right
before the memory for the device is freed.
Cc: Maxim Levitsky <maximlevitsky@gmail.com>
Cc: Alex Dubov <oakad@yahoo.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: linux-mmc@vger.kernel.org
Fixes: 0252c3b4f018 ("memstick: struct device - replace bus_id with dev_name(), dev_set_name()")
Cc: stable <stable@kernel.org>
Co-developed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Co-developed-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
Signed-off-by: Mirsad Goran Todorovac <mirsad.todorovac@alu.unizg.hr>
Link: https://lore.kernel.org/r/20230401200327.16800-1-gregkh@linuxfoundation.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/memstick/core/memstick.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/memstick/core/memstick.c
+++ b/drivers/memstick/core/memstick.c
@@ -416,6 +416,7 @@ static struct memstick_dev *memstick_all
return card;
err_out:
host->card = old_card;
+ kfree_const(card->dev.kobj.name);
kfree(card);
return NULL;
}
@@ -471,8 +472,10 @@ static void memstick_check(struct work_s
put_device(&card->dev);
host->card = NULL;
}
- } else
+ } else {
+ kfree_const(card->dev.kobj.name);
kfree(card);
+ }
}
out_power_off:
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 18/29] x86/purgatory: Dont generate debug info for purgatory.ro
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (16 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 17/29] memstick: fix memory leak if card device is never registered Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 19/29] Revert "ext4: fix use-after-free in ext4_xattr_set_entry" Greg Kroah-Hartman
` (14 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Pingfan Liu, Ingo Molnar,
Nick Desaulniers, Steve Wahl, Dave Young, Alyssa Ross
From: Pingfan Liu <kernelfans@gmail.com>
commit 52416ffcf823ee11aa19792715664ab94757f111 upstream.
Purgatory.ro is a standalone binary that is not linked against the rest of
the kernel. Its image is copied into an array that is linked to the
kernel, and from there kexec relocates it wherever it desires.
Unlike the debug info for vmlinux, which can be used for analyzing crash
such info is useless in purgatory.ro. And discarding them can save about
200K space.
Original:
259080 kexec-purgatory.o
Stripped debug info:
29152 kexec-purgatory.o
Signed-off-by: Pingfan Liu <kernelfans@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Steve Wahl <steve.wahl@hpe.com>
Acked-by: Dave Young <dyoung@redhat.com>
Link: https://lore.kernel.org/r/1596433788-3784-1-git-send-email-kernelfans@gmail.com
[Alyssa: fixed for LLVM_IAS=1 by adding -g to AFLAGS_REMOVE_*]
Signed-off-by: Alyssa Ross <hi@alyssa.is>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/purgatory/Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/arch/x86/purgatory/Makefile
+++ b/arch/x86/purgatory/Makefile
@@ -25,7 +25,7 @@ KCOV_INSTRUMENT := n
# make up the standalone purgatory.ro
PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
-PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss
+PURGATORY_CFLAGS := -mcmodel=large -ffreestanding -fno-zero-initialized-in-bss -g0
PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING
# Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
@@ -56,6 +56,9 @@ CFLAGS_sha256.o += $(PURGATORY_CFLAGS)
CFLAGS_REMOVE_string.o += $(PURGATORY_CFLAGS_REMOVE)
CFLAGS_string.o += $(PURGATORY_CFLAGS)
+AFLAGS_REMOVE_setup-x86_$(BITS).o += -g -Wa,-gdwarf-2
+AFLAGS_REMOVE_entry64.o += -g -Wa,-gdwarf-2
+
$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
$(call if_changed,ld)
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 19/29] Revert "ext4: fix use-after-free in ext4_xattr_set_entry"
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (17 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 18/29] x86/purgatory: Dont generate debug info for purgatory.ro Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 20/29] ext4: remove duplicate definition of ext4_xattr_ibody_inline_set() Greg Kroah-Hartman
` (13 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches,
tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, joneslee@google.com, Tudor Ambarus,
Tudor Ambarus
From: Tudor Ambarus <tudor.ambarus@linaro.org>
This reverts commit bb8592efcf8ef2f62947745d3182ea05b5256a15 which is
commit 67d7d8ad99beccd9fe92d585b87f1760dc9018e3 upstream.
The order in which patches are queued to stable matters. This patch
has a logical dependency on commit 310c097c2bdbea253d6ee4e064f3e65580ef93ac
upstream, and failing to queue the latter results in a null-ptr-deref
reported at the Link below.
In order to avoid conflicts on stable, revert the commit just so that we
can queue its prerequisite patch first and then queue the same after.
Link: https://syzkaller.appspot.com/bug?extid=d5ebf56f3b1268136afd
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ext4/xattr.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -2214,9 +2214,8 @@ int ext4_xattr_ibody_find(struct inode *
struct ext4_inode *raw_inode;
int error;
- if (!EXT4_INODE_HAS_XATTR_SPACE(inode))
+ if (EXT4_I(inode)->i_extra_isize == 0)
return 0;
-
raw_inode = ext4_raw_inode(&is->iloc);
header = IHDR(inode, raw_inode);
is->s.base = is->s.first = IFIRST(header);
@@ -2244,9 +2243,8 @@ int ext4_xattr_ibody_inline_set(handle_t
struct ext4_xattr_search *s = &is->s;
int error;
- if (!EXT4_INODE_HAS_XATTR_SPACE(inode))
+ if (EXT4_I(inode)->i_extra_isize == 0)
return -ENOSPC;
-
error = ext4_xattr_set_entry(i, s, handle, inode, false /* is_block */);
if (error)
return error;
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 20/29] ext4: remove duplicate definition of ext4_xattr_ibody_inline_set()
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (18 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 19/29] Revert "ext4: fix use-after-free in ext4_xattr_set_entry" Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 21/29] ext4: fix use-after-free in ext4_xattr_set_entry Greg Kroah-Hartman
` (12 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ritesh Harjani, Theodore Tso,
Tudor Ambarus
From: Ritesh Harjani <riteshh@linux.ibm.com>
[ Upstream commit 310c097c2bdbea253d6ee4e064f3e65580ef93ac ]
ext4_xattr_ibody_inline_set() & ext4_xattr_ibody_set() have the exact
same definition. Hence remove ext4_xattr_ibody_inline_set() and all
its call references. Convert the callers of it to call
ext4_xattr_ibody_set() instead.
[ Modified to preserve ext4_xattr_ibody_set() and remove
ext4_xattr_ibody_inline_set() instead. -- TYT ]
Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com>
Link: https://lore.kernel.org/r/fd566b799bbbbe9b668eb5eecde5b5e319e3694f.1622685482.git.riteshh@linux.ibm.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ext4/inline.c | 11 +++++------
fs/ext4/xattr.c | 26 +-------------------------
fs/ext4/xattr.h | 6 +++---
3 files changed, 9 insertions(+), 34 deletions(-)
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -206,7 +206,7 @@ out:
/*
* write the buffer to the inline inode.
* If 'create' is set, we don't need to do the extra copy in the xattr
- * value since it is already handled by ext4_xattr_ibody_inline_set.
+ * value since it is already handled by ext4_xattr_ibody_set.
* That saves us one memcpy.
*/
static void ext4_write_inline_data(struct inode *inode, struct ext4_iloc *iloc,
@@ -288,7 +288,7 @@ static int ext4_create_inline_data(handl
BUG_ON(!is.s.not_found);
- error = ext4_xattr_ibody_inline_set(handle, inode, &i, &is);
+ error = ext4_xattr_ibody_set(handle, inode, &i, &is);
if (error) {
if (error == -ENOSPC)
ext4_clear_inode_state(inode,
@@ -360,7 +360,7 @@ static int ext4_update_inline_data(handl
i.value = value;
i.value_len = len;
- error = ext4_xattr_ibody_inline_set(handle, inode, &i, &is);
+ error = ext4_xattr_ibody_set(handle, inode, &i, &is);
if (error)
goto out;
@@ -433,7 +433,7 @@ static int ext4_destroy_inline_data_nolo
if (error)
goto out;
- error = ext4_xattr_ibody_inline_set(handle, inode, &i, &is);
+ error = ext4_xattr_ibody_set(handle, inode, &i, &is);
if (error)
goto out;
@@ -1977,8 +1977,7 @@ int ext4_inline_data_truncate(struct ino
i.value = value;
i.value_len = i_size > EXT4_MIN_INLINE_DATA_SIZE ?
i_size - EXT4_MIN_INLINE_DATA_SIZE : 0;
- err = ext4_xattr_ibody_inline_set(handle, inode,
- &i, &is);
+ err = ext4_xattr_ibody_set(handle, inode, &i, &is);
if (err)
goto out_error;
}
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -2235,31 +2235,7 @@ int ext4_xattr_ibody_find(struct inode *
return 0;
}
-int ext4_xattr_ibody_inline_set(handle_t *handle, struct inode *inode,
- struct ext4_xattr_info *i,
- struct ext4_xattr_ibody_find *is)
-{
- struct ext4_xattr_ibody_header *header;
- struct ext4_xattr_search *s = &is->s;
- int error;
-
- if (EXT4_I(inode)->i_extra_isize == 0)
- return -ENOSPC;
- error = ext4_xattr_set_entry(i, s, handle, inode, false /* is_block */);
- if (error)
- return error;
- header = IHDR(inode, ext4_raw_inode(&is->iloc));
- if (!IS_LAST_ENTRY(s->first)) {
- header->h_magic = cpu_to_le32(EXT4_XATTR_MAGIC);
- ext4_set_inode_state(inode, EXT4_STATE_XATTR);
- } else {
- header->h_magic = cpu_to_le32(0);
- ext4_clear_inode_state(inode, EXT4_STATE_XATTR);
- }
- return 0;
-}
-
-static int ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
+int ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is)
{
--- a/fs/ext4/xattr.h
+++ b/fs/ext4/xattr.h
@@ -199,9 +199,9 @@ extern int ext4_xattr_ibody_find(struct
extern int ext4_xattr_ibody_get(struct inode *inode, int name_index,
const char *name,
void *buffer, size_t buffer_size);
-extern int ext4_xattr_ibody_inline_set(handle_t *handle, struct inode *inode,
- struct ext4_xattr_info *i,
- struct ext4_xattr_ibody_find *is);
+extern int ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
+ struct ext4_xattr_info *i,
+ struct ext4_xattr_ibody_find *is);
extern struct mb_cache *ext4_xattr_create_cache(void);
extern void ext4_xattr_destroy_cache(struct mb_cache *);
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 21/29] ext4: fix use-after-free in ext4_xattr_set_entry
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (19 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 20/29] ext4: remove duplicate definition of ext4_xattr_ibody_inline_set() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 22/29] udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM) Greg Kroah-Hartman
` (11 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, stable, Hulk Robot, Baokun Li,
Ritesh Harjani (IBM), Jan Kara, Theodore Tso, Tudor Ambarus
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit 67d7d8ad99beccd9fe92d585b87f1760dc9018e3 ]
Hulk Robot reported a issue:
==================================================================
BUG: KASAN: use-after-free in ext4_xattr_set_entry+0x18ab/0x3500
Write of size 4105 at addr ffff8881675ef5f4 by task syz-executor.0/7092
CPU: 1 PID: 7092 Comm: syz-executor.0 Not tainted 4.19.90-dirty #17
Call Trace:
[...]
memcpy+0x34/0x50 mm/kasan/kasan.c:303
ext4_xattr_set_entry+0x18ab/0x3500 fs/ext4/xattr.c:1747
ext4_xattr_ibody_inline_set+0x86/0x2a0 fs/ext4/xattr.c:2205
ext4_xattr_set_handle+0x940/0x1300 fs/ext4/xattr.c:2386
ext4_xattr_set+0x1da/0x300 fs/ext4/xattr.c:2498
__vfs_setxattr+0x112/0x170 fs/xattr.c:149
__vfs_setxattr_noperm+0x11b/0x2a0 fs/xattr.c:180
__vfs_setxattr_locked+0x17b/0x250 fs/xattr.c:238
vfs_setxattr+0xed/0x270 fs/xattr.c:255
setxattr+0x235/0x330 fs/xattr.c:520
path_setxattr+0x176/0x190 fs/xattr.c:539
__do_sys_lsetxattr fs/xattr.c:561 [inline]
__se_sys_lsetxattr fs/xattr.c:557 [inline]
__x64_sys_lsetxattr+0xc2/0x160 fs/xattr.c:557
do_syscall_64+0xdf/0x530 arch/x86/entry/common.c:298
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x459fe9
RSP: 002b:00007fa5e54b4c08 EFLAGS: 00000246 ORIG_RAX: 00000000000000bd
RAX: ffffffffffffffda RBX: 000000000051bf60 RCX: 0000000000459fe9
RDX: 00000000200003c0 RSI: 0000000020000180 RDI: 0000000020000140
RBP: 000000000051bf60 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000001009 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ffc73c93fc0 R14: 000000000051bf60 R15: 00007fa5e54b4d80
[...]
==================================================================
Above issue may happen as follows:
-------------------------------------
ext4_xattr_set
ext4_xattr_set_handle
ext4_xattr_ibody_find
>> s->end < s->base
>> no EXT4_STATE_XATTR
>> xattr_check_inode is not executed
ext4_xattr_ibody_set
ext4_xattr_set_entry
>> size_t min_offs = s->end - s->base
>> UAF in memcpy
we can easily reproduce this problem with the following commands:
mkfs.ext4 -F /dev/sda
mount -o debug_want_extra_isize=128 /dev/sda /mnt
touch /mnt/file
setfattr -n user.cat -v `seq -s z 4096|tr -d '[:digit:]'` /mnt/file
In ext4_xattr_ibody_find, we have the following assignment logic:
header = IHDR(inode, raw_inode)
= raw_inode + EXT4_GOOD_OLD_INODE_SIZE + i_extra_isize
is->s.base = IFIRST(header)
= header + sizeof(struct ext4_xattr_ibody_header)
is->s.end = raw_inode + s_inode_size
In ext4_xattr_set_entry
min_offs = s->end - s->base
= s_inode_size - EXT4_GOOD_OLD_INODE_SIZE - i_extra_isize -
sizeof(struct ext4_xattr_ibody_header)
last = s->first
free = min_offs - ((void *)last - s->base) - sizeof(__u32)
= s_inode_size - EXT4_GOOD_OLD_INODE_SIZE - i_extra_isize -
sizeof(struct ext4_xattr_ibody_header) - sizeof(__u32)
In the calculation formula, all values except s_inode_size and
i_extra_size are fixed values. When i_extra_size is the maximum value
s_inode_size - EXT4_GOOD_OLD_INODE_SIZE, min_offs is -4 and free is -8.
The value overflows. As a result, the preceding issue is triggered when
memcpy is executed.
Therefore, when finding xattr or setting xattr, check whether
there is space for storing xattr in the inode to resolve this issue.
Cc: stable@kernel.org
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20220616021358.2504451-3-libaokun1@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/ext4/xattr.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -2214,8 +2214,9 @@ int ext4_xattr_ibody_find(struct inode *
struct ext4_inode *raw_inode;
int error;
- if (EXT4_I(inode)->i_extra_isize == 0)
+ if (!EXT4_INODE_HAS_XATTR_SPACE(inode))
return 0;
+
raw_inode = ext4_raw_inode(&is->iloc);
header = IHDR(inode, raw_inode);
is->s.base = is->s.first = IFIRST(header);
@@ -2243,8 +2244,9 @@ int ext4_xattr_ibody_set(handle_t *handl
struct ext4_xattr_search *s = &is->s;
int error;
- if (EXT4_I(inode)->i_extra_isize == 0)
+ if (!EXT4_INODE_HAS_XATTR_SPACE(inode))
return -ENOSPC;
+
error = ext4_xattr_set_entry(i, s, handle, inode, false /* is_block */);
if (error)
return error;
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 22/29] udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM).
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (20 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 21/29] ext4: fix use-after-free in ext4_xattr_set_entry Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 23/29] tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct() Greg Kroah-Hartman
` (10 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Jakub Kicinski,
Ziyang Xuan
From: Kuniyuki Iwashima <kuniyu@amazon.com>
commit 21985f43376cee092702d6cb963ff97a9d2ede68 upstream.
Commit 4b340ae20d0e ("IPv6: Complete IPV6_DONTFRAG support") forgot
to add a change to free inet6_sk(sk)->rxpmtu while converting an IPv6
socket into IPv4 with IPV6_ADDRFORM. After conversion, sk_prot is
changed to udp_prot and ->destroy() never cleans it up, resulting in
a memory leak.
This is due to the discrepancy between inet6_destroy_sock() and
IPV6_ADDRFORM, so let's call inet6_destroy_sock() from IPV6_ADDRFORM
to remove the difference.
However, this is not enough for now because rxpmtu can be changed
without lock_sock() after commit 03485f2adcde ("udpv6: Add lockless
sendmsg() support"). We will fix this case in the following patch.
Note we will rename inet6_destroy_sock() to inet6_cleanup_sock() and
remove unnecessary inet6_destroy_sock() calls in sk_prot->destroy()
in the future.
Fixes: 4b340ae20d0e ("IPv6: Complete IPV6_DONTFRAG support")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/ipv6.h | 1 +
net/ipv6/af_inet6.c | 6 ++++++
net/ipv6/ipv6_sockglue.c | 20 ++++++++------------
3 files changed, 15 insertions(+), 12 deletions(-)
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -1040,6 +1040,7 @@ void ipv6_icmp_error(struct sock *sk, st
void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 info);
void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
+void inet6_cleanup_sock(struct sock *sk);
int inet6_release(struct socket *sock);
int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -502,6 +502,12 @@ void inet6_destroy_sock(struct sock *sk)
}
EXPORT_SYMBOL_GPL(inet6_destroy_sock);
+void inet6_cleanup_sock(struct sock *sk)
+{
+ inet6_destroy_sock(sk);
+}
+EXPORT_SYMBOL_GPL(inet6_cleanup_sock);
+
/*
* This does both peername and sockname.
*/
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -178,9 +178,6 @@ static int do_ipv6_setsockopt(struct soc
if (optlen < sizeof(int))
goto e_inval;
if (val == PF_INET) {
- struct ipv6_txoptions *opt;
- struct sk_buff *pktopt;
-
if (sk->sk_type == SOCK_RAW)
break;
@@ -211,7 +208,6 @@ static int do_ipv6_setsockopt(struct soc
break;
}
- fl6_free_socklist(sk);
__ipv6_sock_mc_close(sk);
__ipv6_sock_ac_close(sk);
@@ -246,14 +242,14 @@ static int do_ipv6_setsockopt(struct soc
sk->sk_socket->ops = &inet_dgram_ops;
sk->sk_family = PF_INET;
}
- opt = xchg((__force struct ipv6_txoptions **)&np->opt,
- NULL);
- if (opt) {
- atomic_sub(opt->tot_len, &sk->sk_omem_alloc);
- txopt_put(opt);
- }
- pktopt = xchg(&np->pktoptions, NULL);
- kfree_skb(pktopt);
+
+ /* Disable all options not to allocate memory anymore,
+ * but there is still a race. See the lockless path
+ * in udpv6_sendmsg() and ipv6_local_rxpmtu().
+ */
+ np->rxopt.all = 0;
+
+ inet6_cleanup_sock(sk);
/*
* ... and add it to the refcnt debug socks count
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 23/29] tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct().
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (21 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 22/29] udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM) Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 24/29] inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy() Greg Kroah-Hartman
` (9 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Jakub Kicinski,
Ziyang Xuan
From: Kuniyuki Iwashima <kuniyu@amazon.com>
commit d38afeec26ed4739c640bf286c270559aab2ba5f upstream.
Originally, inet6_sk(sk)->XXX were changed under lock_sock(), so we were
able to clean them up by calling inet6_destroy_sock() during the IPv6 ->
IPv4 conversion by IPV6_ADDRFORM. However, commit 03485f2adcde ("udpv6:
Add lockless sendmsg() support") added a lockless memory allocation path,
which could cause a memory leak:
setsockopt(IPV6_ADDRFORM) sendmsg()
+-----------------------+ +-------+
- do_ipv6_setsockopt(sk, ...) - udpv6_sendmsg(sk, ...)
- sockopt_lock_sock(sk) ^._ called via udpv6_prot
- lock_sock(sk) before WRITE_ONCE()
- WRITE_ONCE(sk->sk_prot, &tcp_prot)
- inet6_destroy_sock() - if (!corkreq)
- sockopt_release_sock(sk) - ip6_make_skb(sk, ...)
- release_sock(sk) ^._ lockless fast path for
the non-corking case
- __ip6_append_data(sk, ...)
- ipv6_local_rxpmtu(sk, ...)
- xchg(&np->rxpmtu, skb)
^._ rxpmtu is never freed.
- goto out_no_dst;
- lock_sock(sk)
For now, rxpmtu is only the case, but not to miss the future change
and a similar bug fixed in commit e27326009a3d ("net: ping6: Fix
memleak in ipv6_renew_options()."), let's set a new function to IPv6
sk->sk_destruct() and call inet6_cleanup_sock() there. Since the
conversion does not change sk->sk_destruct(), we can guarantee that
we can clean up IPv6 resources finally.
We can now remove all inet6_destroy_sock() calls from IPv6 protocol
specific ->destroy() functions, but such changes are invasive to
backport. So they can be posted as a follow-up later for net-next.
Fixes: 03485f2adcde ("udpv6: Add lockless sendmsg() support")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/ipv6.h | 1 +
include/net/udp.h | 2 +-
include/net/udplite.h | 8 --------
net/ipv4/udp.c | 9 ++++++---
net/ipv4/udplite.c | 8 ++++++++
net/ipv6/af_inet6.c | 8 +++++++-
net/ipv6/udp.c | 15 ++++++++++++++-
net/ipv6/udp_impl.h | 1 +
net/ipv6/udplite.c | 9 ++++++++-
9 files changed, 46 insertions(+), 15 deletions(-)
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -1041,6 +1041,7 @@ void ipv6_local_error(struct sock *sk, i
void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);
void inet6_cleanup_sock(struct sock *sk);
+void inet6_sock_destruct(struct sock *sk);
int inet6_release(struct socket *sock);
int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);
int inet6_getname(struct socket *sock, struct sockaddr *uaddr,
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -254,7 +254,7 @@ static inline int udp_rqueue_get(struct
}
/* net/ipv4/udp.c */
-void udp_destruct_sock(struct sock *sk);
+void udp_destruct_common(struct sock *sk);
void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len);
int __udp_enqueue_schedule_skb(struct sock *sk, struct sk_buff *skb);
void udp_skb_destructor(struct sock *sk, struct sk_buff *skb);
--- a/include/net/udplite.h
+++ b/include/net/udplite.h
@@ -24,14 +24,6 @@ static __inline__ int udplite_getfrag(vo
return copy_from_iter_full(to, len, &msg->msg_iter) ? 0 : -EFAULT;
}
-/* Designate sk as UDP-Lite socket */
-static inline int udplite_sk_init(struct sock *sk)
-{
- udp_init_sock(sk);
- udp_sk(sk)->pcflag = UDPLITE_BIT;
- return 0;
-}
-
/*
* Checksumming routines
*/
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -1458,7 +1458,7 @@ drop:
}
EXPORT_SYMBOL_GPL(__udp_enqueue_schedule_skb);
-void udp_destruct_sock(struct sock *sk)
+void udp_destruct_common(struct sock *sk)
{
/* reclaim completely the forward allocated memory */
struct udp_sock *up = udp_sk(sk);
@@ -1471,10 +1471,14 @@ void udp_destruct_sock(struct sock *sk)
kfree_skb(skb);
}
udp_rmem_release(sk, total, 0, true);
+}
+EXPORT_SYMBOL_GPL(udp_destruct_common);
+static void udp_destruct_sock(struct sock *sk)
+{
+ udp_destruct_common(sk);
inet_sock_destruct(sk);
}
-EXPORT_SYMBOL_GPL(udp_destruct_sock);
int udp_init_sock(struct sock *sk)
{
@@ -1482,7 +1486,6 @@ int udp_init_sock(struct sock *sk)
sk->sk_destruct = udp_destruct_sock;
return 0;
}
-EXPORT_SYMBOL_GPL(udp_init_sock);
void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len)
{
--- a/net/ipv4/udplite.c
+++ b/net/ipv4/udplite.c
@@ -20,6 +20,14 @@
struct udp_table udplite_table __read_mostly;
EXPORT_SYMBOL(udplite_table);
+/* Designate sk as UDP-Lite socket */
+static int udplite_sk_init(struct sock *sk)
+{
+ udp_init_sock(sk);
+ udp_sk(sk)->pcflag = UDPLITE_BIT;
+ return 0;
+}
+
static int udplite_rcv(struct sk_buff *skb)
{
return __udp4_lib_rcv(skb, &udplite_table, IPPROTO_UDPLITE);
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -107,6 +107,12 @@ static __inline__ struct ipv6_pinfo *ine
return (struct ipv6_pinfo *)(((u8 *)sk) + offset);
}
+void inet6_sock_destruct(struct sock *sk)
+{
+ inet6_cleanup_sock(sk);
+ inet_sock_destruct(sk);
+}
+
static int inet6_create(struct net *net, struct socket *sock, int protocol,
int kern)
{
@@ -199,7 +205,7 @@ lookup_protocol:
inet->hdrincl = 1;
}
- sk->sk_destruct = inet_sock_destruct;
+ sk->sk_destruct = inet6_sock_destruct;
sk->sk_family = PF_INET6;
sk->sk_protocol = protocol;
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -66,6 +66,19 @@ static bool udp6_lib_exact_dif_match(str
return false;
}
+static void udpv6_destruct_sock(struct sock *sk)
+{
+ udp_destruct_common(sk);
+ inet6_sock_destruct(sk);
+}
+
+int udpv6_init_sock(struct sock *sk)
+{
+ skb_queue_head_init(&udp_sk(sk)->reader_queue);
+ sk->sk_destruct = udpv6_destruct_sock;
+ return 0;
+}
+
static u32 udp6_ehashfn(const struct net *net,
const struct in6_addr *laddr,
const u16 lport,
@@ -1595,7 +1608,7 @@ struct proto udpv6_prot = {
.connect = ip6_datagram_connect,
.disconnect = udp_disconnect,
.ioctl = udp_ioctl,
- .init = udp_init_sock,
+ .init = udpv6_init_sock,
.destroy = udpv6_destroy_sock,
.setsockopt = udpv6_setsockopt,
.getsockopt = udpv6_getsockopt,
--- a/net/ipv6/udp_impl.h
+++ b/net/ipv6/udp_impl.h
@@ -12,6 +12,7 @@ int __udp6_lib_rcv(struct sk_buff *, str
void __udp6_lib_err(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int,
__be32, struct udp_table *);
+int udpv6_init_sock(struct sock *sk);
int udp_v6_get_port(struct sock *sk, unsigned short snum);
int udpv6_getsockopt(struct sock *sk, int level, int optname,
--- a/net/ipv6/udplite.c
+++ b/net/ipv6/udplite.c
@@ -15,6 +15,13 @@
#include <linux/proc_fs.h>
#include "udp_impl.h"
+static int udplitev6_sk_init(struct sock *sk)
+{
+ udpv6_init_sock(sk);
+ udp_sk(sk)->pcflag = UDPLITE_BIT;
+ return 0;
+}
+
static int udplitev6_rcv(struct sk_buff *skb)
{
return __udp6_lib_rcv(skb, &udplite_table, IPPROTO_UDPLITE);
@@ -40,7 +47,7 @@ struct proto udplitev6_prot = {
.connect = ip6_datagram_connect,
.disconnect = udp_disconnect,
.ioctl = udp_ioctl,
- .init = udplite_sk_init,
+ .init = udplitev6_sk_init,
.destroy = udpv6_destroy_sock,
.setsockopt = udpv6_setsockopt,
.getsockopt = udpv6_getsockopt,
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 24/29] inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy().
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (22 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 23/29] tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 25/29] dccp: Call inet6_destroy_sock() via sk->sk_destruct() Greg Kroah-Hartman
` (8 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Matthieu Baerts,
David S. Miller, Ziyang Xuan
From: Kuniyuki Iwashima <kuniyu@amazon.com>
commit b5fc29233d28be7a3322848ebe73ac327559cdb9 upstream.
After commit d38afeec26ed ("tcp/udp: Call inet6_destroy_sock()
in IPv6 sk->sk_destruct()."), we call inet6_destroy_sock() in
sk->sk_destruct() by setting inet6_sock_destruct() to it to make
sure we do not leak inet6-specific resources.
Now we can remove unnecessary inet6_destroy_sock() calls in
sk->sk_prot->destroy().
DCCP and SCTP have their own sk->sk_destruct() function, so we
change them separately in the following patches.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ipv6/ping.c | 6 ------
net/ipv6/raw.c | 2 --
net/ipv6/tcp_ipv6.c | 8 +-------
net/ipv6/udp.c | 2 --
net/l2tp/l2tp_ip6.c | 2 --
5 files changed, 1 insertion(+), 19 deletions(-)
--- a/net/ipv6/ping.c
+++ b/net/ipv6/ping.c
@@ -27,11 +27,6 @@
#include <linux/proc_fs.h>
#include <net/ping.h>
-static void ping_v6_destroy(struct sock *sk)
-{
- inet6_destroy_sock(sk);
-}
-
/* Compatibility glue so we can support IPv6 when it's compiled as a module */
static int dummy_ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len,
int *addr_len)
@@ -175,7 +170,6 @@ struct proto pingv6_prot = {
.owner = THIS_MODULE,
.init = ping_init_sock,
.close = ping_close,
- .destroy = ping_v6_destroy,
.connect = ip6_datagram_connect_v6_only,
.disconnect = __udp_disconnect,
.setsockopt = ipv6_setsockopt,
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -1259,8 +1259,6 @@ static void raw6_destroy(struct sock *sk
lock_sock(sk);
ip6_flush_pending_frames(sk);
release_sock(sk);
-
- inet6_destroy_sock(sk);
}
static int rawv6_init_sk(struct sock *sk)
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1792,12 +1792,6 @@ static int tcp_v6_init_sock(struct sock
return 0;
}
-static void tcp_v6_destroy_sock(struct sock *sk)
-{
- tcp_v4_destroy_sock(sk);
- inet6_destroy_sock(sk);
-}
-
#ifdef CONFIG_PROC_FS
/* Proc filesystem TCPv6 sock list dumping. */
static void get_openreq6(struct seq_file *seq,
@@ -1990,7 +1984,7 @@ struct proto tcpv6_prot = {
.accept = inet_csk_accept,
.ioctl = tcp_ioctl,
.init = tcp_v6_init_sock,
- .destroy = tcp_v6_destroy_sock,
+ .destroy = tcp_v4_destroy_sock,
.shutdown = tcp_shutdown,
.setsockopt = tcp_setsockopt,
.getsockopt = tcp_getsockopt,
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -1503,8 +1503,6 @@ void udpv6_destroy_sock(struct sock *sk)
if (encap_destroy)
encap_destroy(sk);
}
-
- inet6_destroy_sock(sk);
}
/*
--- a/net/l2tp/l2tp_ip6.c
+++ b/net/l2tp/l2tp_ip6.c
@@ -272,8 +272,6 @@ static void l2tp_ip6_destroy_sock(struct
if (tunnel)
l2tp_tunnel_delete(tunnel);
-
- inet6_destroy_sock(sk);
}
static int l2tp_ip6_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len)
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 25/29] dccp: Call inet6_destroy_sock() via sk->sk_destruct().
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (23 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 24/29] inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 26/29] sctp: " Greg Kroah-Hartman
` (7 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, David S. Miller,
Ziyang Xuan
From: Kuniyuki Iwashima <kuniyu@amazon.com>
commit 1651951ebea54970e0bda60c638fc2eee7a6218f upstream.
After commit d38afeec26ed ("tcp/udp: Call inet6_destroy_sock()
in IPv6 sk->sk_destruct()."), we call inet6_destroy_sock() in
sk->sk_destruct() by setting inet6_sock_destruct() to it to make
sure we do not leak inet6-specific resources.
DCCP sets its own sk->sk_destruct() in the dccp_init_sock(), and
DCCPv6 socket shares it by calling the same init function via
dccp_v6_init_sock().
To call inet6_sock_destruct() from DCCPv6 sk->sk_destruct(), we
export it and set dccp_v6_sk_destruct() in the init function.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/dccp/dccp.h | 1 +
net/dccp/ipv6.c | 15 ++++++++-------
net/dccp/proto.c | 8 +++++++-
net/ipv6/af_inet6.c | 1 +
4 files changed, 17 insertions(+), 8 deletions(-)
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -291,6 +291,7 @@ int dccp_rcv_state_process(struct sock *
int dccp_rcv_established(struct sock *sk, struct sk_buff *skb,
const struct dccp_hdr *dh, const unsigned int len);
+void dccp_destruct_common(struct sock *sk);
int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized);
void dccp_destroy_sock(struct sock *sk);
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -1000,6 +1000,12 @@ static const struct inet_connection_sock
#endif
};
+static void dccp_v6_sk_destruct(struct sock *sk)
+{
+ dccp_destruct_common(sk);
+ inet6_sock_destruct(sk);
+}
+
/* NOTE: A lot of things set to zero explicitly by call to
* sk_alloc() so need not be done here.
*/
@@ -1012,17 +1018,12 @@ static int dccp_v6_init_sock(struct sock
if (unlikely(!dccp_v6_ctl_sock_initialized))
dccp_v6_ctl_sock_initialized = 1;
inet_csk(sk)->icsk_af_ops = &dccp_ipv6_af_ops;
+ sk->sk_destruct = dccp_v6_sk_destruct;
}
return err;
}
-static void dccp_v6_destroy_sock(struct sock *sk)
-{
- dccp_destroy_sock(sk);
- inet6_destroy_sock(sk);
-}
-
static struct timewait_sock_ops dccp6_timewait_sock_ops = {
.twsk_obj_size = sizeof(struct dccp6_timewait_sock),
};
@@ -1045,7 +1046,7 @@ static struct proto dccp_v6_prot = {
.accept = inet_csk_accept,
.get_port = inet_csk_get_port,
.shutdown = dccp_shutdown,
- .destroy = dccp_v6_destroy_sock,
+ .destroy = dccp_destroy_sock,
.orphan_count = &dccp_orphan_count,
.max_header = MAX_DCCP_HEADER,
.obj_size = sizeof(struct dccp6_sock),
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -174,12 +174,18 @@ const char *dccp_packet_name(const int t
EXPORT_SYMBOL_GPL(dccp_packet_name);
-static void dccp_sk_destruct(struct sock *sk)
+void dccp_destruct_common(struct sock *sk)
{
struct dccp_sock *dp = dccp_sk(sk);
ccid_hc_tx_delete(dp->dccps_hc_tx_ccid, sk);
dp->dccps_hc_tx_ccid = NULL;
+}
+EXPORT_SYMBOL_GPL(dccp_destruct_common);
+
+static void dccp_sk_destruct(struct sock *sk)
+{
+ dccp_destruct_common(sk);
inet_sock_destruct(sk);
}
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -112,6 +112,7 @@ void inet6_sock_destruct(struct sock *sk
inet6_cleanup_sock(sk);
inet_sock_destruct(sk);
}
+EXPORT_SYMBOL_GPL(inet6_sock_destruct);
static int inet6_create(struct net *net, struct socket *sock, int protocol,
int kern)
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 26/29] sctp: Call inet6_destroy_sock() via sk->sk_destruct().
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (24 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 25/29] dccp: Call inet6_destroy_sock() via sk->sk_destruct() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 27/29] counter: 104-quad-8: Fix race condition between FLAG and CNTR reads Greg Kroah-Hartman
` (6 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, David S. Miller,
Ziyang Xuan
From: Kuniyuki Iwashima <kuniyu@amazon.com>
commit 6431b0f6ff1633ae598667e4cdd93830074a03e8 upstream.
After commit d38afeec26ed ("tcp/udp: Call inet6_destroy_sock()
in IPv6 sk->sk_destruct()."), we call inet6_destroy_sock() in
sk->sk_destruct() by setting inet6_sock_destruct() to it to make
sure we do not leak inet6-specific resources.
SCTP sets its own sk->sk_destruct() in the sctp_init_sock(), and
SCTPv6 socket reuses it as the init function.
To call inet6_sock_destruct() from SCTPv6 sk->sk_destruct(), we
set sctp_v6_destruct_sock() in a new init function.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/sctp/socket.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -4828,13 +4828,17 @@ static void sctp_destroy_sock(struct soc
}
/* Triggered when there are no references on the socket anymore */
-static void sctp_destruct_sock(struct sock *sk)
+static void sctp_destruct_common(struct sock *sk)
{
struct sctp_sock *sp = sctp_sk(sk);
/* Free up the HMAC transform. */
crypto_free_shash(sp->hmac);
+}
+static void sctp_destruct_sock(struct sock *sk)
+{
+ sctp_destruct_common(sk);
inet_sock_destruct(sk);
}
@@ -8764,7 +8768,7 @@ void sctp_copy_sock(struct sock *newsk,
sctp_sk(newsk)->reuse = sp->reuse;
newsk->sk_shutdown = sk->sk_shutdown;
- newsk->sk_destruct = sctp_destruct_sock;
+ newsk->sk_destruct = sk->sk_destruct;
newsk->sk_family = sk->sk_family;
newsk->sk_protocol = IPPROTO_SCTP;
newsk->sk_backlog_rcv = sk->sk_prot->backlog_rcv;
@@ -8984,11 +8988,20 @@ struct proto sctp_prot = {
#if IS_ENABLED(CONFIG_IPV6)
-#include <net/transp_v6.h>
-static void sctp_v6_destroy_sock(struct sock *sk)
+static void sctp_v6_destruct_sock(struct sock *sk)
+{
+ sctp_destruct_common(sk);
+ inet6_sock_destruct(sk);
+}
+
+static int sctp_v6_init_sock(struct sock *sk)
{
- sctp_destroy_sock(sk);
- inet6_destroy_sock(sk);
+ int ret = sctp_init_sock(sk);
+
+ if (!ret)
+ sk->sk_destruct = sctp_v6_destruct_sock;
+
+ return ret;
}
struct proto sctpv6_prot = {
@@ -8998,8 +9011,8 @@ struct proto sctpv6_prot = {
.disconnect = sctp_disconnect,
.accept = sctp_accept,
.ioctl = sctp_ioctl,
- .init = sctp_init_sock,
- .destroy = sctp_v6_destroy_sock,
+ .init = sctp_v6_init_sock,
+ .destroy = sctp_destroy_sock,
.shutdown = sctp_shutdown,
.setsockopt = sctp_setsockopt,
.getsockopt = sctp_getsockopt,
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 27/29] counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (25 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 26/29] sctp: " Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 28/29] iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() Greg Kroah-Hartman
` (5 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, William Breathitt Gray
From: William Breathitt Gray <william.gray@linaro.org>
commit 4aa3b75c74603c3374877d5fd18ad9cc3a9a62ed upstream.
The Counter (CNTR) register is 24 bits wide, but we can have an
effective 25-bit count value by setting bit 24 to the XOR of the Borrow
flag and Carry flag. The flags can be read from the FLAG register, but a
race condition exists: the Borrow flag and Carry flag are instantaneous
and could change by the time the count value is read from the CNTR
register.
Since the race condition could result in an incorrect 25-bit count
value, remove support for 25-bit count values from this driver;
hard-coded maximum count values are replaced by a LS7267_CNTR_MAX define
for consistency and clarity.
Fixes: 28e5d3bb0325 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
Cc: <stable@vger.kernel.org> # 6.1.x
Cc: <stable@vger.kernel.org> # 6.2.x
Link: https://lore.kernel.org/r/20230312231554.134858-1-william.gray@linaro.org/
Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/iio/counter/104-quad-8.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
--- a/drivers/iio/counter/104-quad-8.c
+++ b/drivers/iio/counter/104-quad-8.c
@@ -61,10 +61,6 @@ struct quad8_iio {
#define QUAD8_REG_CHAN_OP 0x11
#define QUAD8_REG_INDEX_INPUT_LEVELS 0x16
-/* Borrow Toggle flip-flop */
-#define QUAD8_FLAG_BT BIT(0)
-/* Carry Toggle flip-flop */
-#define QUAD8_FLAG_CT BIT(1)
/* Error flag */
#define QUAD8_FLAG_E BIT(4)
/* Up/Down flag */
@@ -97,9 +93,6 @@ static int quad8_read_raw(struct iio_dev
{
struct quad8_iio *const priv = iio_priv(indio_dev);
const int base_offset = priv->base + 2 * chan->channel;
- unsigned int flags;
- unsigned int borrow;
- unsigned int carry;
int i;
switch (mask) {
@@ -110,12 +103,7 @@ static int quad8_read_raw(struct iio_dev
return IIO_VAL_INT;
}
- flags = inb(base_offset + 1);
- borrow = flags & QUAD8_FLAG_BT;
- carry = !!(flags & QUAD8_FLAG_CT);
-
- /* Borrow XOR Carry effectively doubles count range */
- *val = (borrow ^ carry) << 24;
+ *val = 0;
/* Reset Byte Pointer; transfer Counter to Output Latch */
outb(QUAD8_CTR_RLD | QUAD8_RLD_RESET_BP | QUAD8_RLD_CNTR_OUT,
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 28/29] iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger()
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (26 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 27/29] counter: 104-quad-8: Fix race condition between FLAG and CNTR reads Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 29/29] ASN.1: Fix check for strdup() success Greg Kroah-Hartman
` (4 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Jonathan Cameron
From: Dan Carpenter <error27@gmail.com>
commit 73a428b37b9b538f8f8fe61caa45e7f243bab87c upstream.
The at91_adc_allocate_trigger() function is supposed to return error
pointers. Returning a NULL will cause an Oops.
Fixes: 5e1a1da0f8c9 ("iio: adc: at91-sama5d2_adc: add hw trigger and buffer support")
Signed-off-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/r/5d728f9d-31d1-410d-a0b3-df6a63a2c8ba@kili.mountain
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/iio/adc/at91-sama5d2_adc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/iio/adc/at91-sama5d2_adc.c
+++ b/drivers/iio/adc/at91-sama5d2_adc.c
@@ -989,7 +989,7 @@ static struct iio_trigger *at91_adc_allo
trig = devm_iio_trigger_alloc(&indio->dev, "%s-dev%d-%s", indio->name,
indio->id, trigger_name);
if (!trig)
- return NULL;
+ return ERR_PTR(-ENOMEM);
trig->dev.parent = indio->dev.parent;
iio_trigger_set_drvdata(trig, indio);
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH 4.19 29/29] ASN.1: Fix check for strdup() success
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (27 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 28/29] iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() Greg Kroah-Hartman
@ 2023-04-24 13:18 ` Greg Kroah-Hartman
2023-04-25 1:04 ` [PATCH 4.19 00/29] 4.19.282-rc1 review Guenter Roeck
` (3 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-04-24 13:18 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ekaterina Orlova, David Woodhouse,
James Bottomley, Jarkko Sakkinen, keyrings, linux-kbuild,
David Howells, Linus Torvalds
From: Ekaterina Orlova <vorobushek.ok@gmail.com>
commit 5a43001c01691dcbd396541e6faa2c0077378f48 upstream.
It seems there is a misprint in the check of strdup() return code that
can lead to NULL pointer dereference.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: 4520c6a49af8 ("X.509: Add simple ASN.1 grammar compiler")
Signed-off-by: Ekaterina Orlova <vorobushek.ok@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Cc: keyrings@vger.kernel.org
Cc: linux-kbuild@vger.kernel.org
Link: https://lore.kernel.org/r/20230315172130.140-1-vorobushek.ok@gmail.com/
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
scripts/asn1_compiler.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/scripts/asn1_compiler.c
+++ b/scripts/asn1_compiler.c
@@ -629,7 +629,7 @@ int main(int argc, char **argv)
p = strrchr(argv[1], '/');
p = p ? p + 1 : argv[1];
grammar_name = strdup(p);
- if (!p) {
+ if (!grammar_name) {
perror(NULL);
exit(1);
}
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (28 preceding siblings ...)
2023-04-24 13:18 ` [PATCH 4.19 29/29] ASN.1: Fix check for strdup() success Greg Kroah-Hartman
@ 2023-04-25 1:04 ` Guenter Roeck
2023-04-25 10:02 ` Naresh Kamboju
` (2 subsequent siblings)
32 siblings, 0 replies; 44+ messages in thread
From: Guenter Roeck @ 2023-04-25 1:04 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow
On Mon, Apr 24, 2023 at 03:18:27PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
>
Build results:
total: 155 pass: 155 fail: 0
Qemu test results:
total: 431 pass: 431 fail: 0
Tested-by: Guenter Roeck <linux@roeck-us.net>
Guenter
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (29 preceding siblings ...)
2023-04-25 1:04 ` [PATCH 4.19 00/29] 4.19.282-rc1 review Guenter Roeck
@ 2023-04-25 10:02 ` Naresh Kamboju
2023-04-26 19:47 ` Pavel Machek
2023-04-26 21:09 ` Steven Rostedt
2023-04-25 13:39 ` Chris Paterson
2023-04-26 0:32 ` Shuah Khan
32 siblings, 2 replies; 44+ messages in thread
From: Naresh Kamboju @ 2023-04-25 10:02 UTC (permalink / raw)
To: Greg Kroah-Hartman, Steven Rostedt, Masami Hiramatsu
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, Mark Rutland
On Mon, 24 Apr 2023 at 14:39, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed, 26 Apr 2023 13:11:11 +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.282-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.
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
FYI, This is not a show stopper but worth reporting.
NOTE:
Following kernel warning notices on stable rc 4.19.282-rc1 from the
previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
this kernel warning the system is still stable and up and running.
This kernel is built with kselftest ftrace merge configs with all
required Kconfigs.
[ 0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
...
[ 0.145911] ftrace: allocating 48590 entries in 190 pages
...
[ 2.880223] WARNING: CPU: 0 PID: 0 at
include/trace/events/lock.h:13 lock_acquire+0x142/0x150
[ 2.881454] WARNING: CPU: 1 PID: 0 at
include/trace/events/lock.h:58 lock_release+0x1af/0x280
[ 2.881190] Modules linked in:
[ 2.882221] Modules linked in:
[ 2.881190] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.279-rc1 #1
[ 2.882221] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.279-rc1 #1
[ 2.881190] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.5 11/26/2020
[ 2.881190] RIP: 0010:lock_acquire+0x142/0x150
[ 2.882221] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.5 11/26/2020
[ 2.882221] RIP: 0010:lock_release+0x1af/0x280
[ 2.881190] Code: 59 48 85 c0 75 cf 45 89 cb 65 ff 0d 78 bd 23 6c
e9 24 ff ff ff 44 89 5d cc e8 9a 13 02 00 44 8b 5d cc 84 c0 0f 85 26
ff ff ff <0f> 0b e9 1f ff ff ff 0f 1f 80 00 00 00 00 8b 05 8a dc 90 01
85 c0
[ 2.881190] RSP: 0000:ffffffff95603d50 EFLAGS: 00010046
[ 2.882221] Code: ea 4c 89 e6 e8 42 80 02 01 48 8b 03 48 85 c0 75
e5 65 ff 0d 83 bf 23 6c e9 b1 fe ff ff e8 a9 15 02 00 84 c0 0f 85 bb
fe ff ff <0f> 0b e9 b4 fe ff ff e8 95 5e 41 00 85 c0 0f 84 52 ff ff ff
8b 35
[ 2.882221] RSP: 0000:ffffbacc8193bda0 EFLAGS: 00010046
[ 2.881190] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000002
[ 2.881190] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff9567fe08
[ 2.882221] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000100
[ 2.882221] RDX: ffffffff93db7bab RSI: 0000000000000001 RDI: ffffffff9567fe08
[ 2.881190] RBP: ffffffff95603d90 R08: 0000000000000001 R09: 0000000000000000
[ 2.881190] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff9567fe08
[ 2.882221] RBP: ffffbacc8193bde8 R08: 00000000483c81c9 R09: 0000000000080000
[ 2.882221] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9567fe08
[ 2.881190] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000002
[ 2.881190] FS: 0000000000000000(0000) GS:ffff8f2da7800000(0000)
knlGS:0000000000000000
[ 2.882221] R13: ffffffff93db7bab R14: ffffffff956f3f20 R15: 0000000000000001
[ 2.882221] FS: 0000000000000000(0000) GS:ffff8f2da7880000(0000)
knlGS:0000000000000000
[ 2.881190] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2.881190] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606f0
[ 2.882221] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2.882221] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606e0
[ 2.881190] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 2.881190] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 2.882221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 2.882221] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 2.881190] Call Trace:
[ 2.882221] Call Trace:
[ 2.882221] ktime_get+0x58/0x110
[ 2.881190] ktime_get+0x43/0x110
[ 2.882221] ? sched_clock_tick+0x6b/0x90
[ 2.881190] ? sched_clock_tick+0x6b/0x90
[ 2.882221] sched_clock_tick+0x6b/0x90
[ 2.881190] sched_clock_tick+0x6b/0x90
[ 2.882221] sched_clock_idle_wakeup_event+0x22/0x50
[ 2.881190] sched_clock_idle_wakeup_event+0x22/0x50
[ 2.882221] cpuidle_enter_state+0xd6/0x2e0
[ 2.881190] cpuidle_enter_state+0xd6/0x2e0
[ 2.882221] cpuidle_enter+0x17/0x20
[ 2.881190] cpuidle_enter+0x17/0x20
[ 2.882221] call_cpuidle+0x23/0x40
[ 2.881190] call_cpuidle+0x23/0x40
[ 2.882221] do_idle+0x1b9/0x240
[ 2.881190] do_idle+0x1b9/0x240
[ 2.882221] cpu_startup_entry+0x73/0x80
[ 2.881190] cpu_startup_entry+0x73/0x80
[ 2.882221] start_secondary+0x19e/0x1f0
[ 2.881190] rest_init+0x143/0x147
[ 2.882221] secondary_startup_64+0xa4/0xb0
[ 2.881190] start_kernel+0x487/0x4a9
[ 2.882221] irq event stamp: 33604
[ 2.881190] x86_64_start_reservations+0x24/0x26
[ 2.882221] hardirqs last enabled at (33603): [<ffffffff93e23771>]
tick_nohz_idle_enter+0x61/0xa0
[ 2.882221] hardirqs last disabled at (33604): [<ffffffff93db8d22>]
do_idle+0x72/0x240
[ 2.881190] x86_64_start_kernel+0x87/0x8b
[ 2.882221] softirqs last enabled at (33594): [<ffffffff94e002b6>]
__do_softirq+0x2b6/0x356
[ 2.882221] softirqs last disabled at (33579): [<ffffffff93d83a1b>]
irq_exit+0xab/0xe0
[ 2.881190] secondary_startup_64+0xa4/0xb0
[ 2.882221] ---[ end trace 257e6b641850f405 ]---
[ 2.881190] irq event stamp: 51806
[ 3.190254] thermal LNXTHERM:00: registered as thermal_zone0
[ 2.881190] hardirqs last enabled at (51805): [<ffffffff94b356ad>]
poll_idle+0x2d/0xa6
[ 2.881190] hardirqs last disabled at (51806): [<ffffffff93db7bed>]
sched_clock_idle_wakeup_event+0x1d/0x50
[ 2.881190] softirqs last enabled at (51790): [<ffffffff93d82d21>]
_local_bh_enable+0x21/0x40
[ 2.881190] softirqs last disabled at (51789): [<ffffffff93d83948>]
irq_enter+0x48/0x70
[ 3.195448] ACPI: Thermal Zone [TZ00] (28 C)
[ 2.881190] ---[ end trace 257e6b641850f406 ]---
Logs:
- https://lkft.validation.linaro.org/scheduler/job/6373184#L889
History:
-------
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16488263/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/history/
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.278-37-gc1beffa09ae6/testrun/15764758/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/log
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16487659/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/details/
- https://storage.tuxsuite.com/public/linaro/lkft/builds/2OsIodn7l10ciOlEtqVm8nzAJyc/config
## Build
* kernel: 4.19.282-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-4.19.y
* git commit: 8ca3c8d286160dca3bb13ae97a4a7a2d2fd4ad01
* git describe: v4.19.279-173-g8ca3c8d28616
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616
## Test Regressions (compared to v4.19.279-143-gcc0a9b81697f)
## Metric Regressions (compared to v4.19.279-143-gcc0a9b81697f)
## Test Fixes (compared to v4.19.279-143-gcc0a9b81697f)
## Metric Fixes (compared to v4.19.279-143-gcc0a9b81697f)
## Test result summary
total: 96887, pass: 72120, fail: 3496, skip: 21094, xfail: 177
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 108 total, 107 passed, 1 failed
* arm64: 34 total, 33 passed, 1 failed
* i386: 20 total, 19 passed, 1 failed
* mips: 22 total, 22 passed, 0 failed
* parisc: 6 total, 6 passed, 0 failed
* powerpc: 24 total, 24 passed, 0 failed
* s390: 6 total, 6 passed, 0 failed
* sh: 12 total, 12 passed, 0 failed
* sparc: 6 total, 6 passed, 0 failed
* x86_64: 28 total, 27 passed, 1 failed
## Test suites summary
* boot
* fwts
* igt-gpu-tools
* kselftest-android
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net
* kselftest-net-forwarding
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kunit
* kvm-unit-tests
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* rcutorture
* v4l2-compliance
* vdso
--
Linaro LKFT
https://lkft.linaro.org
^ permalink raw reply [flat|nested] 44+ messages in thread
* RE: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (30 preceding siblings ...)
2023-04-25 10:02 ` Naresh Kamboju
@ 2023-04-25 13:39 ` Chris Paterson
2023-04-26 0:32 ` Shuah Khan
32 siblings, 0 replies; 44+ messages in thread
From: Chris Paterson @ 2023-04-25 13:39 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable@vger.kernel.org
Cc: patches@lists.linux.dev, linux-kernel@vger.kernel.org,
torvalds@linux-foundation.org, akpm@linux-foundation.org,
linux@roeck-us.net, shuah@kernel.org, patches@kernelci.org,
lkft-triage@lists.linaro.org, pavel@denx.de, jonathanh@nvidia.com,
f.fainelli@gmail.com, sudipm.mukherjee@gmail.com,
srw@sladewatkins.net, rwarsow@gmx.de
Hello Greg,
> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Sent: Monday, April 24, 2023 2:18 PM
>
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
CIP configurations built and booted with Linux 4.19.282-rc1 (8ca3c8d28616):
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/pipelines/847551052
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/commits/linux-4.19.y
Tested-by: Chris Paterson (CIP) <chris.paterson2@renesas.com>
Kind regards, Chris
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
` (31 preceding siblings ...)
2023-04-25 13:39 ` Chris Paterson
@ 2023-04-26 0:32 ` Shuah Khan
32 siblings, 0 replies; 44+ messages in thread
From: Shuah Khan @ 2023-04-26 0:32 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, Shuah Khan
On 4/24/23 07:18, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Wed, 26 Apr 2023 13:11:11 +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.282-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.
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-25 10:02 ` Naresh Kamboju
@ 2023-04-26 19:47 ` Pavel Machek
2023-04-26 21:09 ` Steven Rostedt
1 sibling, 0 replies; 44+ messages in thread
From: Pavel Machek @ 2023-04-26 19:47 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Greg Kroah-Hartman, Steven Rostedt, Masami Hiramatsu, stable,
patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, Mark Rutland
[-- Attachment #1: Type: text/plain, Size: 1196 bytes --]
Hi!
This should be show stopper, actually:
> FYI, This is not a show stopper but worth reporting.
> NOTE:
> Following kernel warning notices on stable rc 4.19.282-rc1 from the
> previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
> this kernel warning the system is still stable and up and running.
>
> This kernel is built with kselftest ftrace merge configs with all
> required Kconfigs.
>
> [ 0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
> version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
> ...
> [ 0.145911] ftrace: allocating 48590 entries in 190 pages
> ...
>
> [ 2.880223] WARNING: CPU: 0 PID: 0 at
> include/trace/events/lock.h:13 lock_acquire+0x142/0x150
> [ 2.881454] WARNING: CPU: 1 PID: 0 at
> include/trace/events/lock.h:58 lock_release+0x1af/0x280
This indicates locking problem somewhere in cpuidle / ftrace.
I skimmed the patches, and I do not see anything obvious there. Is
there chance to do a bisection?
Best regards,
Pavel
--
DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-25 10:02 ` Naresh Kamboju
2023-04-26 19:47 ` Pavel Machek
@ 2023-04-26 21:09 ` Steven Rostedt
2023-04-26 22:14 ` Steven Rostedt
1 sibling, 1 reply; 44+ messages in thread
From: Steven Rostedt @ 2023-04-26 21:09 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Greg Kroah-Hartman, Masami Hiramatsu, stable, patches,
linux-kernel, torvalds, akpm, linux, shuah, patches, lkft-triage,
pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Tue, 25 Apr 2023 11:02:23 +0100
Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> On Mon, 24 Apr 2023 at 14:39, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > This is the start of the stable review cycle for the 4.19.282 release.
> > There are 29 patches in this series, all will be posted as a response
> > to this one. If anyone has any issues with these being applied, please
> > let me know.
> >
> > Responses should be made by Wed, 26 Apr 2023 13:11:11 +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.282-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.
>
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
>
> FYI, This is not a show stopper but worth reporting.
>
> NOTE:
> Following kernel warning notices on stable rc 4.19.282-rc1 from the
> previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
> this kernel warning the system is still stable and up and running.
>
> This kernel is built with kselftest ftrace merge configs with all
> required Kconfigs.
>
> [ 0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
> version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
> ...
> [ 0.145911] ftrace: allocating 48590 entries in 190 pages
Note, this has nothing to do with the ftrace allocating of pages.
> ...
>
> [ 2.880223] WARNING: CPU: 0 PID: 0 at
> include/trace/events/lock.h:13 lock_acquire+0x142/0x150
The above file is a trace event that should not be enabled at boot up.
But... I believe there was a check that wasn't working anymore, but I fixed
it, and that was backported. So this is probably detecting a bug, or needs
another fix.
Hmm, commit c2679254b9c9980d9045f0f722cf093a2b1f7590 was added in 279-rc1
which is probably what is triggering this.
That is in include/linux/tracepoint.h:
static inline void trace_##name(proto) \
{ \
if (static_key_false(&__tracepoint_##name.key)) \
__DO_TRACE(name, \
TP_ARGS(args), \
TP_CONDITION(cond), 0); \
if (IS_ENABLED(CONFIG_LOCKDEP) && (cond)) { \
WARN_ON_ONCE(!rcu_is_watching()); \
} \
}
Where the trace event is being called when RCU is not watching (and trace
events require RCU to *be* watching!).
Now the question is, why is this triggering on 4.19 but not in latest
mainline?
-- Steve
> [ 2.881454] WARNING: CPU: 1 PID: 0 at
> include/trace/events/lock.h:58 lock_release+0x1af/0x280
> [ 2.881190] Modules linked in:
> [ 2.882221] Modules linked in:
> [ 2.881190] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.279-rc1 #1
> [ 2.882221] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.279-rc1 #1
> [ 2.881190] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
> 2.5 11/26/2020
> [ 2.881190] RIP: 0010:lock_acquire+0x142/0x150
> [ 2.882221] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
> 2.5 11/26/2020
> [ 2.882221] RIP: 0010:lock_release+0x1af/0x280
> [ 2.881190] Code: 59 48 85 c0 75 cf 45 89 cb 65 ff 0d 78 bd 23 6c
> e9 24 ff ff ff 44 89 5d cc e8 9a 13 02 00 44 8b 5d cc 84 c0 0f 85 26
> ff ff ff <0f> 0b e9 1f ff ff ff 0f 1f 80 00 00 00 00 8b 05 8a dc 90 01
> 85 c0
> [ 2.881190] RSP: 0000:ffffffff95603d50 EFLAGS: 00010046
> [ 2.882221] Code: ea 4c 89 e6 e8 42 80 02 01 48 8b 03 48 85 c0 75
> e5 65 ff 0d 83 bf 23 6c e9 b1 fe ff ff e8 a9 15 02 00 84 c0 0f 85 bb
> fe ff ff <0f> 0b e9 b4 fe ff ff e8 95 5e 41 00 85 c0 0f 84 52 ff ff ff
> 8b 35
> [ 2.882221] RSP: 0000:ffffbacc8193bda0 EFLAGS: 00010046
> [ 2.881190] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000002
> [ 2.881190] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff9567fe08
> [ 2.882221] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000100
> [ 2.882221] RDX: ffffffff93db7bab RSI: 0000000000000001 RDI: ffffffff9567fe08
> [ 2.881190] RBP: ffffffff95603d90 R08: 0000000000000001 R09: 0000000000000000
> [ 2.881190] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff9567fe08
> [ 2.882221] RBP: ffffbacc8193bde8 R08: 00000000483c81c9 R09: 0000000000080000
> [ 2.882221] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9567fe08
> [ 2.881190] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000002
> [ 2.881190] FS: 0000000000000000(0000) GS:ffff8f2da7800000(0000)
> knlGS:0000000000000000
> [ 2.882221] R13: ffffffff93db7bab R14: ffffffff956f3f20 R15: 0000000000000001
> [ 2.882221] FS: 0000000000000000(0000) GS:ffff8f2da7880000(0000)
> knlGS:0000000000000000
> [ 2.881190] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 2.881190] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606f0
> [ 2.882221] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 2.882221] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606e0
> [ 2.881190] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [ 2.881190] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> [ 2.882221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [ 2.882221] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> [ 2.881190] Call Trace:
> [ 2.882221] Call Trace:
> [ 2.882221] ktime_get+0x58/0x110
> [ 2.881190] ktime_get+0x43/0x110
> [ 2.882221] ? sched_clock_tick+0x6b/0x90
> [ 2.881190] ? sched_clock_tick+0x6b/0x90
> [ 2.882221] sched_clock_tick+0x6b/0x90
> [ 2.881190] sched_clock_tick+0x6b/0x90
> [ 2.882221] sched_clock_idle_wakeup_event+0x22/0x50
> [ 2.881190] sched_clock_idle_wakeup_event+0x22/0x50
> [ 2.882221] cpuidle_enter_state+0xd6/0x2e0
> [ 2.881190] cpuidle_enter_state+0xd6/0x2e0
> [ 2.882221] cpuidle_enter+0x17/0x20
> [ 2.881190] cpuidle_enter+0x17/0x20
> [ 2.882221] call_cpuidle+0x23/0x40
> [ 2.881190] call_cpuidle+0x23/0x40
> [ 2.882221] do_idle+0x1b9/0x240
> [ 2.881190] do_idle+0x1b9/0x240
> [ 2.882221] cpu_startup_entry+0x73/0x80
> [ 2.881190] cpu_startup_entry+0x73/0x80
> [ 2.882221] start_secondary+0x19e/0x1f0
> [ 2.881190] rest_init+0x143/0x147
> [ 2.882221] secondary_startup_64+0xa4/0xb0
> [ 2.881190] start_kernel+0x487/0x4a9
> [ 2.882221] irq event stamp: 33604
> [ 2.881190] x86_64_start_reservations+0x24/0x26
> [ 2.882221] hardirqs last enabled at (33603): [<ffffffff93e23771>]
> tick_nohz_idle_enter+0x61/0xa0
> [ 2.882221] hardirqs last disabled at (33604): [<ffffffff93db8d22>]
> do_idle+0x72/0x240
> [ 2.881190] x86_64_start_kernel+0x87/0x8b
> [ 2.882221] softirqs last enabled at (33594): [<ffffffff94e002b6>]
> __do_softirq+0x2b6/0x356
> [ 2.882221] softirqs last disabled at (33579): [<ffffffff93d83a1b>]
> irq_exit+0xab/0xe0
> [ 2.881190] secondary_startup_64+0xa4/0xb0
> [ 2.882221] ---[ end trace 257e6b641850f405 ]---
> [ 2.881190] irq event stamp: 51806
> [ 3.190254] thermal LNXTHERM:00: registered as thermal_zone0
> [ 2.881190] hardirqs last enabled at (51805): [<ffffffff94b356ad>]
> poll_idle+0x2d/0xa6
> [ 2.881190] hardirqs last disabled at (51806): [<ffffffff93db7bed>]
> sched_clock_idle_wakeup_event+0x1d/0x50
> [ 2.881190] softirqs last enabled at (51790): [<ffffffff93d82d21>]
> _local_bh_enable+0x21/0x40
> [ 2.881190] softirqs last disabled at (51789): [<ffffffff93d83948>]
> irq_enter+0x48/0x70
> [ 3.195448] ACPI: Thermal Zone [TZ00] (28 C)
> [ 2.881190] ---[ end trace 257e6b641850f406 ]---
>
> Logs:
> - https://lkft.validation.linaro.org/scheduler/job/6373184#L889
>
> History:
> -------
> - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16488263/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/history/
>
> - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.278-37-gc1beffa09ae6/testrun/15764758/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/log
>
> - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16487659/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/details/
>
> - https://storage.tuxsuite.com/public/linaro/lkft/builds/2OsIodn7l10ciOlEtqVm8nzAJyc/config
>
> ## Build
> * kernel: 4.19.282-rc1
> * git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
> * git branch: linux-4.19.y
> * git commit: 8ca3c8d286160dca3bb13ae97a4a7a2d2fd4ad01
> * git describe: v4.19.279-173-g8ca3c8d28616
> * test details:
> https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616
>
> ## Test Regressions (compared to v4.19.279-143-gcc0a9b81697f)
>
> ## Metric Regressions (compared to v4.19.279-143-gcc0a9b81697f)
>
> ## Test Fixes (compared to v4.19.279-143-gcc0a9b81697f)
>
> ## Metric Fixes (compared to v4.19.279-143-gcc0a9b81697f)
>
> ## Test result summary
> total: 96887, pass: 72120, fail: 3496, skip: 21094, xfail: 177
>
> ## Build Summary
> * arc: 10 total, 10 passed, 0 failed
> * arm: 108 total, 107 passed, 1 failed
> * arm64: 34 total, 33 passed, 1 failed
> * i386: 20 total, 19 passed, 1 failed
> * mips: 22 total, 22 passed, 0 failed
> * parisc: 6 total, 6 passed, 0 failed
> * powerpc: 24 total, 24 passed, 0 failed
> * s390: 6 total, 6 passed, 0 failed
> * sh: 12 total, 12 passed, 0 failed
> * sparc: 6 total, 6 passed, 0 failed
> * x86_64: 28 total, 27 passed, 1 failed
>
> ## Test suites summary
> * boot
> * fwts
> * igt-gpu-tools
> * kselftest-android
> * kselftest-arm64
> * kselftest-breakpoints
> * kselftest-capabilities
> * kselftest-cgroup
> * kselftest-clone3
> * kselftest-core
> * kselftest-cpu-hotplug
> * kselftest-cpufreq
> * kselftest-drivers-dma-buf
> * kselftest-efivarfs
> * kselftest-filesystems
> * kselftest-filesystems-binderfs
> * kselftest-firmware
> * kselftest-fpu
> * kselftest-ftrace
> * kselftest-futex
> * kselftest-gpio
> * kselftest-intel_pstate
> * kselftest-ipc
> * kselftest-ir
> * kselftest-kcmp
> * kselftest-kexec
> * kselftest-kvm
> * kselftest-lib
> * kselftest-livepatch
> * kselftest-membarrier
> * kselftest-memfd
> * kselftest-memory-hotplug
> * kselftest-mincore
> * kselftest-mount
> * kselftest-mqueue
> * kselftest-net
> * kselftest-net-forwarding
> * kselftest-netfilter
> * kselftest-nsfs
> * kselftest-openat2
> * kselftest-pid_namespace
> * kselftest-pidfd
> * kselftest-proc
> * kselftest-pstore
> * kselftest-ptrace
> * kselftest-rseq
> * kselftest-rtc
> * kselftest-seccomp
> * kselftest-sigaltstack
> * kselftest-size
> * kselftest-splice
> * kselftest-static_keys
> * kselftest-sync
> * kselftest-sysctl
> * kselftest-tc-testing
> * kselftest-timens
> * kselftest-timers
> * kselftest-tmpfs
> * kselftest-tpm2
> * kselftest-user
> * kselftest-vm
> * kselftest-x86
> * kselftest-zram
> * kunit
> * kvm-unit-tests
> * libhugetlbfs
> * log-parser-boot
> * log-parser-test
> * ltp-cap_bounds
> * ltp-commands
> * ltp-containers
> * ltp-controllers
> * ltp-cpuhotplug
> * ltp-crypto
> * ltp-cve
> * ltp-dio
> * ltp-fcntl-locktests
> * ltp-filecaps
> * ltp-fs
> * ltp-fs_bind
> * ltp-fs_perms_simple
> * ltp-fsx
> * ltp-hugetlb
> * ltp-io
> * ltp-ipc
> * ltp-math
> * ltp-mm
> * ltp-nptl
> * ltp-pty
> * ltp-sched
> * ltp-securebits
> * ltp-smoke
> * ltp-syscalls
> * ltp-tracing
> * network-basic-tests
> * rcutorture
> * v4l2-compliance
> * vdso
>
> --
> Linaro LKFT
> https://lkft.linaro.org
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-26 21:09 ` Steven Rostedt
@ 2023-04-26 22:14 ` Steven Rostedt
2023-04-27 9:49 ` Naresh Kamboju
0 siblings, 1 reply; 44+ messages in thread
From: Steven Rostedt @ 2023-04-26 22:14 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Greg Kroah-Hartman, Masami Hiramatsu, stable, patches,
linux-kernel, torvalds, akpm, linux, shuah, patches, lkft-triage,
pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Wed, 26 Apr 2023 17:09:45 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:
> Now the question is, why is this triggering on 4.19 but not in latest
> mainline?
I found it, I backported this patch and the warning goes away (at least for
me). Can you add this and see if it makes the warning go away for you too?
-- Steve
From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 7 Aug 2020 20:50:19 +0200
Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
that the locking tracepoints were using RCU.
Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.
Specifically, sched_clock_idle_wakeup_event() will use ktime which
will use seqlocks which will tickle lockdep, and
stop_critical_timings() uses lock.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Marco Elver <elver@google.com>
Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org
---
drivers/cpuidle/cpuidle.c | 12 ++++++++----
kernel/sched/idle.c | 22 ++++++++--------------
2 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2d182dc1b49e..01bde6dec13a 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
* executing it contains RCU usage regarded as invalid in the idle
* context, so tell RCU about that.
*/
- RCU_NONIDLE(tick_freeze());
+ tick_freeze();
/*
* The state used here cannot be a "coupled" one, because the "coupled"
* cpuidle mechanism enables interrupts and doing that with timekeeping
* suspended is generally unsafe.
*/
stop_critical_timings();
+ rcu_idle_enter();
drv->states[index].enter_s2idle(dev, drv, index);
if (WARN_ON_ONCE(!irqs_disabled()))
local_irq_disable();
@@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
* first CPU executing it calls functions containing RCU read-side
* critical sections, so tell RCU about that.
*/
- RCU_NONIDLE(tick_unfreeze());
+ rcu_idle_exit();
+ tick_unfreeze();
start_critical_timings();
time_end = ns_to_ktime(local_clock());
@@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
/* Take note of the planned idle state. */
sched_idle_set_state(target_state);
- trace_cpu_idle_rcuidle(index, dev->cpu);
+ trace_cpu_idle(index, dev->cpu);
time_start = ns_to_ktime(local_clock());
stop_critical_timings();
+ rcu_idle_enter();
entered_state = target_state->enter(dev, drv, index);
+ rcu_idle_exit();
start_critical_timings();
sched_clock_idle_wakeup_event();
time_end = ns_to_ktime(local_clock());
- trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
+ trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
/* The cpu is no longer idle or about to enter idle. */
sched_idle_set_state(NULL);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 44a17366c8ec..4e3d149d64ad 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
static noinline int __cpuidle cpu_idle_poll(void)
{
+ trace_cpu_idle(0, smp_processor_id());
+ stop_critical_timings();
rcu_idle_enter();
- trace_cpu_idle_rcuidle(0, smp_processor_id());
local_irq_enable();
- stop_critical_timings();
while (!tif_need_resched() &&
- (cpu_idle_force_poll || tick_check_broadcast_expired()))
+ (cpu_idle_force_poll || tick_check_broadcast_expired()))
cpu_relax();
- start_critical_timings();
- trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
+
rcu_idle_exit();
+ start_critical_timings();
+ trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
return 1;
}
@@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
local_irq_enable();
} else {
stop_critical_timings();
+ rcu_idle_enter();
arch_cpu_idle();
+ rcu_idle_exit();
start_critical_timings();
}
}
@@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
if (cpuidle_not_available(drv, dev)) {
tick_nohz_idle_stop_tick();
- rcu_idle_enter();
default_idle_call();
goto exit_idle;
@@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
if (idle_should_enter_s2idle() || dev->use_deepest_state) {
if (idle_should_enter_s2idle()) {
- rcu_idle_enter();
entered_state = cpuidle_enter_s2idle(drv, dev);
if (entered_state > 0) {
local_irq_enable();
goto exit_idle;
}
-
- rcu_idle_exit();
}
tick_nohz_idle_stop_tick();
- rcu_idle_enter();
next_state = cpuidle_find_deepest_state(drv, dev);
call_cpuidle(drv, dev, next_state);
@@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
else
tick_nohz_idle_retain_tick();
- rcu_idle_enter();
-
entered_state = call_cpuidle(drv, dev, next_state);
/*
* Give the governor an opportunity to reflect on the outcome
@@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
*/
if (WARN_ON_ONCE(irqs_disabled()))
local_irq_enable();
-
- rcu_idle_exit();
}
/*
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-26 22:14 ` Steven Rostedt
@ 2023-04-27 9:49 ` Naresh Kamboju
2023-10-11 1:29 ` Naresh Kamboju
0 siblings, 1 reply; 44+ messages in thread
From: Naresh Kamboju @ 2023-04-27 9:49 UTC (permalink / raw)
To: Steven Rostedt, Greg Kroah-Hartman
Cc: Masami Hiramatsu, stable, patches, linux-kernel, torvalds, akpm,
linux, shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, Mark Rutland, Paul E. McKenney,
Peter Zijlstra
Hi Steven,
On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Wed, 26 Apr 2023 17:09:45 -0400
> Steven Rostedt <rostedt@goodmis.org> wrote:
>
> > Now the question is, why is this triggering on 4.19 but not in latest
> > mainline?
>
> I found it, I backported this patch and the warning goes away (at least for
> me). Can you add this and see if it makes the warning go away for you too?
I have applied this patch on stable-rc 4.19 branch and tested on
- arm64: Juno-r2
- x86_64 device
and the reported problem has been resolved.
Thanks for finding a quick fix patch.
>
> -- Steve
>
> From: Peter Zijlstra <peterz@infradead.org>
> Date: Fri, 7 Aug 2020 20:50:19 +0200
> Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
>
> commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
>
> Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
> that the locking tracepoints were using RCU.
>
> Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
> this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.
>
> Specifically, sched_clock_idle_wakeup_event() will use ktime which
> will use seqlocks which will tickle lockdep, and
> stop_critical_timings() uses lock.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Tested-by: Marco Elver <elver@google.com>
> Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
test log:
- https://lkft.validation.linaro.org/scheduler/job/6380295#L1418
- https://lkft.validation.linaro.org/scheduler/job/6380303#L1443
> ---
> drivers/cpuidle/cpuidle.c | 12 ++++++++----
> kernel/sched/idle.c | 22 ++++++++--------------
> 2 files changed, 16 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index 2d182dc1b49e..01bde6dec13a 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> * executing it contains RCU usage regarded as invalid in the idle
> * context, so tell RCU about that.
> */
> - RCU_NONIDLE(tick_freeze());
> + tick_freeze();
> /*
> * The state used here cannot be a "coupled" one, because the "coupled"
> * cpuidle mechanism enables interrupts and doing that with timekeeping
> * suspended is generally unsafe.
> */
> stop_critical_timings();
> + rcu_idle_enter();
> drv->states[index].enter_s2idle(dev, drv, index);
> if (WARN_ON_ONCE(!irqs_disabled()))
> local_irq_disable();
> @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> * first CPU executing it calls functions containing RCU read-side
> * critical sections, so tell RCU about that.
> */
> - RCU_NONIDLE(tick_unfreeze());
> + rcu_idle_exit();
> + tick_unfreeze();
> start_critical_timings();
>
> time_end = ns_to_ktime(local_clock());
> @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
> /* Take note of the planned idle state. */
> sched_idle_set_state(target_state);
>
> - trace_cpu_idle_rcuidle(index, dev->cpu);
> + trace_cpu_idle(index, dev->cpu);
> time_start = ns_to_ktime(local_clock());
>
> stop_critical_timings();
> + rcu_idle_enter();
> entered_state = target_state->enter(dev, drv, index);
> + rcu_idle_exit();
> start_critical_timings();
>
> sched_clock_idle_wakeup_event();
> time_end = ns_to_ktime(local_clock());
> - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> + trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
>
> /* The cpu is no longer idle or about to enter idle. */
> sched_idle_set_state(NULL);
> diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> index 44a17366c8ec..4e3d149d64ad 100644
> --- a/kernel/sched/idle.c
> +++ b/kernel/sched/idle.c
> @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
>
> static noinline int __cpuidle cpu_idle_poll(void)
> {
> + trace_cpu_idle(0, smp_processor_id());
> + stop_critical_timings();
> rcu_idle_enter();
> - trace_cpu_idle_rcuidle(0, smp_processor_id());
> local_irq_enable();
> - stop_critical_timings();
>
> while (!tif_need_resched() &&
> - (cpu_idle_force_poll || tick_check_broadcast_expired()))
> + (cpu_idle_force_poll || tick_check_broadcast_expired()))
> cpu_relax();
> - start_critical_timings();
> - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> +
> rcu_idle_exit();
> + start_critical_timings();
> + trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
>
> return 1;
> }
> @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
> local_irq_enable();
> } else {
> stop_critical_timings();
> + rcu_idle_enter();
> arch_cpu_idle();
> + rcu_idle_exit();
> start_critical_timings();
> }
> }
> @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
>
> if (cpuidle_not_available(drv, dev)) {
> tick_nohz_idle_stop_tick();
> - rcu_idle_enter();
>
> default_idle_call();
> goto exit_idle;
> @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
>
> if (idle_should_enter_s2idle() || dev->use_deepest_state) {
> if (idle_should_enter_s2idle()) {
> - rcu_idle_enter();
>
> entered_state = cpuidle_enter_s2idle(drv, dev);
> if (entered_state > 0) {
> local_irq_enable();
> goto exit_idle;
> }
> -
> - rcu_idle_exit();
> }
>
> tick_nohz_idle_stop_tick();
> - rcu_idle_enter();
>
> next_state = cpuidle_find_deepest_state(drv, dev);
> call_cpuidle(drv, dev, next_state);
> @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
> else
> tick_nohz_idle_retain_tick();
>
> - rcu_idle_enter();
> -
> entered_state = call_cpuidle(drv, dev, next_state);
> /*
> * Give the governor an opportunity to reflect on the outcome
> @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
> */
> if (WARN_ON_ONCE(irqs_disabled()))
> local_irq_enable();
> -
> - rcu_idle_exit();
> }
>
> /*
> --
> 2.39.2
- Naresh
--
Linaro LKFT
https://lkft.linaro.org
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-04-27 9:49 ` Naresh Kamboju
@ 2023-10-11 1:29 ` Naresh Kamboju
2023-10-11 9:04 ` Greg Kroah-Hartman
0 siblings, 1 reply; 44+ messages in thread
From: Naresh Kamboju @ 2023-10-11 1:29 UTC (permalink / raw)
To: Steven Rostedt, Greg Kroah-Hartman
Cc: Masami Hiramatsu, stable, patches, linux-kernel, torvalds, akpm,
linux, shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, Mark Rutland, Paul E. McKenney,
Peter Zijlstra
Hi Steven and Greg,
On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
>
> Hi Steven,
>
> On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Wed, 26 Apr 2023 17:09:45 -0400
> > Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > > Now the question is, why is this triggering on 4.19 but not in latest
> > > mainline?
> >
> > I found it, I backported this patch and the warning goes away (at least for
> > me). Can you add this and see if it makes the warning go away for you too?
>
> I have applied this patch on stable-rc 4.19 branch and tested on
> - arm64: Juno-r2
> - x86_64 device
>
> and the reported problem has been resolved.
>
> Thanks for finding a quick fix patch.
>
> >
> > -- Steve
> >
> > From: Peter Zijlstra <peterz@infradead.org>
> > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> >
> > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
Can we expect this patch to be merged into 4.19 ?
The reason for the question is, the reported problem is still seen on
stable-rc 4.19.
> >
> > Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
> > that the locking tracepoints were using RCU.
> >
> > Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
> > this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.
> >
> > Specifically, sched_clock_idle_wakeup_event() will use ktime which
> > will use seqlocks which will tickle lockdep, and
> > stop_critical_timings() uses lock.
> >
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > Tested-by: Marco Elver <elver@google.com>
> > Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org
>
>
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
> Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
>
> test log:
> - https://lkft.validation.linaro.org/scheduler/job/6380295#L1418
> - https://lkft.validation.linaro.org/scheduler/job/6380303#L1443
>
> > ---
> > drivers/cpuidle/cpuidle.c | 12 ++++++++----
> > kernel/sched/idle.c | 22 ++++++++--------------
> > 2 files changed, 16 insertions(+), 18 deletions(-)
> >
> > diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> > index 2d182dc1b49e..01bde6dec13a 100644
> > --- a/drivers/cpuidle/cpuidle.c
> > +++ b/drivers/cpuidle/cpuidle.c
> > @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> > * executing it contains RCU usage regarded as invalid in the idle
> > * context, so tell RCU about that.
> > */
> > - RCU_NONIDLE(tick_freeze());
> > + tick_freeze();
> > /*
> > * The state used here cannot be a "coupled" one, because the "coupled"
> > * cpuidle mechanism enables interrupts and doing that with timekeeping
> > * suspended is generally unsafe.
> > */
> > stop_critical_timings();
> > + rcu_idle_enter();
> > drv->states[index].enter_s2idle(dev, drv, index);
> > if (WARN_ON_ONCE(!irqs_disabled()))
> > local_irq_disable();
> > @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> > * first CPU executing it calls functions containing RCU read-side
> > * critical sections, so tell RCU about that.
> > */
> > - RCU_NONIDLE(tick_unfreeze());
> > + rcu_idle_exit();
> > + tick_unfreeze();
> > start_critical_timings();
> >
> > time_end = ns_to_ktime(local_clock());
> > @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
> > /* Take note of the planned idle state. */
> > sched_idle_set_state(target_state);
> >
> > - trace_cpu_idle_rcuidle(index, dev->cpu);
> > + trace_cpu_idle(index, dev->cpu);
> > time_start = ns_to_ktime(local_clock());
> >
> > stop_critical_timings();
> > + rcu_idle_enter();
> > entered_state = target_state->enter(dev, drv, index);
> > + rcu_idle_exit();
> > start_critical_timings();
> >
> > sched_clock_idle_wakeup_event();
> > time_end = ns_to_ktime(local_clock());
> > - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> > + trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
> >
> > /* The cpu is no longer idle or about to enter idle. */
> > sched_idle_set_state(NULL);
> > diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> > index 44a17366c8ec..4e3d149d64ad 100644
> > --- a/kernel/sched/idle.c
> > +++ b/kernel/sched/idle.c
> > @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
> >
> > static noinline int __cpuidle cpu_idle_poll(void)
> > {
> > + trace_cpu_idle(0, smp_processor_id());
> > + stop_critical_timings();
> > rcu_idle_enter();
> > - trace_cpu_idle_rcuidle(0, smp_processor_id());
> > local_irq_enable();
> > - stop_critical_timings();
> >
> > while (!tif_need_resched() &&
> > - (cpu_idle_force_poll || tick_check_broadcast_expired()))
> > + (cpu_idle_force_poll || tick_check_broadcast_expired()))
> > cpu_relax();
> > - start_critical_timings();
> > - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> > +
> > rcu_idle_exit();
> > + start_critical_timings();
> > + trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
> >
> > return 1;
> > }
> > @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
> > local_irq_enable();
> > } else {
> > stop_critical_timings();
> > + rcu_idle_enter();
> > arch_cpu_idle();
> > + rcu_idle_exit();
> > start_critical_timings();
> > }
> > }
> > @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
> >
> > if (cpuidle_not_available(drv, dev)) {
> > tick_nohz_idle_stop_tick();
> > - rcu_idle_enter();
> >
> > default_idle_call();
> > goto exit_idle;
> > @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
> >
> > if (idle_should_enter_s2idle() || dev->use_deepest_state) {
> > if (idle_should_enter_s2idle()) {
> > - rcu_idle_enter();
> >
> > entered_state = cpuidle_enter_s2idle(drv, dev);
> > if (entered_state > 0) {
> > local_irq_enable();
> > goto exit_idle;
> > }
> > -
> > - rcu_idle_exit();
> > }
> >
> > tick_nohz_idle_stop_tick();
> > - rcu_idle_enter();
> >
> > next_state = cpuidle_find_deepest_state(drv, dev);
> > call_cpuidle(drv, dev, next_state);
> > @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
> > else
> > tick_nohz_idle_retain_tick();
> >
> > - rcu_idle_enter();
> > -
> > entered_state = call_cpuidle(drv, dev, next_state);
> > /*
> > * Give the governor an opportunity to reflect on the outcome
> > @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
> > */
> > if (WARN_ON_ONCE(irqs_disabled()))
> > local_irq_enable();
> > -
> > - rcu_idle_exit();
> > }
> >
> > /*
> > --
> > 2.39.2
>
> - Naresh
>
>
> --
> Linaro LKFT
> https://lkft.linaro.org
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-10-11 1:29 ` Naresh Kamboju
@ 2023-10-11 9:04 ` Greg Kroah-Hartman
2023-10-11 9:05 ` Greg Kroah-Hartman
0 siblings, 1 reply; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-10-11 9:04 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Steven Rostedt, Masami Hiramatsu, stable, patches, linux-kernel,
torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Wed, Oct 11, 2023 at 06:59:46AM +0530, Naresh Kamboju wrote:
> Hi Steven and Greg,
>
> On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> >
> > Hi Steven,
> >
> > On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > On Wed, 26 Apr 2023 17:09:45 -0400
> > > Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > > Now the question is, why is this triggering on 4.19 but not in latest
> > > > mainline?
> > >
> > > I found it, I backported this patch and the warning goes away (at least for
> > > me). Can you add this and see if it makes the warning go away for you too?
> >
> > I have applied this patch on stable-rc 4.19 branch and tested on
> > - arm64: Juno-r2
> > - x86_64 device
> >
> > and the reported problem has been resolved.
> >
> > Thanks for finding a quick fix patch.
> >
> > >
> > > -- Steve
> > >
> > > From: Peter Zijlstra <peterz@infradead.org>
> > > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> > >
> > > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
>
> Can we expect this patch to be merged into 4.19 ?
> The reason for the question is, the reported problem is still seen on
> stable-rc 4.19.
Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
greg k-h
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-10-11 9:04 ` Greg Kroah-Hartman
@ 2023-10-11 9:05 ` Greg Kroah-Hartman
2023-10-11 14:45 ` Steven Rostedt
0 siblings, 1 reply; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-10-11 9:05 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Steven Rostedt, Masami Hiramatsu, stable, patches, linux-kernel,
torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Wed, Oct 11, 2023 at 11:04:54AM +0200, Greg Kroah-Hartman wrote:
> On Wed, Oct 11, 2023 at 06:59:46AM +0530, Naresh Kamboju wrote:
> > Hi Steven and Greg,
> >
> > On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> > >
> > > Hi Steven,
> > >
> > > On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > On Wed, 26 Apr 2023 17:09:45 -0400
> > > > Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > > Now the question is, why is this triggering on 4.19 but not in latest
> > > > > mainline?
> > > >
> > > > I found it, I backported this patch and the warning goes away (at least for
> > > > me). Can you add this and see if it makes the warning go away for you too?
> > >
> > > I have applied this patch on stable-rc 4.19 branch and tested on
> > > - arm64: Juno-r2
> > > - x86_64 device
> > >
> > > and the reported problem has been resolved.
> > >
> > > Thanks for finding a quick fix patch.
> > >
> > > >
> > > > -- Steve
> > > >
> > > > From: Peter Zijlstra <peterz@infradead.org>
> > > > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > > > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> > > >
> > > > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
> >
> > Can we expect this patch to be merged into 4.19 ?
> > The reason for the question is, the reported problem is still seen on
> > stable-rc 4.19.
>
> Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
Nope, I can't, it doesn't apply there, so I need a backported, and
TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-10-11 9:05 ` Greg Kroah-Hartman
@ 2023-10-11 14:45 ` Steven Rostedt
2023-10-12 11:53 ` Naresh Kamboju
0 siblings, 1 reply; 44+ messages in thread
From: Steven Rostedt @ 2023-10-11 14:45 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Naresh Kamboju, Masami Hiramatsu, stable, patches, linux-kernel,
torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Wed, 11 Oct 2023 11:05:48 +0200
Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
>
> Nope, I can't, it doesn't apply there, so I need a backported, and
> TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
This is a quick backport for 4.19 as the conflict seemed to be due to added
code that is unrelated to this change. I built and booted it, but it should
have more testing.
Naresh, if you want this in 4.19, please run it through your tests and give
your tested by.
Greg, please do not take it until Naresh has tested it.
Thanks,
-- Steve
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2d182dc1b49e..01bde6dec13a 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
* executing it contains RCU usage regarded as invalid in the idle
* context, so tell RCU about that.
*/
- RCU_NONIDLE(tick_freeze());
+ tick_freeze();
/*
* The state used here cannot be a "coupled" one, because the "coupled"
* cpuidle mechanism enables interrupts and doing that with timekeeping
* suspended is generally unsafe.
*/
stop_critical_timings();
+ rcu_idle_enter();
drv->states[index].enter_s2idle(dev, drv, index);
if (WARN_ON_ONCE(!irqs_disabled()))
local_irq_disable();
@@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
* first CPU executing it calls functions containing RCU read-side
* critical sections, so tell RCU about that.
*/
- RCU_NONIDLE(tick_unfreeze());
+ rcu_idle_exit();
+ tick_unfreeze();
start_critical_timings();
time_end = ns_to_ktime(local_clock());
@@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
/* Take note of the planned idle state. */
sched_idle_set_state(target_state);
- trace_cpu_idle_rcuidle(index, dev->cpu);
+ trace_cpu_idle(index, dev->cpu);
time_start = ns_to_ktime(local_clock());
stop_critical_timings();
+ rcu_idle_enter();
entered_state = target_state->enter(dev, drv, index);
+ rcu_idle_exit();
start_critical_timings();
sched_clock_idle_wakeup_event();
time_end = ns_to_ktime(local_clock());
- trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
+ trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
/* The cpu is no longer idle or about to enter idle. */
sched_idle_set_state(NULL);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 44a17366c8ec..4e3d149d64ad 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
static noinline int __cpuidle cpu_idle_poll(void)
{
+ trace_cpu_idle(0, smp_processor_id());
+ stop_critical_timings();
rcu_idle_enter();
- trace_cpu_idle_rcuidle(0, smp_processor_id());
local_irq_enable();
- stop_critical_timings();
while (!tif_need_resched() &&
- (cpu_idle_force_poll || tick_check_broadcast_expired()))
+ (cpu_idle_force_poll || tick_check_broadcast_expired()))
cpu_relax();
- start_critical_timings();
- trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
+
rcu_idle_exit();
+ start_critical_timings();
+ trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
return 1;
}
@@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
local_irq_enable();
} else {
stop_critical_timings();
+ rcu_idle_enter();
arch_cpu_idle();
+ rcu_idle_exit();
start_critical_timings();
}
}
@@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
if (cpuidle_not_available(drv, dev)) {
tick_nohz_idle_stop_tick();
- rcu_idle_enter();
default_idle_call();
goto exit_idle;
@@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
if (idle_should_enter_s2idle() || dev->use_deepest_state) {
if (idle_should_enter_s2idle()) {
- rcu_idle_enter();
entered_state = cpuidle_enter_s2idle(drv, dev);
if (entered_state > 0) {
local_irq_enable();
goto exit_idle;
}
-
- rcu_idle_exit();
}
tick_nohz_idle_stop_tick();
- rcu_idle_enter();
next_state = cpuidle_find_deepest_state(drv, dev);
call_cpuidle(drv, dev, next_state);
@@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
else
tick_nohz_idle_retain_tick();
- rcu_idle_enter();
-
entered_state = call_cpuidle(drv, dev, next_state);
/*
* Give the governor an opportunity to reflect on the outcome
@@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
*/
if (WARN_ON_ONCE(irqs_disabled()))
local_irq_enable();
-
- rcu_idle_exit();
}
/*
^ permalink raw reply related [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-10-11 14:45 ` Steven Rostedt
@ 2023-10-12 11:53 ` Naresh Kamboju
2023-10-15 17:50 ` Greg Kroah-Hartman
0 siblings, 1 reply; 44+ messages in thread
From: Naresh Kamboju @ 2023-10-12 11:53 UTC (permalink / raw)
To: Steven Rostedt, Greg Kroah-Hartman
Cc: Masami Hiramatsu, stable, patches, linux-kernel, torvalds, akpm,
linux, shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, Mark Rutland, Paul E. McKenney,
Peter Zijlstra
On Wed, 11 Oct 2023 at 20:14, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Wed, 11 Oct 2023 11:05:48 +0200
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
>
> > > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
> >
> > Nope, I can't, it doesn't apply there, so I need a backported, and
> > TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
>
> This is a quick backport for 4.19 as the conflict seemed to be due to added
> code that is unrelated to this change. I built and booted it, but it should
> have more testing.
>
> Naresh, if you want this in 4.19, please run it through your tests and give
> your tested by.
>
> Greg, please do not take it until Naresh has tested it.
Below patch applied and tested on top of stable rc branches
- v4.19.296
- v5.4.258
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index 2d182dc1b49e..01bde6dec13a 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> * executing it contains RCU usage regarded as invalid in the idle
> * context, so tell RCU about that.
> */
> - RCU_NONIDLE(tick_freeze());
> + tick_freeze();
> /*
> * The state used here cannot be a "coupled" one, because the "coupled"
> * cpuidle mechanism enables interrupts and doing that with timekeeping
> * suspended is generally unsafe.
> */
> stop_critical_timings();
> + rcu_idle_enter();
> drv->states[index].enter_s2idle(dev, drv, index);
> if (WARN_ON_ONCE(!irqs_disabled()))
> local_irq_disable();
> @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> * first CPU executing it calls functions containing RCU read-side
> * critical sections, so tell RCU about that.
> */
> - RCU_NONIDLE(tick_unfreeze());
> + rcu_idle_exit();
> + tick_unfreeze();
> start_critical_timings();
>
> time_end = ns_to_ktime(local_clock());
> @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
> /* Take note of the planned idle state. */
> sched_idle_set_state(target_state);
>
> - trace_cpu_idle_rcuidle(index, dev->cpu);
> + trace_cpu_idle(index, dev->cpu);
> time_start = ns_to_ktime(local_clock());
>
> stop_critical_timings();
> + rcu_idle_enter();
> entered_state = target_state->enter(dev, drv, index);
> + rcu_idle_exit();
> start_critical_timings();
>
> sched_clock_idle_wakeup_event();
> time_end = ns_to_ktime(local_clock());
> - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> + trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
>
> /* The cpu is no longer idle or about to enter idle. */
> sched_idle_set_state(NULL);
> diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> index 44a17366c8ec..4e3d149d64ad 100644
> --- a/kernel/sched/idle.c
> +++ b/kernel/sched/idle.c
> @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
>
> static noinline int __cpuidle cpu_idle_poll(void)
> {
> + trace_cpu_idle(0, smp_processor_id());
> + stop_critical_timings();
> rcu_idle_enter();
> - trace_cpu_idle_rcuidle(0, smp_processor_id());
> local_irq_enable();
> - stop_critical_timings();
>
> while (!tif_need_resched() &&
> - (cpu_idle_force_poll || tick_check_broadcast_expired()))
> + (cpu_idle_force_poll || tick_check_broadcast_expired()))
> cpu_relax();
> - start_critical_timings();
> - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> +
> rcu_idle_exit();
> + start_critical_timings();
> + trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
>
> return 1;
> }
> @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
> local_irq_enable();
> } else {
> stop_critical_timings();
> + rcu_idle_enter();
> arch_cpu_idle();
> + rcu_idle_exit();
> start_critical_timings();
> }
> }
> @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
>
> if (cpuidle_not_available(drv, dev)) {
> tick_nohz_idle_stop_tick();
> - rcu_idle_enter();
>
> default_idle_call();
> goto exit_idle;
> @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
>
> if (idle_should_enter_s2idle() || dev->use_deepest_state) {
> if (idle_should_enter_s2idle()) {
> - rcu_idle_enter();
>
> entered_state = cpuidle_enter_s2idle(drv, dev);
> if (entered_state > 0) {
> local_irq_enable();
> goto exit_idle;
> }
> -
> - rcu_idle_exit();
> }
>
> tick_nohz_idle_stop_tick();
> - rcu_idle_enter();
>
> next_state = cpuidle_find_deepest_state(drv, dev);
> call_cpuidle(drv, dev, next_state);
> @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
> else
> tick_nohz_idle_retain_tick();
>
> - rcu_idle_enter();
> -
> entered_state = call_cpuidle(drv, dev, next_state);
> /*
> * Give the governor an opportunity to reflect on the outcome
> @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
> */
> if (WARN_ON_ONCE(irqs_disabled()))
> local_irq_enable();
> -
> - rcu_idle_exit();
> }
>
> /*
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
2023-10-12 11:53 ` Naresh Kamboju
@ 2023-10-15 17:50 ` Greg Kroah-Hartman
0 siblings, 0 replies; 44+ messages in thread
From: Greg Kroah-Hartman @ 2023-10-15 17:50 UTC (permalink / raw)
To: Naresh Kamboju
Cc: Steven Rostedt, Masami Hiramatsu, stable, patches, linux-kernel,
torvalds, akpm, linux, shuah, patches, lkft-triage, pavel,
jonathanh, f.fainelli, sudipm.mukherjee, srw, rwarsow,
Mark Rutland, Paul E. McKenney, Peter Zijlstra
On Thu, Oct 12, 2023 at 05:23:23PM +0530, Naresh Kamboju wrote:
> On Wed, 11 Oct 2023 at 20:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Wed, 11 Oct 2023 11:05:48 +0200
> > Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> >
> > > > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
> > >
> > > Nope, I can't, it doesn't apply there, so I need a backported, and
> > > TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
> >
> > This is a quick backport for 4.19 as the conflict seemed to be due to added
> > code that is unrelated to this change. I built and booted it, but it should
> > have more testing.
> >
> > Naresh, if you want this in 4.19, please run it through your tests and give
> > your tested by.
> >
> > Greg, please do not take it until Naresh has tested it.
>
> Below patch applied and tested on top of stable rc branches
> - v4.19.296
> - v5.4.258
>
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
> Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Thanks, now queued up.
greg k-h
^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2023-10-15 17:50 UTC | newest]
Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-24 13:18 [PATCH 4.19 00/29] 4.19.282-rc1 review Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 01/29] ARM: dts: rockchip: fix a typo error for rk3288 spdif node Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 02/29] net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 03/29] virtio_net: bugfix overflow inside xdp_linearize_page() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 04/29] i40e: fix accessing vsi->active_filters without holding lock Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 05/29] i40e: fix i40e_setup_misc_vector() error handling Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 06/29] mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 07/29] e1000e: Disable TSO on i219-LM card to increase speed Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 08/29] f2fs: Fix f2fs_truncate_partial_nodes ftrace event Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 09/29] Input: i8042 - add quirk for Fujitsu Lifebook A574/H Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 10/29] selftests: sigaltstack: fix -Wuninitialized Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 11/29] scsi: megaraid_sas: Fix fw_crash_buffer_show() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 12/29] scsi: core: Improve scsi_vpd_inquiry() checks Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 13/29] net: dsa: b53: mmap: add phy ops Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 14/29] s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 15/29] xen/netback: use same error messages for same errors Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 16/29] nilfs2: initialize unused bytes in segment summary blocks Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 17/29] memstick: fix memory leak if card device is never registered Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 18/29] x86/purgatory: Dont generate debug info for purgatory.ro Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 19/29] Revert "ext4: fix use-after-free in ext4_xattr_set_entry" Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 20/29] ext4: remove duplicate definition of ext4_xattr_ibody_inline_set() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 21/29] ext4: fix use-after-free in ext4_xattr_set_entry Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 22/29] udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM) Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 23/29] tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 24/29] inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 25/29] dccp: Call inet6_destroy_sock() via sk->sk_destruct() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 26/29] sctp: " Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 27/29] counter: 104-quad-8: Fix race condition between FLAG and CNTR reads Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 28/29] iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() Greg Kroah-Hartman
2023-04-24 13:18 ` [PATCH 4.19 29/29] ASN.1: Fix check for strdup() success Greg Kroah-Hartman
2023-04-25 1:04 ` [PATCH 4.19 00/29] 4.19.282-rc1 review Guenter Roeck
2023-04-25 10:02 ` Naresh Kamboju
2023-04-26 19:47 ` Pavel Machek
2023-04-26 21:09 ` Steven Rostedt
2023-04-26 22:14 ` Steven Rostedt
2023-04-27 9:49 ` Naresh Kamboju
2023-10-11 1:29 ` Naresh Kamboju
2023-10-11 9:04 ` Greg Kroah-Hartman
2023-10-11 9:05 ` Greg Kroah-Hartman
2023-10-11 14:45 ` Steven Rostedt
2023-10-12 11:53 ` Naresh Kamboju
2023-10-15 17:50 ` Greg Kroah-Hartman
2023-04-25 13:39 ` Chris Paterson
2023-04-26 0:32 ` Shuah Khan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).