ALSA: xen-front: fix unsigned error check on return from to_sndif_format
authorColin Ian King <colin.king@canonical.com>
Sun, 27 May 2018 21:32:19 +0000 (22:32 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 28 May 2018 09:30:33 +0000 (11:30 +0200)
The negative error return from the call to to_sndif_format is being
assigned to an unsigned 8 bit integer and hence the check for a negative
value is always going to be false.  Fix this by using ret as the error
return and hence the negative error can be detected and assign
the u8 sndif_format to ret if there is no error.

Detected by CoverityScan, CID#1469385 ("Unsigned compared against 0")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamoccchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/xen/xen_snd_front_alsa.c

index 5041f83e98d22236d54314b11d229da95e912a18..5a2bd70a2fa159d6c57dbef19017241214dda140 100644 (file)
@@ -466,13 +466,14 @@ static int alsa_prepare(struct snd_pcm_substream *substream)
                u8 sndif_format;
                int ret;
 
-               sndif_format = to_sndif_format(runtime->format);
-               if (sndif_format < 0) {
+               ret = to_sndif_format(runtime->format);
+               if (ret < 0) {
                        dev_err(&stream->front_info->xb_dev->dev,
                                "Unsupported sample format: %d\n",
                                runtime->format);
-                       return sndif_format;
+                       return ret;
                }
+               sndif_format = ret;
 
                ret = xen_snd_front_stream_prepare(&stream->evt_pair->req,
                                                   &stream->sh_buf,