mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-22 05:58:54 +07:00
[media] ttpci: address stringop overflow warning
gcc-7.0.1 warns about old code in ttpci: In file included from drivers/media/pci/ttpci/av7110.c:63:0: In function 'irdebi.isra.2', inlined from 'start_debi_dma' at drivers/media/pci/ttpci/av7110.c:376:3, inlined from 'gpioirq' at drivers/media/pci/ttpci/av7110.c:659:3: drivers/media/pci/ttpci/av7110_hw.h:406:3: warning: 'memcpy': specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] memcpy(av7110->debi_virt, (char *) &res, count); In function 'irdebi.isra.2', inlined from 'start_debi_dma' at drivers/media/pci/ttpci/av7110.c:376:3, inlined from 'gpioirq' at drivers/media/pci/ttpci/av7110.c:668:3: drivers/media/pci/ttpci/av7110_hw.h:406:3: warning: 'memcpy': specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=] memcpy(av7110->debi_virt, (char *) &res, count); Apparently, 'count' can be negative here, which will then get turned into a giant size argument for memcpy. Changing the sizes to 'unsigned int' instead seems safe as we already check for maximum sizes, and it also simplifies the code a bit. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
005145378c
commit
69d3973af1
@ -53,11 +53,11 @@
|
|||||||
by Nathan Laredo <laredo@gnu.org> */
|
by Nathan Laredo <laredo@gnu.org> */
|
||||||
|
|
||||||
int av7110_debiwrite(struct av7110 *av7110, u32 config,
|
int av7110_debiwrite(struct av7110 *av7110, u32 config,
|
||||||
int addr, u32 val, int count)
|
int addr, u32 val, unsigned int count)
|
||||||
{
|
{
|
||||||
struct saa7146_dev *dev = av7110->dev;
|
struct saa7146_dev *dev = av7110->dev;
|
||||||
|
|
||||||
if (count <= 0 || count > 32764) {
|
if (count > 32764) {
|
||||||
printk("%s: invalid count %d\n", __func__, count);
|
printk("%s: invalid count %d\n", __func__, count);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -75,12 +75,12 @@ int av7110_debiwrite(struct av7110 *av7110, u32 config,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 av7110_debiread(struct av7110 *av7110, u32 config, int addr, int count)
|
u32 av7110_debiread(struct av7110 *av7110, u32 config, int addr, unsigned int count)
|
||||||
{
|
{
|
||||||
struct saa7146_dev *dev = av7110->dev;
|
struct saa7146_dev *dev = av7110->dev;
|
||||||
u32 result = 0;
|
u32 result = 0;
|
||||||
|
|
||||||
if (count > 32764 || count <= 0) {
|
if (count > 32764) {
|
||||||
printk("%s: invalid count %d\n", __func__, count);
|
printk("%s: invalid count %d\n", __func__, count);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -377,14 +377,14 @@ extern int av7110_fw_request(struct av7110 *av7110, u16 *request_buf,
|
|||||||
|
|
||||||
/* DEBI (saa7146 data extension bus interface) access */
|
/* DEBI (saa7146 data extension bus interface) access */
|
||||||
extern int av7110_debiwrite(struct av7110 *av7110, u32 config,
|
extern int av7110_debiwrite(struct av7110 *av7110, u32 config,
|
||||||
int addr, u32 val, int count);
|
int addr, u32 val, unsigned int count);
|
||||||
extern u32 av7110_debiread(struct av7110 *av7110, u32 config,
|
extern u32 av7110_debiread(struct av7110 *av7110, u32 config,
|
||||||
int addr, int count);
|
int addr, unsigned int count);
|
||||||
|
|
||||||
|
|
||||||
/* DEBI during interrupt */
|
/* DEBI during interrupt */
|
||||||
/* single word writes */
|
/* single word writes */
|
||||||
static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
|
static inline void iwdebi(struct av7110 *av7110, u32 config, int addr, u32 val, unsigned int count)
|
||||||
{
|
{
|
||||||
av7110_debiwrite(av7110, config, addr, val, count);
|
av7110_debiwrite(av7110, config, addr, val, count);
|
||||||
}
|
}
|
||||||
@ -397,7 +397,7 @@ static inline void mwdebi(struct av7110 *av7110, u32 config, int addr,
|
|||||||
av7110_debiwrite(av7110, config, addr, 0, count);
|
av7110_debiwrite(av7110, config, addr, 0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 irdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
|
static inline u32 irdebi(struct av7110 *av7110, u32 config, int addr, u32 val, unsigned int count)
|
||||||
{
|
{
|
||||||
u32 res;
|
u32 res;
|
||||||
|
|
||||||
@ -408,7 +408,7 @@ static inline u32 irdebi(struct av7110 *av7110, u32 config, int addr, u32 val, i
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* DEBI outside interrupts, only for count <= 4! */
|
/* DEBI outside interrupts, only for count <= 4! */
|
||||||
static inline void wdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
|
static inline void wdebi(struct av7110 *av7110, u32 config, int addr, u32 val, unsigned int count)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
@ -417,7 +417,7 @@ static inline void wdebi(struct av7110 *av7110, u32 config, int addr, u32 val, i
|
|||||||
spin_unlock_irqrestore(&av7110->debilock, flags);
|
spin_unlock_irqrestore(&av7110->debilock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 rdebi(struct av7110 *av7110, u32 config, int addr, u32 val, int count)
|
static inline u32 rdebi(struct av7110 *av7110, u32 config, int addr, u32 val, unsigned int count)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 res;
|
u32 res;
|
||||||
|
Loading…
Reference in New Issue
Block a user