aboutsummaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/bin/export-to-postgresql-report
diff options
context:
space:
mode:
authorXuewen Yan <[email protected]>2024-04-22 16:22:38 +0800
committerPeter Zijlstra <[email protected]>2024-04-22 13:01:27 +0200
commit1560d1f6eb6b398bddd80c16676776c0325fe5fe (patch)
tree8d730e638bc7b98354c51987b2e2affaec272a07 /tools/perf/scripts/python/bin/export-to-postgresql-report
parentafae8002b4fd3560c8f5f1567f3c3202c30a70fa (diff)
sched/eevdf: Prevent vlag from going out of bounds in reweight_eevdf()
It was possible to have pick_eevdf() return NULL, which then causes a NULL-deref. This turned out to be due to entity_eligible() returning falsely negative because of a s64 multiplcation overflow. Specifically, reweight_eevdf() computes the vlag without considering the limit placed upon vlag as update_entity_lag() does, and then the scaling multiplication (remember that weight is 20bit fixed point) can overflow. This then leads to the new vruntime being weird which then causes the above entity_eligible() to go side-ways and claim nothing is eligible. Thus limit the range of vlag accordingly. All this was quite rare, but fatal when it does happen. Closes: https://lore.kernel.org/all/[email protected]/ Closes: https://lore.kernel.org/all/CA+9S74ih+45M_2TPUY_mPPVDhNvyYfy1J1ftSix+KjiTVxg8nw@mail.gmail.com/ Closes: https://lore.kernel.org/lkml/[email protected]/ Fixes: eab03c23c2a1 ("sched/eevdf: Fix vruntime adjustment on reweight") Reported-by: Sergei Trofimovich <[email protected]> Reported-by: Igor Raits <[email protected]> Reported-by: Breno Leitao <[email protected]> Reported-by: kernel test robot <[email protected]> Reported-by: Yujie Liu <[email protected]> Signed-off-by: Xuewen Yan <[email protected]> Reviewed-and-tested-by: Chen Yu <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Diffstat (limited to 'tools/perf/scripts/python/bin/export-to-postgresql-report')
0 files changed, 0 insertions, 0 deletions