{
int rv;
struct ipmi_addr addr;
- unsigned char *msgdata;
+ struct kernel_ipmi_msg msg;
if (req->addr_len > sizeof(struct ipmi_addr))
return -EINVAL;
if (copy_from_user(&addr, req->addr, req->addr_len))
return -EFAULT;
- msgdata = kmalloc(IPMI_MAX_MSG_LENGTH, GFP_KERNEL);
- if (!msgdata)
+ msg.netfn = req->msg.netfn;
+ msg.cmd = req->msg.cmd;
+ msg.data_len = req->msg.data_len;
+ msg.data = kmalloc(IPMI_MAX_MSG_LENGTH, GFP_KERNEL);
+ if (!msg.data)
return -ENOMEM;
/* From here out we cannot return, we must jump to "out" for
goto out;
}
- if (copy_from_user(msgdata,
+ if (copy_from_user(msg.data,
req->msg.data,
req->msg.data_len))
{
goto out;
}
} else {
- req->msg.data_len = 0;
+ msg.data_len = 0;
}
- req->msg.data = msgdata;
rv = ipmi_request_settime(user,
&addr,
req->msgid,
- &(req->msg),
+ &msg,
NULL,
0,
retries,
retry_time_ms);
out:
- kfree(msgdata);
+ kfree(msg.data);
return rv;
}