The *unsigned long* variable 'T' is initialized with an *int* value (luckily always positive) -- to avoid that, declare the 'via_clock' variable as *unsigned int* and make the divisible constant *unsigned* too. While at it, make the 'via_clock' and 'T' variables *const* as they are never re-assigned after initialization -- the object code remains the same as gcc previously used copy propagation anyway... Found by Linux Verification Center (linuxtesting.org) with the SVACE static analysis tool. Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxx> --- This patch is against the 'for-next' branch of Damien Le Moal's 'libata.git' repo. drivers/ata/pata_via.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: libata/drivers/ata/pata_via.c =================================================================== --- libata.orig/drivers/ata/pata_via.c +++ libata/drivers/ata/pata_via.c @@ -248,8 +248,8 @@ static void via_do_set_mode(struct ata_p struct pci_dev *pdev = to_pci_dev(ap->host->dev); struct ata_device *peer = ata_dev_pair(adev); struct ata_timing t, p; - static int via_clock = 33333; /* Bus clock in kHZ */ - unsigned long T = 1000000000 / via_clock; + const unsigned int via_clock = 33333; /* Bus clock in kHz */ + const unsigned long T = 1000000000U / via_clock; unsigned long UT = T; int ut; int offset = 3 - (2*ap->port_no) - adev->devno;