mirror of https://github.com/torvalds/linux.git
dev_energymodel_nl_get_perf_domains_doit() calls
em_perf_domain_get_by_id() but does not check the return value before
passing it to __em_nl_get_pd_size(). When a caller supplies a
non-existent perf domain ID, em_perf_domain_get_by_id() returns NULL,
and __em_nl_get_pd_size() immediately dereferences pd->cpus
(struct offset 0x30), causing a NULL pointer dereference.
The sister handler dev_energymodel_nl_get_perf_table_doit() already
handles this correctly via __em_nl_get_pd_table_id(), which returns
NULL and causes the caller to return -EINVAL. Add the same NULL check
in the get-perf-domains do handler.
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| autosleep.c | ||
| console.c | ||
| em_netlink.c | ||
| em_netlink.h | ||
| em_netlink_autogen.c | ||
| em_netlink_autogen.h | ||
| energy_model.c | ||
| hibernate.c | ||
| main.c | ||
| power.h | ||
| poweroff.c | ||
| process.c | ||
| qos.c | ||
| snapshot.c | ||
| suspend.c | ||
| suspend_test.c | ||
| swap.c | ||
| user.c | ||
| wakelock.c | ||