drm/bridge: sii902x: re-order conditions to prevent out of bounds read
Subsystems (4)
PATCH 1/2 drm/bridge: sii902x: re-order conditions to prevent out of bounds read
This should check that "i" is within bounds before checking reading from the array.
--- drivers/gpu/drm/bridge/sii902x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/bridge/sii902x.c +2 -2
@@ -589,8 +589,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data,if (ret) goto out; -for (i =0 ; sii902x->audio.i2s_fifo_sequence[i] && - i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence); i++) +for (i =0 ; i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence) && + sii902x->audio.i2s_fifo_sequence[i]; i++)regmap_write (sii902x->regmap,SII902X_TPI_I2S_ENABLE_MAPPING_REG , sii902x->audio.i2s_fifo_sequence[i]);
Signature · 1 line
2.20.1
Am 07.06.2019 09:27, schrieb Dan Carpenter:
Quoted 14 lines
This should check that "i" is within bounds before checking reading from the array.
Fixes ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support")Signed-off-by Dan Carpenter <[email protected]>--- drivers/gpu/drm/bridge/sii902x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/gpu/drm/bridge/sii902x.c +0
-0
drivers/gpu/drm/bridge/sii902x.c static int sii902x_audio_hw_params(struct device *dev, void *data, · line 596
Quoted 10 lines
drivers/gpu/drm/bridge/sii902x.c +2
-2@@ -589,8 +589,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data,if (ret) goto out; -for (i =0 ; sii902x->audio.i2s_fifo_sequence[i] && - i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence); i++) +for (i =0 ; i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence) && + sii902x->audio.i2s_fifo_sequence[i]; i++)regmap_write (sii902x->regmap,SII902X_TPI_I2S_ENABLE_MAPPING_REG , sii902x->audio.i2s_fifo_sequence[i]);
mmmh, i am a big fan of KISS and in this case i would check sii902x->audio.i2s_fifo_sequence[i] outside for(). like:
for (i = 0; i < ARRAY_SIZE(sii902x->audio.i2s_fifo_sequence); i++) {
if (!sii902x->audio.i2s_fifo_sequence[i])
break;
regmap_write(sii902x->regmap,
SII902X_TPI_I2S_ENABLE_MAPPING_REG,
sii902x->audio.i2s_fifo_sequence[i]);
}just my 2 cents,
re,
wh
Quoted 32 lines · walter harms
Am 07.06.2019 09:27, schrieb Dan Carpenter:
Quoted 14 lines
This should check that "i" is within bounds before checking reading from the array.
Fixes ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support")Signed-off-by Dan Carpenter <[email protected]>--- drivers/gpu/drm/bridge/sii902x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/gpu/drm/bridge/sii902x.c +0
-0drivers/gpu/drm/bridge/sii902x.c static int sii902x_audio_hw_params(struct device *dev, void *data, · line 596
Quoted 10 lines
drivers/gpu/drm/bridge/sii902x.c +2
-2@@ -589,8 +589,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data,if (ret) goto out; -for (i =0 ; sii902x->audio.i2s_fifo_sequence[i] && - i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence); i++) +for (i =0 ; i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence) && + sii902x->audio.i2s_fifo_sequence[i]; i++)regmap_write (sii902x->regmap,SII902X_TPI_I2S_ENABLE_MAPPING_REG , sii902x->audio.i2s_fifo_sequence[i]);mmmh, i am a big fan of KISS and in this case i would check sii902x->audio.i2s_fifo_sequence[i] outside
for(). like:
Quoted 3 lines
for (i = 0; i < ARRAY_SIZE(sii902x->audio.i2s_fifo_sequence); i++) {
if (!sii902x->audio.i2s_fifo_sequence[i])
break;That's probably a better way, but either way is acceptable and I left it how the author wrote it.
regards,
dan carpenter
Quoted 5 lines · Dan Carpenter
This should check that "i" is within bounds before checking reading from the array.
Fixes ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support")Signed-off-by Dan Carpenter <[email protected]>
 --
Regards
Andrzej
Quoted 19 lines
--- drivers/gpu/drm/bridge/sii902x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/gpu/drm/bridge/sii902x.c +2
-2@@ -589,8 +589,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data,if (ret) goto out; -for (i =0 ; sii902x->audio.i2s_fifo_sequence[i] && - i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence); i++) +for (i =0 ; i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence) && + sii902x->audio.i2s_fifo_sequence[i]; i++)regmap_write (sii902x->regmap,SII902X_TPI_I2S_ENABLE_MAPPING_REG , sii902x->audio.i2s_fifo_sequence[i]);
Andrzej Hajda
AppliedQuoted 14 lines · Dan Carpenter
This should check that "i" is within bounds before checking reading from the array.
Fixes ff5781634c41 ("drm/bridge: sii902x: Implement HDMI audio support")Signed-off-by Dan Carpenter <[email protected]>--- drivers/gpu/drm/bridge/sii902x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/gpu/drm/bridge/sii902x.c +0
-0
drivers/gpu/drm/bridge/sii902x.c static int sii902x_audio_hw_params(struct device *dev, void *data, · line 596
Quoted 10 lines
drivers/gpu/drm/bridge/sii902x.c +2
-2@@ -589,8 +589,8 @@ static int sii902x_audio_hw_params(struct device *dev, void *data,if (ret) goto out; -for (i =0 ; sii902x->audio.i2s_fifo_sequence[i] && - i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence); i++) +for (i =0 ; i <ARRAY_SIZE (sii902x->audio.i2s_fifo_sequence) && + sii902x->audio.i2s_fifo_sequence[i]; i++)regmap_write (sii902x->regmap,SII902X_TPI_I2S_ENABLE_MAPPING_REG , sii902x->audio.i2s_fifo_sequence[i]);
Queued to drm-misc-next.
--
Regards
Andrzej