wait_for_completion_timeout() returns unsigned long (0 on timeout or remaining jiffies) not int - so this type error allows for a theoretically int overflow - though not in this case where TIMEOUT is only HZ*2). To fix this type inconsistency the completion is wrapped into the if() rather than introducing an additional unsigned long variable. Along with fixing this type inconsistency the fall-through if is consolidated to a single if-block. Signed-off-by: Nicholas Mc Guire <hofrat@xxxxxxxxx> --- Problem located with experimental API conformance checking cocci script V3: As requested by Sven Van Asbroeck <thesven73@xxxxxxxxx> cleanup the commit message to make it more clear what the impact of the proposed change is....lets see if this is any better. V2: The original patch's logic was wrong as it was skipping the fall-through if so using the fix proposed by Sven Van Asbroeck <thesven73@xxxxxxxxx> - This solution also eliminates the need to introduce an additional variable - Thanks ! Patch was compile-tested with. x86_64_defconfig + OF=y, FIELDBUS_DEV=m, HMS_ANYBUSS_BUS=m (with an unrelated sparse warnings (cast to restricted __be16)) Patch is against 5.1-rc6 (localversion-next is next-20190426) drivers/staging/fieldbus/anybuss/host.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/staging/fieldbus/anybuss/host.c b/drivers/staging/fieldbus/anybuss/host.c index e34d424..6227daf 100644 --- a/drivers/staging/fieldbus/anybuss/host.c +++ b/drivers/staging/fieldbus/anybuss/host.c @@ -1325,11 +1325,11 @@ anybuss_host_common_probe(struct device *dev, * interrupt came in: ready to go ! */ reset_deassert(cd); - ret = wait_for_completion_timeout(&cd->card_boot, TIMEOUT); - if (ret == 0) + if (!wait_for_completion_timeout(&cd->card_boot, TIMEOUT)) { ret = -ETIMEDOUT; - if (ret < 0) goto err_reset; + } + /* * according to the anybus docs, we're allowed to read these * without handshaking / reserving the area -- 2.1.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel