diff options
Diffstat (limited to 'drivers/isdn/pcbit/drv.c')
| -rw-r--r-- | drivers/isdn/pcbit/drv.c | 10 | 
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/isdn/pcbit/drv.c b/drivers/isdn/pcbit/drv.c index 123c1d6c43b..1507d2e83fb 100644 --- a/drivers/isdn/pcbit/drv.c +++ b/drivers/isdn/pcbit/drv.c @@ -411,14 +411,10 @@ static int pcbit_writecmd(const u_char __user *buf, int len, int driver, int cha  			return -EINVAL;  		} -		cbuf = kmalloc(len, GFP_KERNEL); -		if (!cbuf) -			return -ENOMEM; +		cbuf = memdup_user(buf, len); +		if (IS_ERR(cbuf)) +			return PTR_ERR(cbuf); -		if (copy_from_user(cbuf, buf, len)) { -			kfree(cbuf); -			return -EFAULT; -		}  		memcpy_toio(dev->sh_mem, cbuf, len);  		kfree(cbuf);  		return len;  |