mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-08 18:57:22 +00:00
The clean up in idxd_setup_wqs() has had a couple bugs because the error
handling is a bit subtle. It's simpler to just re-write it in a cleaner
way. The issues here are:
1) If "idxd->max_wqs" is <= 0 then we call put_device(conf_dev) when
"conf_dev" hasn't been initialized.
2) If kzalloc_node() fails then again "conf_dev" is invalid. It's
either uninitialized or it points to the "conf_dev" from the
previous iteration so it leads to a double free.
It's better to free partial loop iterations within the loop and then
the unwinding at the end can handle whole loop iterations. I also
renamed the labels to describe what the goto does and not where the goto
was located.
Fixes:
|
History
|
|
|---|---|---|
| .. | ||
| bus.c | ||
| cdev.c | ||
| compat.c | ||
| debugfs.c | ||
| defaults.c | ||
| device.c | ||
| dma.c | ||
| idxd.h | ||
| init.c | ||
| irq.c | ||
| Makefile | ||
| perfmon.c | ||
| perfmon.h | ||
| registers.h | ||
| submit.c | ||
| sysfs.c | ||