ALSA: pcm: signedness bug in snd_pcm_plug_alloc()
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 27 Aug 2018 09:21:45 +0000 (12:21 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Nov 2019 08:52:00 +0000 (09:52 +0100)
[ Upstream commit 6f128fa41f310e1f39ebcea9621d2905549ecf52 ]

The "frames" variable is unsigned so the error handling doesn't work
properly.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/core/oss/pcm_plugin.c

index a84a1d3d23e56e15c20710c221dfc52a6a743437..c6888d76ca5e98734d1fe9bfa10b3e85d2de328c 100644 (file)
@@ -111,7 +111,7 @@ int snd_pcm_plug_alloc(struct snd_pcm_substream *plug, snd_pcm_uframes_t frames)
                while (plugin->next) {
                        if (plugin->dst_frames)
                                frames = plugin->dst_frames(plugin, frames);
-                       if (snd_BUG_ON(frames <= 0))
+                       if (snd_BUG_ON((snd_pcm_sframes_t)frames <= 0))
                                return -ENXIO;
                        plugin = plugin->next;
                        err = snd_pcm_plugin_alloc(plugin, frames);
@@ -123,7 +123,7 @@ int snd_pcm_plug_alloc(struct snd_pcm_substream *plug, snd_pcm_uframes_t frames)
                while (plugin->prev) {
                        if (plugin->src_frames)
                                frames = plugin->src_frames(plugin, frames);
-                       if (snd_BUG_ON(frames <= 0))
+                       if (snd_BUG_ON((snd_pcm_sframes_t)frames <= 0))
                                return -ENXIO;
                        plugin = plugin->prev;
                        err = snd_pcm_plugin_alloc(plugin, frames);