The issue was discovered by static analysis. It turns out that code is
somewhat insane, being
if (x) {...} else { if (x) {...} }
Edited it to do the only reasonable thing, which is to log the
information about the failed call. The most descriptive logging commands
set is taken from original code.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79801
Reported-by: David Binderman <[email protected]>
Signed-off-by: Andrey Utkin <[email protected]>
---
drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
index 7c280f3..1b158f1 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
@@ -951,15 +951,9 @@ static long pvr2_v4l2_ioctl(struct file *file,
if (ret < 0) {
if (pvrusb2_debug & PVR2_TRACE_V4LIOCTL) {
pvr2_trace(PVR2_TRACE_V4LIOCTL,
- "pvr2_v4l2_do_ioctl failure, ret=%ld", ret);
- } else {
- if (pvrusb2_debug & PVR2_TRACE_V4LIOCTL) {
- pvr2_trace(PVR2_TRACE_V4LIOCTL,
- "pvr2_v4l2_do_ioctl failure, ret=%ld"
- " command was:", ret);
- v4l_printk_ioctl(pvr2_hdw_get_driver_name(hdw),
- cmd);
- }
+ "pvr2_v4l2_do_ioctl failure, ret=%ld"
+ " command was:", ret);
+ v4l_printk_ioctl(pvr2_hdw_get_driver_name(hdw), cmd);
}
} else {
pvr2_trace(PVR2_TRACE_V4LIOCTL,
--
1.8.3.2
Nice. I wonder if a previous merge mechanically resulted in this. I
can't imagine deliberately writing code like that.
-Mike
Acked-by: Mike Isely <[email protected]>
On Thu, 10 Jul 2014, Andrey Utkin wrote:
> The issue was discovered by static analysis. It turns out that code is
> somewhat insane, being
> if (x) {...} else { if (x) {...} }
>
> Edited it to do the only reasonable thing, which is to log the
> information about the failed call. The most descriptive logging commands
> set is taken from original code.
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79801
> Reported-by: David Binderman <[email protected]>
> Signed-off-by: Andrey Utkin <[email protected]>
> ---
> drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 12 +++---------
> 1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> index 7c280f3..1b158f1 100644
> --- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> +++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
> @@ -951,15 +951,9 @@ static long pvr2_v4l2_ioctl(struct file *file,
> if (ret < 0) {
> if (pvrusb2_debug & PVR2_TRACE_V4LIOCTL) {
> pvr2_trace(PVR2_TRACE_V4LIOCTL,
> - "pvr2_v4l2_do_ioctl failure, ret=%ld", ret);
> - } else {
> - if (pvrusb2_debug & PVR2_TRACE_V4LIOCTL) {
> - pvr2_trace(PVR2_TRACE_V4LIOCTL,
> - "pvr2_v4l2_do_ioctl failure, ret=%ld"
> - " command was:", ret);
> - v4l_printk_ioctl(pvr2_hdw_get_driver_name(hdw),
> - cmd);
> - }
> + "pvr2_v4l2_do_ioctl failure, ret=%ld"
> + " command was:", ret);
> + v4l_printk_ioctl(pvr2_hdw_get_driver_name(hdw), cmd);
> }
> } else {
> pvr2_trace(PVR2_TRACE_V4LIOCTL,
>
--
Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8