From 56b50e9752c4948c790eb5b81eaa18373e70209d Mon Sep 17 00:00:00 2001 From: Goutam Bose Date: Thu, 5 Aug 2021 19:32:42 +0530 Subject: [PATCH] Revert "ipa: Fix to match correct values after..." This reverts commit bdbc1bf0a98394981558eec00d6ce48336d353a9. --- drivers/platform/msm/ipa/ipa_v3/ipa.c | 91 +++++++++++++-------------- 1 file changed, 42 insertions(+), 49 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 3b02a4192da3..1f63f9b26f3e 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -1026,9 +1026,8 @@ static int ipa3_ioctl_add_rt_rule_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_add_rt_rule_v2 ) + - ((struct ipa_ioc_add_rt_rule_v2 *) - header)->rule_add_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_add_rt_rule_v2 *) + header)->rule_add_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_rt_rule_add_i) * pre_entry; uptr = ((struct ipa_ioc_add_rt_rule_v2 *) @@ -1039,7 +1038,7 @@ static int ipa3_ioctl_add_rt_rule_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1071,7 +1070,7 @@ static int ipa3_ioctl_add_rt_rule_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_rt_rule_add_i), - (void *)(((struct ipa_ioc_add_rt_rule_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_add_rt_rule_v2 *) header)->rule_add_size, ((struct ipa_ioc_add_rt_rule_v2 *) @@ -1086,13 +1085,13 @@ static int ipa3_ioctl_add_rt_rule_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_add_rt_rule_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_add_rt_rule_v2 *) header)->rule_add_size, kptr + i * sizeof(struct ipa_rt_rule_add_i), ((struct ipa_ioc_add_rt_rule_v2 *) header)->rule_add_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1142,9 +1141,8 @@ static int ipa3_ioctl_add_rt_rule_ext_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_add_rt_rule_ext_v2 ) + - ((struct ipa_ioc_add_rt_rule_ext_v2 *) - header)->rule_add_ext_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_add_rt_rule_ext_v2 *) + header)->rule_add_ext_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_rt_rule_add_ext_i) * pre_entry; @@ -1156,7 +1154,7 @@ static int ipa3_ioctl_add_rt_rule_ext_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1189,7 +1187,7 @@ static int ipa3_ioctl_add_rt_rule_ext_v2(unsigned long arg) for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_rt_rule_add_ext_i), - (void *)(((struct ipa_ioc_add_rt_rule_ext_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_add_rt_rule_ext_v2 *) header)->rule_add_ext_size, ((struct ipa_ioc_add_rt_rule_ext_v2 *) @@ -1204,14 +1202,14 @@ static int ipa3_ioctl_add_rt_rule_ext_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_add_rt_rule_ext_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_add_rt_rule_ext_v2 *) header)->rule_add_ext_size, kptr + i * sizeof(struct ipa_rt_rule_add_ext_i), ((struct ipa_ioc_add_rt_rule_ext_v2 *) header)->rule_add_ext_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1260,9 +1258,8 @@ static int ipa3_ioctl_add_rt_rule_after_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_add_rt_rule_after_v2) + - ((struct ipa_ioc_add_rt_rule_after_v2 *) - header)->rule_add_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_add_rt_rule_after_v2 *) + header)->rule_add_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_rt_rule_add_i) * pre_entry; @@ -1274,7 +1271,7 @@ static int ipa3_ioctl_add_rt_rule_after_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1305,7 +1302,7 @@ static int ipa3_ioctl_add_rt_rule_after_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_rt_rule_add_i), - (void *)(((struct ipa_ioc_add_rt_rule_after_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_add_rt_rule_after_v2 *) header)->rule_add_size, ((struct ipa_ioc_add_rt_rule_after_v2 *) @@ -1320,13 +1317,13 @@ static int ipa3_ioctl_add_rt_rule_after_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_add_rt_rule_after_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_add_rt_rule_after_v2 *) header)->rule_add_size, kptr + i * sizeof(struct ipa_rt_rule_add_i), ((struct ipa_ioc_add_rt_rule_after_v2 *) header)->rule_add_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1375,9 +1372,8 @@ static int ipa3_ioctl_mdfy_rt_rule_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_mdfy_rt_rule_v2) + - ((struct ipa_ioc_mdfy_rt_rule_v2 *) - header)->rule_mdfy_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_mdfy_rt_rule_v2 *) + header)->rule_mdfy_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_rt_rule_mdfy_i) * pre_entry; @@ -1389,7 +1385,7 @@ static int ipa3_ioctl_mdfy_rt_rule_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1420,7 +1416,7 @@ static int ipa3_ioctl_mdfy_rt_rule_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_rt_rule_mdfy_i), - (void *)(((struct ipa_ioc_mdfy_rt_rule_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_mdfy_rt_rule_v2 *) header)->rule_mdfy_size, ((struct ipa_ioc_mdfy_rt_rule_v2 *) @@ -1435,13 +1431,13 @@ static int ipa3_ioctl_mdfy_rt_rule_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_mdfy_rt_rule_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_mdfy_rt_rule_v2 *) header)->rule_mdfy_size, kptr + i * sizeof(struct ipa_rt_rule_mdfy_i), ((struct ipa_ioc_mdfy_rt_rule_v2 *) header)->rule_mdfy_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1489,9 +1485,8 @@ static int ipa3_ioctl_add_flt_rule_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_add_flt_rule_v2) + - ((struct ipa_ioc_add_flt_rule_v2 *) - header)->flt_rule_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_add_flt_rule_v2 *) + header)->flt_rule_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_flt_rule_add_i) * pre_entry; @@ -1503,7 +1498,7 @@ static int ipa3_ioctl_add_flt_rule_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1534,7 +1529,7 @@ static int ipa3_ioctl_add_flt_rule_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_flt_rule_add_i), - (void *)(((struct ipa_ioc_add_flt_rule_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_add_flt_rule_v2 *) header)->flt_rule_size, ((struct ipa_ioc_add_flt_rule_v2 *) @@ -1549,13 +1544,13 @@ static int ipa3_ioctl_add_flt_rule_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_add_flt_rule_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_add_flt_rule_v2 *) header)->flt_rule_size, kptr + i * sizeof(struct ipa_flt_rule_add_i), ((struct ipa_ioc_add_flt_rule_v2 *) header)->flt_rule_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1603,9 +1598,8 @@ static int ipa3_ioctl_add_flt_rule_after_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_add_flt_rule_after_v2) + - ((struct ipa_ioc_add_flt_rule_after_v2 *) - header)->flt_rule_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_add_flt_rule_after_v2 *) + header)->flt_rule_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_flt_rule_add_i) * pre_entry; @@ -1617,7 +1611,7 @@ static int ipa3_ioctl_add_flt_rule_after_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1648,7 +1642,7 @@ static int ipa3_ioctl_add_flt_rule_after_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_flt_rule_add_i), - (void *)(((struct ipa_ioc_add_rt_rule_after_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_add_flt_rule_after_v2 *) header)->flt_rule_size, ((struct ipa_ioc_add_flt_rule_after_v2 *) @@ -1663,13 +1657,13 @@ static int ipa3_ioctl_add_flt_rule_after_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_add_rt_rule_after_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_add_flt_rule_after_v2 *) header)->flt_rule_size, kptr + i * sizeof(struct ipa_flt_rule_add_i), ((struct ipa_ioc_add_flt_rule_after_v2 *) header)->flt_rule_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT; @@ -1718,9 +1712,8 @@ static int ipa3_ioctl_mdfy_flt_rule_v2(unsigned long arg) goto free_param_kptr; } /* user payload size */ - usr_pyld_sz = sizeof(struct ipa_ioc_mdfy_flt_rule_v2) + - ((struct ipa_ioc_mdfy_flt_rule_v2 *) - header)->rule_mdfy_size * pre_entry; + usr_pyld_sz = ((struct ipa_ioc_mdfy_flt_rule_v2 *) + header)->rule_mdfy_size * pre_entry; /* actual payload structure size in kernel */ pyld_sz = sizeof(struct ipa_flt_rule_mdfy_i) * pre_entry; @@ -1732,7 +1725,7 @@ static int ipa3_ioctl_mdfy_flt_rule_v2(unsigned long arg) goto free_param_kptr; } /* alloc param with same payload size as user payload */ - param = memdup_user((const void __user *)arg, + param = memdup_user((const void __user *)uptr, usr_pyld_sz); if (IS_ERR(param)) { retval = -EFAULT; @@ -1763,7 +1756,7 @@ static int ipa3_ioctl_mdfy_flt_rule_v2(unsigned long arg) } for (i = 0; i < pre_entry; i++) memcpy(kptr + i * sizeof(struct ipa_flt_rule_mdfy_i), - (void *)(((struct ipa_ioc_mdfy_flt_rule_v2 *)param)->rules) + i * + (void *)param + i * ((struct ipa_ioc_mdfy_flt_rule_v2 *) header)->rule_mdfy_size, ((struct ipa_ioc_mdfy_flt_rule_v2 *) @@ -1778,13 +1771,13 @@ static int ipa3_ioctl_mdfy_flt_rule_v2(unsigned long arg) goto free_param_kptr; } for (i = 0; i < pre_entry; i++) - memcpy((void *)(((struct ipa_ioc_mdfy_flt_rule_v2 *)param)->rules) + i * + memcpy((void *)param + i * ((struct ipa_ioc_mdfy_flt_rule_v2 *) header)->rule_mdfy_size, kptr + i * sizeof(struct ipa_flt_rule_mdfy_i), ((struct ipa_ioc_mdfy_flt_rule_v2 *) header)->rule_mdfy_size); - if (copy_to_user((void __user *)arg, param, + if (copy_to_user((void __user *)uptr, param, usr_pyld_sz)) { IPAERR_RL("copy_to_user fails\n"); retval = -EFAULT;