diff options
author | Takashi Iwai <tiwai@suse.de> | 2018-01-02 11:00:57 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2018-01-02 18:04:30 +0100 |
commit | 7a0a87160a1dc09220ec485b31d0f82f687a053f (patch) | |
tree | 46a7e5f0eee4a584392c85c21159b171d5196f89 /sound/core/pcm_lib.c | |
parent | c1350bff69d13369c3316f5d5e580021c2196f90 (diff) | |
download | linux-7a0a87160a1dc09220ec485b31d0f82f687a053f.tar.bz2 |
ALSA: pcm: Set config update bits only when really changed
The PCM config space refine codes touch the parameter rmask and cmask
bits when the given config parameter is changed. But in most places
it checks only whether the changed value is non-zero or not, and they
don't consider whether a negative error value is returned. This will
lead to the incorrect update bits set upon the error path.
Fix the codes to check properly the return code whether it's really
updated or an error.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/pcm_lib.c')
-rw-r--r-- | sound/core/pcm_lib.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index 10e7ef7a8804..bfff8d001466 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -1603,7 +1603,7 @@ static int _snd_pcm_hw_param_first(struct snd_pcm_hw_params *params, changed = snd_interval_refine_first(hw_param_interval(params, var)); else return -EINVAL; - if (changed) { + if (changed > 0) { params->cmask |= 1 << var; params->rmask |= 1 << var; } @@ -1649,7 +1649,7 @@ static int _snd_pcm_hw_param_last(struct snd_pcm_hw_params *params, changed = snd_interval_refine_last(hw_param_interval(params, var)); else return -EINVAL; - if (changed) { + if (changed > 0) { params->cmask |= 1 << var; params->rmask |= 1 << var; } |