projects
/
GitHub
/
LineageOS
/
G12
/
android_kernel_amlogic_linux-4.9.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
771d03e
)
cgroup, netclassid: add a preemption point to write_classid
author
Michal Hocko
<mhocko@suse.com>
Thu, 18 Oct 2018 08:56:17 +0000
(10:56 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Tue, 13 Nov 2018 19:16:51 +0000
(11:16 -0800)
[ Upstream commit
a90e90b7d55e789c71d85b946ffb5c1ab2f137ca
]
We have seen a customer complaining about soft lockups on !PREEMPT
kernel config with 4.4 based kernel
[
1072141
.435366] NMI watchdog: BUG: soft lockup - CPU#21 stuck for 22s! [systemd:1]
[
1072141
.444090] Modules linked in: mpt3sas raid_class binfmt_misc af_packet 8021q garp mrp stp llc xfs libcrc32c bonding iscsi_ibft iscsi_boot_sysfs msr ext4 crc16 jbd2 mbcache cdc_ether usbnet mii joydev hid_generic usbhid intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel ipmi_ssif mgag200 i2c_algo_bit ttm ipmi_devintf drbg ixgbe drm_kms_helper vxlan ansi_cprng ip6_udp_tunnel drm aesni_intel udp_tunnel aes_x86_64 iTCO_wdt syscopyarea ptp xhci_pci lrw iTCO_vendor_support pps_core gf128mul ehci_pci glue_helper sysfillrect mdio pcspkr sb_edac ablk_helper cryptd ehci_hcd sysimgblt xhci_hcd fb_sys_fops edac_core mei_me lpc_ich ses usbcore enclosure dca mfd_core ipmi_si mei i2c_i801 scsi_transport_sas usb_common ipmi_msghandler shpchp fjes wmi processor button acpi_pad btrfs xor raid6_pq sd_mod crc32c_intel megaraid_sas sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod md_mod autofs4
[
1072141
.444146] Supported: Yes
[
1072141
.444149] CPU: 21 PID: 1 Comm: systemd Not tainted 4.4.121-92.80-default #1
[
1072141
.444150] Hardware name: LENOVO Lenovo System x3650 M5 -[5462P4U]- -[5462P4U]-/01GR451, BIOS -[TCE136H-2.70]- 06/13/2018
[
1072141
.444151] task:
ffff880191bd0040
ti:
ffff880191bd4000
task.ti:
ffff880191bd4000
[
1072141
.444153] RIP: 0010:[<
ffffffff815229f9
>] [<
ffffffff815229f9
>] update_classid_sock+0x29/0x40
[
1072141
.444157] RSP: 0018:
ffff880191bd7d58
EFLAGS:
00000286
[
1072141
.444158] RAX:
ffff883b177cb7c0
RBX:
0000000000000000
RCX:
0000000000000000
[
1072141
.444159] RDX:
00000000000009c7
RSI:
ffff880191bd7d5c
RDI:
ffff8822e29bb200
[
1072141
.444160] RBP:
ffff883a72230980
R08:
0000000000000101
R09:
0000000000000000
[
1072141
.444161] R10:
0000000000000008
R11:
f000000000000000
R12:
ffffffff815229d0
[
1072141
.444162] R13:
0000000000000000
R14:
ffff881fd0a47ac0
R15:
ffff880191bd7f28
[
1072141
.444163] FS:
00007f3e2f1eb8c0
(0000) GS:
ffff882000340000
(0000) knlGS:
0000000000000000
[
1072141
.444164] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[
1072141
.444165] CR2:
00007f3e2f200000
CR3:
0000001ffea4e000
CR4:
00000000001606f0
[
1072141
.444166] Stack:
[
1072141
.444166]
ffffffa800000246
00000000000009c7
ffffffff8121d583
ffff8818312a05c0
[
1072141
.444168]
ffff8818312a1100
ffff880197c3b280
ffff881861422858
ffffffffffffffea
[
1072141
.444170]
ffffffff81522b1c
ffffffff81d0ca20
ffff8817fa17b950
ffff883fdd8121e0
[
1072141
.444171] Call Trace:
[
1072141
.444179] [<
ffffffff8121d583
>] iterate_fd+0x53/0x80
[
1072141
.444182] [<
ffffffff81522b1c
>] write_classid+0x4c/0x80
[
1072141
.444187] [<
ffffffff8111328b
>] cgroup_file_write+0x9b/0x100
[
1072141
.444193] [<
ffffffff81278bcb
>] kernfs_fop_write+0x11b/0x150
[
1072141
.444198] [<
ffffffff81201566
>] __vfs_write+0x26/0x100
[
1072141
.444201] [<
ffffffff81201bed
>] vfs_write+0x9d/0x190
[
1072141
.444203] [<
ffffffff812028c2
>] SyS_write+0x42/0xa0
[
1072141
.444207] [<
ffffffff815f58c3
>] entry_SYSCALL_64_fastpath+0x1e/0xca
[
1072141
.445490] DWARF2 unwinder stuck at entry_SYSCALL_64_fastpath+0x1e/0xca
If a cgroup has many tasks with many open file descriptors then we would
end up in a large loop without any rescheduling point throught the
operation. Add cond_resched once per task.
Signed-off-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/core/netclassid_cgroup.c
patch
|
blob
|
blame
|
history
diff --git
a/net/core/netclassid_cgroup.c
b/net/core/netclassid_cgroup.c
index 46e8830c197986353662f469d5a377ff1b71af43..2e4eef71471da4f426c60ebf119cc7d4886e1017 100644
(file)
--- a/
net/core/netclassid_cgroup.c
+++ b/
net/core/netclassid_cgroup.c
@@
-104,6
+104,7
@@
static int write_classid(struct cgroup_subsys_state *css, struct cftype *cft,
iterate_fd(p->files, 0, update_classid_sock,
(void *)(unsigned long)cs->classid);
task_unlock(p);
+ cond_resched();
}
css_task_iter_end(&it);