On Thu Sep 19 14:27:55 2024 -0300, Desnes Nunes wrote:
> This fixes a 'ISO C90 forbids mixed declarations and code' compilation
> error on af9035_i2c_master_xfer, which is caused by the sanity check added
> on user controlled msg[i], before declaring the demodulator register.
> 
> Fixes: 7bf744f2de0a ("media: dvb-usb-v2: af9035: Fix null-ptr-deref in 
> af9035_i2c_master_xfer")
> Signed-off-by: Desnes Nunes <desn...@redhat.com>
> Link: https://lore.kernel.org/r/20240919172755.196907-1-desn...@redhat.com
> Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>

Patch committed.

Thanks,
Mauro Carvalho Chehab

 drivers/media/usb/dvb-usb-v2/af9035.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

---

diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c 
b/drivers/media/usb/dvb-usb-v2/af9035.c
index 0d2c42819d39..218f712f56b1 100644
--- a/drivers/media/usb/dvb-usb-v2/af9035.c
+++ b/drivers/media/usb/dvb-usb-v2/af9035.c
@@ -322,13 +322,16 @@ static int af9035_i2c_master_xfer(struct i2c_adapter 
*adap,
                        ret = -EOPNOTSUPP;
                } else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
                           (msg[0].addr == state->af9033_i2c_addr[1])) {
+                       /* demod access via firmware interface */
+                       u32 reg;
+
                        if (msg[0].len < 3 || msg[1].len < 1) {
                                ret = -EOPNOTSUPP;
                                goto unlock;
                        }
-                       /* demod access via firmware interface */
-                       u32 reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
-                                       msg[0].buf[2];
+
+                       reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
+                               msg[0].buf[2];
 
                        if (msg[0].addr == state->af9033_i2c_addr[1])
                                reg |= 0x100000;
@@ -385,13 +388,16 @@ static int af9035_i2c_master_xfer(struct i2c_adapter 
*adap,
                        ret = -EOPNOTSUPP;
                } else if ((msg[0].addr == state->af9033_i2c_addr[0]) ||
                           (msg[0].addr == state->af9033_i2c_addr[1])) {
+                       /* demod access via firmware interface */
+                       u32 reg;
+
                        if (msg[0].len < 3) {
                                ret = -EOPNOTSUPP;
                                goto unlock;
                        }
-                       /* demod access via firmware interface */
-                       u32 reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
-                                       msg[0].buf[2];
+
+                       reg = msg[0].buf[0] << 16 | msg[0].buf[1] << 8 |
+                               msg[0].buf[2];
 
                        if (msg[0].addr == state->af9033_i2c_addr[1])
                                reg |= 0x100000;

Reply via email to