media: r820t: fix r820t_write_reg for KASAN
[platform/kernel/linux-starfive.git] / drivers / media / tuners / r820t.c
index 69a507f..bc92990 100644 (file)
@@ -384,9 +384,11 @@ static int r820t_write(struct r820t_priv *priv, u8 reg, const u8 *val,
        return 0;
 }
 
-static int r820t_write_reg(struct r820t_priv *priv, u8 reg, u8 val)
+static inline int r820t_write_reg(struct r820t_priv *priv, u8 reg, u8 val)
 {
-       return r820t_write(priv, reg, &val, 1);
+       u8 tmp = val; /* work around GCC PR81715 with asan-stack=1 */
+
+       return r820t_write(priv, reg, &tmp, 1);
 }
 
 static int r820t_read_cache_reg(struct r820t_priv *priv, int reg)
@@ -399,17 +401,18 @@ static int r820t_read_cache_reg(struct r820t_priv *priv, int reg)
                return -EINVAL;
 }
 
-static int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val,
+static inline int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val,
                                u8 bit_mask)
 {
+       u8 tmp = val;
        int rc = r820t_read_cache_reg(priv, reg);
 
        if (rc < 0)
                return rc;
 
-       val = (rc & ~bit_mask) | (val & bit_mask);
+       tmp = (rc & ~bit_mask) | (tmp & bit_mask);
 
-       return r820t_write(priv, reg, &val, 1);
+       return r820t_write(priv, reg, &tmp, 1);
 }
 
 static int r820t_read(struct r820t_priv *priv, u8 reg, u8 *val, int len)