[Hyper-V] srcu: Lock srcu_data structure in srcu_gp_start()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned | ||
Cosmic |
Fix Released
|
Undecided
|
Unassigned | ||
linux-azure (Ubuntu) |
Fix Released
|
Medium
|
Marcelo Cerri | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Marcelo Cerri | ||
Cosmic |
Fix Released
|
Undecided
|
Marcelo Cerri |
Bug Description
We had a customer seeing traces like the following:
tack trace from kern.log:
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
2018-10-
Error Code: INFO: task kworker/u16:0:16678 blocked for more than 120 seconds.
We are seeing more issue with fsnotify related callbacks. These are not a soft/hard lockup but seem to significantly degrade the responsiveness of systemd (and from there everything else).
The following upstream commit may fix this issue, but it is in Paul's RCU tree and not in linux-next or upstream yet:
srcu: Lock srcu_data structure in srcu_gp_start()
The srcu_gp_start() function is called with the srcu_struct structure's
->lock held, but not with the srcu_data structure's ->lock. This is
problematic because this function accesses and updates the srcu_data
structure's ->srcu_cblist, which is protected by that lock. Failing to
hold this lock can result in corruption of the SRCU callback lists,
which in turn can result in arbitrarily bad results.
This commit therefore makes srcu_gp_start() acquire the srcu_data
structure's ->lock across the calls to rcu_segcblist_
rcu_segcblist_
Please investigate this issue and evaluate the proposed fix.
CVE References
- 2017-5715
- 2017-5753
- 2017-5754
- 2018-14625
- 2018-14633
- 2018-14678
- 2018-15471
- 2018-16882
- 2018-18021
- 2018-18397
- 2018-18653
- 2018-18710
- 2018-18955
- 2018-19407
- 2018-19824
- 2018-19854
- 2018-5391
- 2018-6559
- 2018-7755
- 2018-9363
- 2019-3459
- 2019-3460
- 2019-6133
- 2019-6974
- 2019-7221
- 2019-7222
- 2019-7308
- 2019-8912
- 2019-8956
- 2019-8980
- 2019-9003
- 2019-9162
- 2019-9213
Changed in linux-azure (Ubuntu): | |
status: | New → Confirmed |
tags: | added: kernel-da-key kernel-hyper-v |
Changed in linux-azure (Ubuntu): | |
importance: | Undecided → Medium |
status: | Confirmed → Triaged |
Changed in linux-azure (Ubuntu): | |
assignee: | nobody → Joseph Salisbury (jsalisbury) |
status: | Triaged → In Progress |
tags: | added: bjf |
tags: | removed: bjf |
tags: | added: bjf-tracking |
Changed in linux-azure (Ubuntu): | |
assignee: | Joseph Salisbury (jsalisbury) → Marcelo Cerri (mhcerri) |
status: | In Progress → Triaged |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Cosmic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
status: | New → Confirmed |
Changed in linux-azure (Ubuntu Cosmic): | |
status: | New → Confirmed |
Changed in linux-azure (Ubuntu): | |
status: | Triaged → Confirmed |
Changed in linux-hwe (Ubuntu): | |
status: | New → Confirmed |
affects: | linux-hwe (Ubuntu) → linux-meta-hwe (Ubuntu) |
no longer affects: | linux-meta-hwe (Ubuntu) |
no longer affects: | linux-meta-hwe (Ubuntu Bionic) |
no longer affects: | linux-meta-hwe (Ubuntu Cosmic) |
no longer affects: | linux-azure (Ubuntu Bionic) |
no longer affects: | linux-azure (Ubuntu Cosmic) |
Changed in linux-azure (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Cosmic): | |
status: | New → In Progress |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Cosmic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux-azure (Ubuntu Cosmic): | |
importance: | Undecided → Medium |
information type: | Public → Public Security |
Changed in linux-hwe (Ubuntu): | |
assignee: | nobody → overlord (lazamarius1) |
assignee: | overlord (lazamarius1) → nobody |
information type: | Public Security → Public |
no longer affects: | linux-hwe (Ubuntu) |
no longer affects: | linux-hwe (Ubuntu Bionic) |
no longer affects: | linux-hwe (Ubuntu Cosmic) |
no longer affects: | linux-azure (Ubuntu Bionic) |
no longer affects: | linux-azure (Ubuntu Cosmic) |
Changed in linux-azure (Ubuntu Bionic): | |
status: | New → Fix Committed |
Changed in linux-azure (Ubuntu Cosmic): | |
status: | New → Fix Committed |
Changed in linux-azure (Ubuntu Bionic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux-azure (Ubuntu Cosmic): | |
assignee: | nobody → Marcelo Cerri (mhcerri) |
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in linux (Ubuntu Bionic): | |
status: | Incomplete → Confirmed |
Changed in linux (Ubuntu Cosmic): | |
status: | Incomplete → Confirmed |
Changed in linux-azure (Ubuntu Xenial): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu Bionic): | |
status: | Confirmed → Fix Committed |
Changed in linux (Ubuntu Cosmic): | |
status: | Confirmed → Fix Committed |
tags: | added: cscc |
Changed in linux (Ubuntu Xenial): | |
status: | Confirmed → New |
Changed in linux (Ubuntu): | |
status: | Confirmed → Fix Released |
Changed in linux (Ubuntu Xenial): | |
status: | New → Invalid |
Hi, Josh. Do you have an specific workload that triggers that issue?