On 6/14/22 03:47, Sergey Shtylyov wrote: > Make the 'timeout' parameter to ata_exec_internal_sg() *unsigned int* as > msecs_to_jiffies() that it calls takes just *unsigned int* for the time in > milliseconds. Then follow the suit with ata_exec_internal(), its only > caller; also fix up ata_dev_set_feature(), the only ata_exec_internal()'s > caller that explicitly passes *unsigned long* variable for timeout... > > Found by Linux Verification Center (linuxtesting.org) with the SVACE static > analysis tool. Since you are changing this function signature, can you also make it static since it is only used in libata-core.c ? The declaration in drivers/ata/libata.h is useless. > > Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx> > > --- > This patch is against the 'for-next' branch of Damien's 'libata.git' repo. > > drivers/ata/libata-core.c | 6 +++--- > drivers/ata/libata.h | 4 ++-- > 2 files changed, 5 insertions(+), 5 deletions(-) > > Index: libata/drivers/ata/libata-core.c > =================================================================== > --- libata.orig/drivers/ata/libata-core.c > +++ libata/drivers/ata/libata-core.c > @@ -1472,7 +1472,7 @@ static void ata_qc_complete_internal(str > unsigned ata_exec_internal_sg(struct ata_device *dev, > struct ata_taskfile *tf, const u8 *cdb, > int dma_dir, struct scatterlist *sgl, > - unsigned int n_elem, unsigned long timeout) > + unsigned int n_elem, unsigned int timeout) > { > struct ata_link *link = dev->link; > struct ata_port *ap = link->ap; > @@ -1647,7 +1647,7 @@ unsigned ata_exec_internal_sg(struct ata > unsigned ata_exec_internal(struct ata_device *dev, > struct ata_taskfile *tf, const u8 *cdb, > int dma_dir, void *buf, unsigned int buflen, > - unsigned long timeout) > + unsigned int timeout) > { > struct scatterlist *psg = NULL, sg; > unsigned int n_elem = 0; > @@ -4339,7 +4339,7 @@ unsigned int ata_dev_set_feature(struct > { > struct ata_taskfile tf; > unsigned int err_mask; > - unsigned long timeout = 0; > + unsigned int timeout = 0; > > /* set up set-features taskfile */ > ata_dev_dbg(dev, "set features - SATA features\n"); > Index: libata/drivers/ata/libata.h > =================================================================== > --- libata.orig/drivers/ata/libata.h > +++ libata/drivers/ata/libata.h > @@ -52,11 +52,11 @@ extern u64 ata_tf_read_block(const struc > extern unsigned ata_exec_internal(struct ata_device *dev, > struct ata_taskfile *tf, const u8 *cdb, > int dma_dir, void *buf, unsigned int buflen, > - unsigned long timeout); > + unsigned int timeout); > extern unsigned ata_exec_internal_sg(struct ata_device *dev, > struct ata_taskfile *tf, const u8 *cdb, > int dma_dir, struct scatterlist *sg, > - unsigned int n_elem, unsigned long timeout); > + unsigned int n_elem, unsigned int timeout); > extern int ata_wait_ready(struct ata_link *link, unsigned long deadline, > int (*check_ready)(struct ata_link *link)); > extern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, -- Damien Le Moal Western Digital Research