dmaengine: fail device registration if channel registration fails
authorDan Williams <dan.j.williams@intel.com>
Wed, 25 Mar 2009 16:13:23 +0000 (09:13 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 25 Mar 2009 16:13:23 +0000 (09:13 -0700)
commit257b17ca030387cb17314cd1851507bdd1b4ddd5
tree74f88050ecfb70e6370399bc8b34843b22472f85
parent041b62374c7fedc11a8a1eeda2868612d3d1436c
dmaengine: fail device registration if channel registration fails

Atsushi points out:
"If alloc_percpu or kzalloc failed, chan_id does not match with its
position in device->channels list.

And above "continue" looks buggy anyway.  Keeping incomplete channels
in device->channels list looks very dangerous..."

Also, fix up leakage of idr_ref in the idr_pre_get() and channel init
fail cases.

Reported-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/dmaengine.c