summaryrefslogtreecommitdiff
path: root/drivers/dahdi/vpmadt032_loader
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-02-08 22:49:32 +0000
committerShaun Ruffell <sruffell@digium.com>2010-02-08 22:49:32 +0000
commit42e275be0f7ce08a9fe2adf4815f7fd926a341bb (patch)
tree7aa554e74ca4bf83805d382073efc91967f27f6c /drivers/dahdi/vpmadt032_loader
parent791a3df5afe66a8cbe15ebe030c2956fd2e00818 (diff)
vpmadt032,wcte12xp: Use a timeout on the read/write commands and during load.
It is possible for poorly behaving hardware (and driver bugs) to lockup the modprobe process by having it wait indefinitely for a command to complete that never will. DAHDI-451. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8003 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/vpmadt032_loader')
-rw-r--r--drivers/dahdi/vpmadt032_loader/dahdi_vpmadt032_loader.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/dahdi/vpmadt032_loader/dahdi_vpmadt032_loader.c b/drivers/dahdi/vpmadt032_loader/dahdi_vpmadt032_loader.c
index d64931f..2aa15e9 100644
--- a/drivers/dahdi/vpmadt032_loader/dahdi_vpmadt032_loader.c
+++ b/drivers/dahdi/vpmadt032_loader/dahdi_vpmadt032_loader.c
@@ -116,13 +116,17 @@ static int vpmadt032_load_firmware(struct voicebus *vb)
pci_set_drvdata(vb->pdev, ctx);
old = vb->ops;
vb->ops = &loader_operations;
- wait_for_completion(&ctx->done);
+ if (wait_for_completion_timeout(&ctx->done, HZ*2)) {
+ dev_err(&vb->pdev->dev,
+ "Timeout waiting for load in %s.\n", __func__);
+ ret = -EIO;
+ }
vb->ops = old;
pci_set_drvdata(vb->pdev, old_drvdata);
__vpmadt032_cleanup(ctx->pvt);
error_exit:
kfree(ctx);
- return 0;
+ return ret;
}
static struct vpmadt_loader loader = {