|
@@ -5879,20 +5879,13 @@ out:
|
|
static int ixj_build_filter_cadence(IXJ *j, IXJ_FILTER_CADENCE __user * cp)
|
|
static int ixj_build_filter_cadence(IXJ *j, IXJ_FILTER_CADENCE __user * cp)
|
|
{
|
|
{
|
|
IXJ_FILTER_CADENCE *lcp;
|
|
IXJ_FILTER_CADENCE *lcp;
|
|
- lcp = kmalloc(sizeof(IXJ_FILTER_CADENCE), GFP_KERNEL);
|
|
|
|
- if (lcp == NULL) {
|
|
|
|
|
|
+ lcp = memdup_user(cp, sizeof(IXJ_FILTER_CADENCE));
|
|
|
|
+ if (IS_ERR(lcp)) {
|
|
if(ixjdebug & 0x0001) {
|
|
if(ixjdebug & 0x0001) {
|
|
- printk(KERN_INFO "Could not allocate memory for cadence\n");
|
|
|
|
|
|
+ printk(KERN_INFO "Could not allocate memory for cadence or could not copy cadence to kernel\n");
|
|
}
|
|
}
|
|
- return -ENOMEM;
|
|
|
|
|
|
+ return PTR_ERR(lcp);
|
|
}
|
|
}
|
|
- if (copy_from_user(lcp, cp, sizeof(IXJ_FILTER_CADENCE))) {
|
|
|
|
- if(ixjdebug & 0x0001) {
|
|
|
|
- printk(KERN_INFO "Could not copy cadence to kernel\n");
|
|
|
|
- }
|
|
|
|
- kfree(lcp);
|
|
|
|
- return -EFAULT;
|
|
|
|
- }
|
|
|
|
if (lcp->filter > 5) {
|
|
if (lcp->filter > 5) {
|
|
if(ixjdebug & 0x0001) {
|
|
if(ixjdebug & 0x0001) {
|
|
printk(KERN_INFO "Cadence out of range\n");
|
|
printk(KERN_INFO "Cadence out of range\n");
|