89828f632d
There are a few problems with the error handling in this function. They
mostly center around the alloc_ordered_workqueue() allocation.
1) If that allocation fails or if the kcalloc() prior to it fails then
it leads to a NULL dereference when we call
destroy_workqueue(mhi_cntrl->hiprio_wq).
2) The error code is not set.
3) The "mhi_cntrl->mhi_cmd" allocation is not freed.
The error handling was slightly confusing and I re-ordered it to be in
the exact mirror/reverse order of how things were allocated. I changed
the label names to say what the goto does instead of describing where
the goto comes from.
Fixes:
|
||
---|---|---|
.. | ||
boot.c | ||
debugfs.c | ||
init.c | ||
internal.h | ||
main.c | ||
Makefile | ||
pm.c |