|
@@ -1977,8 +1977,10 @@ isdn_writebuf_stub(int drvidx, int chan, const u_char __user * buf, int len)
|
|
|
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;
|
|
|
+ }
|
|
|
ret = dev->drv[drvidx]->interface->writebuf_skb(drvidx, chan, 1, skb);
|
|
|
if (ret <= 0)
|
|
|
dev_kfree_skb(skb);
|