git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
drivers
/
isdn
/
act2000
/
act2000_isa.c
diff --git
a/drivers/isdn/act2000/act2000_isa.c
b/drivers/isdn/act2000/act2000_isa.c
index
e84aa5f
..
df7923c
100644
(file)
--- a/
drivers/isdn/act2000/act2000_isa.c
+++ b/
drivers/isdn/act2000/act2000_isa.c
@@
-18,13
+18,6
@@
static act2000_card *irq2card_map[16];
static act2000_card *irq2card_map[16];
-static void
-act2000_isa_delay(long t)
-{
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(t);
-}
-
/*
* Reset Controller, then try to read the Card's signature.
+ Return:
/*
* Reset Controller, then try to read the Card's signature.
+ Return:
@@
-419,7
+412,7
@@
act2000_isa_download(act2000_card * card, act2000_ddef __user * cb)
if (!act2000_isa_reset(card->port))
return -ENXIO;
if (!act2000_isa_reset(card->port))
return -ENXIO;
-
act2000_isa_delay(HZ / 2
);
+
msleep_interruptible(500
);
if(copy_from_user(&cblock, cb, sizeof(cblock)))
return -EFAULT;
length = cblock.length;
if(copy_from_user(&cblock, cb, sizeof(cblock)))
return -EFAULT;
length = cblock.length;
@@
-434,7
+427,10
@@
act2000_isa_download(act2000_card * card, act2000_ddef __user * cb)
l = (length > 1024) ? 1024 : length;
c = 0;
b = buf;
l = (length > 1024) ? 1024 : length;
c = 0;
b = buf;
- copy_from_user(buf, p, l);
+ if (copy_from_user(buf, p, l)) {
+ kfree(buf);
+ return -EFAULT;
+ }
while (c < l) {
if (act2000_isa_writeb(card, *b++)) {
printk(KERN_WARNING
while (c < l) {
if (act2000_isa_writeb(card, *b++)) {
printk(KERN_WARNING
@@
-449,6
+445,6
@@
act2000_isa_download(act2000_card * card, act2000_ddef __user * cb)
p += l;
}
kfree(buf);
p += l;
}
kfree(buf);
-
act2000_isa_delay(HZ / 2
);
+
msleep_interruptible(500
);
return (act2000_isa_getid(card));
}
return (act2000_isa_getid(card));
}