summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
diff options
context:
space:
mode:
authorVinayak Menon <vinmenon@codeaurora.org>2015-05-21 20:44:14 +0530
committerJeevan Shriram <jshriram@codeaurora.org>2016-04-13 11:11:11 -0700
commitef5918f6805d51d9249a59ab6eead53db3e91327 (patch)
treee1be8bc85c3c0da0132f0e030b5b646d080e1a04 /tools/perf/scripts/python
parent1426d1f8d93d9a4eea97c91eb5ebd1357afe7b16 (diff)
lowmemorykiller: use for_each_thread instead of buggy while_each_thread
Couple of cases were reported few months ago, where the cpu was blocked on the following call stack for /seconds/ after which the watchdog fires. test_task_flag(p = 0xE14ABF00, ?) lowmem_shrink(?, sc = 0xD7A03C04) shrink_slab(shrink = 0xD7A03C04, nr_pages_scanned = 0, lru_pages = 120) try_to_free_pages(zonelist = 0xC1116440, ?, ?, ?) __alloc_pages_nodemask(?, order = 0, ?, nodemask = 0x0) __do_page_cache_readahead(mapping = 0xEB819364, filp = 0xCC16DC00, offset = ra_submit(?, ?, ?) filemap_fault(vma = 0xC105D240, vmf = 0xD7A03DC8) There weren't any dumps to analyse the case, but this can be a possible reason. while_each_thread is known to be buggy and can result in the function looping forever if the task exits, even when protected with rcu_read_lock. Use for_each_thread instead. More details on the problems with while_each_thread can be found at https://lkml.org/lkml/2013/12/2/320 Change-Id: I5eb6e4b463f81142a2a7824db389201357432ec7 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions