diff options
author | Changming Liu <liu.changm@northeastern.edu> | 2020-05-26 00:39:21 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-06-03 08:12:11 +0200 |
commit | 0c25f3b5b9c13911b8454ca706e94603d5c309a1 (patch) | |
tree | 1f64e341bf45f71a1fbfcc07508ba30907eb2d05 /sound | |
parent | 7499f1cad7edb8a58dadec902b3a1a4690744120 (diff) | |
download | linux-stable-0c25f3b5b9c13911b8454ca706e94603d5c309a1.tar.gz linux-stable-0c25f3b5b9c13911b8454ca706e94603d5c309a1.tar.bz2 linux-stable-0c25f3b5b9c13911b8454ca706e94603d5c309a1.zip |
ALSA: hwdep: fix a left shifting 1 by 31 UB bug
[ Upstream commit fb8cd6481ffd126f35e9e146a0dcf0c4e8899f2e ]
The "info.index" variable can be 31 in "1 << info.index".
This might trigger an undefined behavior since 1 is signed.
Fix this by casting 1 to 1u just to be sure "1u << 31" is defined.
Signed-off-by: Changming Liu <liu.changm@northeastern.edu>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/BL0PR06MB4548170B842CB055C9AF695DE5B00@BL0PR06MB4548.namprd06.prod.outlook.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/core/hwdep.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/core/hwdep.c b/sound/core/hwdep.c index 36d2416f90d9..96b737adf4d2 100644 --- a/sound/core/hwdep.c +++ b/sound/core/hwdep.c @@ -228,14 +228,14 @@ static int snd_hwdep_dsp_load(struct snd_hwdep *hw, if (copy_from_user(&info, _info, sizeof(info))) return -EFAULT; /* check whether the dsp was already loaded */ - if (hw->dsp_loaded & (1 << info.index)) + if (hw->dsp_loaded & (1u << info.index)) return -EBUSY; if (!access_ok(VERIFY_READ, info.image, info.length)) return -EFAULT; err = hw->ops.dsp_load(hw, &info); if (err < 0) return err; - hw->dsp_loaded |= (1 << info.index); + hw->dsp_loaded |= (1u << info.index); return 0; } |