diff options
Diffstat (limited to 'drivers/media/tuners/r820t.c')
-rw-r--r-- | drivers/media/tuners/r820t.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/media/tuners/r820t.c b/drivers/media/tuners/r820t.c index a7a8452e99d2..c1ce8d3ce877 100644 --- a/drivers/media/tuners/r820t.c +++ b/drivers/media/tuners/r820t.c | |||
@@ -410,9 +410,11 @@ static int r820t_write(struct r820t_priv *priv, u8 reg, const u8 *val, | |||
410 | return 0; | 410 | return 0; |
411 | } | 411 | } |
412 | 412 | ||
413 | static int r820t_write_reg(struct r820t_priv *priv, u8 reg, u8 val) | 413 | static inline int r820t_write_reg(struct r820t_priv *priv, u8 reg, u8 val) |
414 | { | 414 | { |
415 | return r820t_write(priv, reg, &val, 1); | 415 | u8 tmp = val; /* work around GCC PR81715 with asan-stack=1 */ |
416 | |||
417 | return r820t_write(priv, reg, &tmp, 1); | ||
416 | } | 418 | } |
417 | 419 | ||
418 | static int r820t_read_cache_reg(struct r820t_priv *priv, int reg) | 420 | static int r820t_read_cache_reg(struct r820t_priv *priv, int reg) |
@@ -425,17 +427,18 @@ static int r820t_read_cache_reg(struct r820t_priv *priv, int reg) | |||
425 | return -EINVAL; | 427 | return -EINVAL; |
426 | } | 428 | } |
427 | 429 | ||
428 | static int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val, | 430 | static inline int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val, |
429 | u8 bit_mask) | 431 | u8 bit_mask) |
430 | { | 432 | { |
433 | u8 tmp = val; | ||
431 | int rc = r820t_read_cache_reg(priv, reg); | 434 | int rc = r820t_read_cache_reg(priv, reg); |
432 | 435 | ||
433 | if (rc < 0) | 436 | if (rc < 0) |
434 | return rc; | 437 | return rc; |
435 | 438 | ||
436 | val = (rc & ~bit_mask) | (val & bit_mask); | 439 | tmp = (rc & ~bit_mask) | (tmp & bit_mask); |
437 | 440 | ||
438 | return r820t_write(priv, reg, &val, 1); | 441 | return r820t_write(priv, reg, &tmp, 1); |
439 | } | 442 | } |
440 | 443 | ||
441 | static int r820t_read(struct r820t_priv *priv, u8 reg, u8 *val, int len) | 444 | static int r820t_read(struct r820t_priv *priv, u8 reg, u8 *val, int len) |