pctv452e: move buffer to heap, no mutex
authorMax Kellermann <max.kellermann@gmail.com>
Thu, 15 Dec 2016 21:51:07 +0000 (19:51 -0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Feb 2017 07:33:10 +0000 (08:33 +0100)
commitfe6531075e1dd8a7784bf0450186be1380eafb86
tree7f3ce77197d07a13afe93089a0ecb27dfe407794
parent0bd3cb8d470b7fdf0fbf677fcc19da915e740edc
pctv452e: move buffer to heap, no mutex

commit 48775cb73c2e26b7ca9d679875a6e570c8b8e124 upstream.

commit 73d5c5c864f4 ("[media] pctv452e: don't do DMA on stack") caused
a NULL pointer dereference which occurs when dvb_usb_init()
calls dvb_usb_device_power_ctrl() for the first time, before the
frontend has been attached. It also caused a recursive deadlock because
tt3650_ci_msg_locked() has already locked the mutex.

So, partially revert it, but move the buffer to the heap
(DMA capable), not to the stack (may not be DMA capable).
Instead of sharing one buffer which needs mutex protection,
do a new heap allocation for each call.

Fixes: commit 73d5c5c864f4 ("[media] pctv452e: don't do DMA on stack")

Signed-off-by: Max Kellermann <max.kellermann@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/dvb-usb/pctv452e.c