|
@@ -148,20 +148,15 @@ static int rtw_android_set_block(struct net_device *net, char *command,
|
|
|
int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
|
|
|
{
|
|
|
int ret = 0;
|
|
|
- char *command = NULL;
|
|
|
+ char *command;
|
|
|
int cmd_num;
|
|
|
int bytes_written = 0;
|
|
|
struct android_wifi_priv_cmd priv_cmd;
|
|
|
|
|
|
- if (!ifr->ifr_data) {
|
|
|
- ret = -EINVAL;
|
|
|
- goto exit;
|
|
|
- }
|
|
|
- if (copy_from_user(&priv_cmd, ifr->ifr_data,
|
|
|
- sizeof(struct android_wifi_priv_cmd))) {
|
|
|
- ret = -EFAULT;
|
|
|
- goto exit;
|
|
|
- }
|
|
|
+ if (!ifr->ifr_data)
|
|
|
+ return -EINVAL;
|
|
|
+ if (copy_from_user(&priv_cmd, ifr->ifr_data, sizeof(priv_cmd)))
|
|
|
+ return -EFAULT;
|
|
|
if (priv_cmd.total_len < 1)
|
|
|
return -EINVAL;
|
|
|
command = memdup_user(priv_cmd.buf, priv_cmd.total_len);
|
|
@@ -181,7 +176,7 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
|
|
|
DBG_88E("%s: Ignore private cmd \"%s\" - iface %s is down\n",
|
|
|
__func__, command, ifr->ifr_name);
|
|
|
ret = 0;
|
|
|
- goto exit;
|
|
|
+ goto free;
|
|
|
}
|
|
|
switch (cmd_num) {
|
|
|
case ANDROID_WIFI_CMD_STOP:
|
|
@@ -269,7 +264,7 @@ response:
|
|
|
} else {
|
|
|
ret = bytes_written;
|
|
|
}
|
|
|
-exit:
|
|
|
+free:
|
|
|
kfree(command);
|
|
|
return ret;
|
|
|
}
|