ALSA: aloop: Avoid pointer dereference before null-check
Static analysis tools (cppcheck and PVS Studio) report an error
in loopback_snd_timer_period_elapsed() regarding dpcm_play pointer
dereference earlier than its null-check. And although this is a result
of a formal check, and the pointer correctness is also protected
by having a corresponding bit set in the "running" mask, re-ordering
of the lines can imake the code even formally correct and eliminate
those static analysis error reports.
Fixes: 26c53379f9
("ALSA: aloop: Support selection of snd_timer instead of jiffies")
Reported-by: Eugeniu Rosca <erosca@de.adit-jv.com>
Signed-off-by: Andrew Gabbasov <andrew_gabbasov@mentor.com>
Link: https://lore.kernel.org/r/20191127110622.26105-1-andrew_gabbasov@mentor.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8218df93b7
commit
5061bb7065
|
@ -727,10 +727,6 @@ static void loopback_snd_timer_period_elapsed(struct loopback_cable *cable,
|
|||
|
||||
dpcm_play = cable->streams[SNDRV_PCM_STREAM_PLAYBACK];
|
||||
dpcm_capt = cable->streams[SNDRV_PCM_STREAM_CAPTURE];
|
||||
substream_play = (running & (1 << SNDRV_PCM_STREAM_PLAYBACK)) ?
|
||||
dpcm_play->substream : NULL;
|
||||
substream_capt = (running & (1 << SNDRV_PCM_STREAM_CAPTURE)) ?
|
||||
dpcm_capt->substream : NULL;
|
||||
|
||||
if (event == SNDRV_TIMER_EVENT_MSTOP) {
|
||||
if (!dpcm_play ||
|
||||
|
@ -741,6 +737,10 @@ static void loopback_snd_timer_period_elapsed(struct loopback_cable *cable,
|
|||
}
|
||||
}
|
||||
|
||||
substream_play = (running & (1 << SNDRV_PCM_STREAM_PLAYBACK)) ?
|
||||
dpcm_play->substream : NULL;
|
||||
substream_capt = (running & (1 << SNDRV_PCM_STREAM_CAPTURE)) ?
|
||||
dpcm_capt->substream : NULL;
|
||||
valid_runtime = (running & (1 << SNDRV_PCM_STREAM_PLAYBACK)) ?
|
||||
dpcm_play->substream->runtime :
|
||||
dpcm_capt->substream->runtime;
|
||||
|
|
Loading…
Reference in New Issue
Block a user