Messages in this thread Patch in this message | | | From | Nicholas Mc Guire <> | Subject | [PATCH V3] staging: fieldbus: anybus-s: consolidate wait_for_completion_timeout return handling | Date | Mon, 29 Apr 2019 08:05:40 +0200 |
| |
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@osadl.org> ---
Problem located with experimental API conformance checking cocci script
V3: As requested by Sven Van Asbroeck <thesven73@gmail.com> 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@gmail.com> - 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
| |