[PATCH] media: dvb: mt352, change i2c read buffer from stack, to kernel space

From: rkardell
Date: Thu Oct 07 2021 - 07:44:11 EST


Solve problem with initialization of Mega Sky 580 USB DVB (and other using mt352), error when reading i2c id.


Signed-off-by: rkl099 <rkardell@xxxxxxx>
---
 drivers/media/dvb-frontends/mt352.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-frontends/mt352.c b/drivers/media/dvb-frontends/mt352.c
index 399d5c519..d7f33558d 100644
--- a/drivers/media/dvb-frontends/mt352.c
+++ b/drivers/media/dvb-frontends/mt352.c
@@ -69,7 +69,7 @@ static int mt352_read_register(struct mt352_state* state, u8 reg)
 {
        int ret;
        u8 b0 [] = { reg };
-       u8 b1 [] = { 0 };
+    u8 *b1=kmalloc(1,GFP_KERNEL);
        struct i2c_msg msg [] = { { .addr = state->config.demod_address,
                                    .flags = 0,
                                    .buf = b0, .len = 1 },
@@ -82,12 +82,15 @@ static int mt352_read_register(struct mt352_state* state, u8 reg)
        if (ret != 2) {
                printk("%s: readreg error (reg=%d, ret==%i)\n",
                       __func__, reg, ret);
+               kfree(b1);
                return ret;
        }
-
-       return b1[0];
+    ret=b1[0];
+    kfree(b1);
+       return ret;
 }

+
 static int mt352_sleep(struct dvb_frontend* fe)
 {
        static u8 mt352_softdown[] = { CLOCK_CTL, 0x20, 0x08 };
--
2.30.2