Using an early return would greatly simplify the function.
What about locking ? dvcman_find_channel_by_id locks and this function doesn't, is it the intentional ?