git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'linus' into cpus4096
[pandora-kernel.git]
/
drivers
/
isdn
/
i4l
/
isdn_common.c
diff --git
a/drivers/isdn/i4l/isdn_common.c
b/drivers/isdn/i4l/isdn_common.c
index
d4ad699
..
7188c59
100644
(file)
--- a/
drivers/isdn/i4l/isdn_common.c
+++ b/
drivers/isdn/i4l/isdn_common.c
@@
-1732,7
+1732,7
@@
isdn_open(struct inode *ino, struct file *filep)
int chidx;
int retval = -ENODEV;
int chidx;
int retval = -ENODEV;
-
+ lock_kernel();
if (minor == ISDN_MINOR_STATUS) {
infostruct *p;
if (minor == ISDN_MINOR_STATUS) {
infostruct *p;
@@
-1783,6
+1783,7
@@
isdn_open(struct inode *ino, struct file *filep)
#endif
out:
nonseekable_open(ino, filep);
#endif
out:
nonseekable_open(ino, filep);
+ unlock_kernel();
return retval;
}
return retval;
}
@@
-1924,7
+1925,7
@@
isdn_free_channel(int di, int ch, int usage)
if ((di < 0) || (ch < 0)) {
printk(KERN_WARNING "%s: called with invalid drv(%d) or channel(%d)\n",
if ((di < 0) || (ch < 0)) {
printk(KERN_WARNING "%s: called with invalid drv(%d) or channel(%d)\n",
- __
FUNCTION
__, di, ch);
+ __
func
__, di, ch);
return;
}
for (i = 0; i < ISDN_MAX_CHANNELS; i++)
return;
}
for (i = 0; i < ISDN_MAX_CHANNELS; i++)
@@
-1977,8
+1978,10
@@
isdn_writebuf_stub(int drvidx, int chan, const u_char __user * buf, int len)
if (!skb)
return -ENOMEM;
skb_reserve(skb, hl);
if (!skb)
return -ENOMEM;
skb_reserve(skb, hl);
- if (copy_from_user(skb_put(skb, len), buf, len))
+ if (copy_from_user(skb_put(skb, len), buf, len)) {
+ dev_kfree_skb(skb);
return -EFAULT;
return -EFAULT;
+ }
ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb);
if (ret <= 0)
dev_kfree_skb(skb);
ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb);
if (ret <= 0)
dev_kfree_skb(skb);