ALSA: lx646es: Fix possible uninitialized variable reference
authorTakashi Iwai <tiwai@suse.de>
Fri, 15 Apr 2016 13:28:52 +0000 (15:28 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 15 Apr 2016 13:28:52 +0000 (15:28 +0200)
lx_pipe_state() checks the return value from lx_message_send_atomic()
and breaks the loop only when it's a negative value.  However,
lx_message_send_atomic() may return a positive error code (as the
return code from the hardware), and then lx_pipe_state() tries to
compare the uninitialized current_state variable.

Fix this behavior by checking the positive non-zero error code as
well.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/lx6464es/lx_core.c

index f3d62020ef66c95119461a8836a650f30071f39d..a80684bdc30d6ee3cdad09e6e99be4cef902b7c3 100644 (file)
@@ -644,7 +644,7 @@ static int lx_pipe_wait_for_state(struct lx6464es *chip, u32 pipe,
                if (err < 0)
                        return err;
 
-               if (current_state == state)
+               if (!err && current_state == state)
                        return 0;
 
                mdelay(1);