aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/i4l/isdn_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/i4l/isdn_common.c')
-rw-r--r--drivers/isdn/i4l/isdn_common.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 0f3c66de69bc..7188c59a76ff 100644
--- 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)
1732 int chidx; 1732 int chidx;
1733 int retval = -ENODEV; 1733 int retval = -ENODEV;
1734 1734
1735 1735 lock_kernel();
1736 if (minor == ISDN_MINOR_STATUS) { 1736 if (minor == ISDN_MINOR_STATUS) {
1737 infostruct *p; 1737 infostruct *p;
1738 1738
@@ -1783,6 +1783,7 @@ isdn_open(struct inode *ino, struct file *filep)
1783#endif 1783#endif
1784 out: 1784 out:
1785 nonseekable_open(ino, filep); 1785 nonseekable_open(ino, filep);
1786 unlock_kernel();
1786 return retval; 1787 return retval;
1787} 1788}
1788 1789
@@ -1977,8 +1978,10 @@ isdn_writebuf_stub(int drvidx, int chan, const u_char __user * buf, int len)
1977 if (!skb) 1978 if (!skb)
1978 return -ENOMEM; 1979 return -ENOMEM;
1979 skb_reserve(skb, hl); 1980 skb_reserve(skb, hl);
1980 if (copy_from_user(skb_put(skb, len), buf, len)) 1981 if (copy_from_user(skb_put(skb, len), buf, len)) {
1982 dev_kfree_skb(skb);
1981 return -EFAULT; 1983 return -EFAULT;
1984 }
1982 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb); 1985 ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb);
1983 if (ret <= 0) 1986 if (ret <= 0)
1984 dev_kfree_skb(skb); 1987 dev_kfree_skb(skb);