[media] au0828: fix possible race condition in usage of dev->ctrlmsg
authorDevin Heitmueller <dheitmueller@kernellabs.com>
Tue, 7 Aug 2012 01:47:07 +0000 (22:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 11 Aug 2012 15:37:55 +0000 (12:37 -0300)
commit77fc286328e6fd9a80ef8ce6963db7fbf4e07a1a
treeb7b320eadf82fd8649790a2791f37a1273661307
parent1240ad56edfdd9ccc70d9cbce6da7d5d939d5e83
[media] au0828: fix possible race condition in usage of dev->ctrlmsg

The register read function is referencing the dev->ctrlmsg structure outside
of the dev->mutex lock, which can cause corruption of the value if multiple
callers are invoking au0828_readreg() simultaneously.

Use a stack variable to hold the result, and copy the buffer returned by
usb_control_msg() to that variable.

In reality, the whole recv_control_msg() function can probably be collapsed
into au0288_readreg() since it is the only caller.

Also get rid of cmd_msg_dump() since the only case in which the function is
ever called only is ever passed a single byte for the response (and it is
already logged).

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/au0828/au0828-core.c