OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
259eb82
)
ALSA: hwdep: fix a left shifting 1 by 31 UB bug
author
Changming Liu
<liu.changm@northeastern.edu>
Tue, 26 May 2020 00:39:21 +0000
(
00:39
+0000)
committer
Takashi Iwai
<tiwai@suse.de>
Tue, 26 May 2020 06:18:24 +0000
(08:18 +0200)
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>
sound/core/hwdep.c
patch
|
blob
|
history
diff --git
a/sound/core/hwdep.c
b/sound/core/hwdep.c
index
b412d3b
..
21edb8a
100644
(file)
--- a/
sound/core/hwdep.c
+++ b/
sound/core/hwdep.c
@@
-216,12
+216,12
@@
static int snd_hwdep_dsp_load(struct snd_hwdep *hw,
if (info.index >= 32)
return -EINVAL;
/* check whether the dsp was already loaded */
- if (hw->dsp_loaded & (1 << info.index))
+ if (hw->dsp_loaded & (1
u
<< info.index))
return -EBUSY;
err = hw->ops.dsp_load(hw, &info);
if (err < 0)
return err;
- hw->dsp_loaded |= (1 << info.index);
+ hw->dsp_loaded |= (1
u
<< info.index);
return 0;
}