diff options
Diffstat (limited to 'kernel/sysctl_binary.c')
| -rw-r--r-- | kernel/sysctl_binary.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c index 02e1859f2ca8..58ea8c03662e 100644 --- a/kernel/sysctl_binary.c +++ b/kernel/sysctl_binary.c | |||
| @@ -986,8 +986,9 @@ static ssize_t bin_intvec(struct file *file, | |||
| 986 | size_t length = oldlen / sizeof(*vec); | 986 | size_t length = oldlen / sizeof(*vec); |
| 987 | char *str, *end; | 987 | char *str, *end; |
| 988 | int i; | 988 | int i; |
| 989 | loff_t pos = 0; | ||
| 989 | 990 | ||
| 990 | result = kernel_read(file, 0, buffer, BUFSZ - 1); | 991 | result = kernel_read(file, buffer, BUFSZ - 1, &pos); |
| 991 | if (result < 0) | 992 | if (result < 0) |
| 992 | goto out_kfree; | 993 | goto out_kfree; |
| 993 | 994 | ||
| @@ -1016,6 +1017,7 @@ static ssize_t bin_intvec(struct file *file, | |||
| 1016 | size_t length = newlen / sizeof(*vec); | 1017 | size_t length = newlen / sizeof(*vec); |
| 1017 | char *str, *end; | 1018 | char *str, *end; |
| 1018 | int i; | 1019 | int i; |
| 1020 | loff_t pos = 0; | ||
| 1019 | 1021 | ||
| 1020 | str = buffer; | 1022 | str = buffer; |
| 1021 | end = str + BUFSZ; | 1023 | end = str + BUFSZ; |
| @@ -1029,7 +1031,7 @@ static ssize_t bin_intvec(struct file *file, | |||
| 1029 | str += scnprintf(str, end - str, "%lu\t", value); | 1031 | str += scnprintf(str, end - str, "%lu\t", value); |
| 1030 | } | 1032 | } |
| 1031 | 1033 | ||
| 1032 | result = kernel_write(file, buffer, str - buffer, 0); | 1034 | result = kernel_write(file, buffer, str - buffer, &pos); |
| 1033 | if (result < 0) | 1035 | if (result < 0) |
| 1034 | goto out_kfree; | 1036 | goto out_kfree; |
| 1035 | } | 1037 | } |
| @@ -1057,8 +1059,9 @@ static ssize_t bin_ulongvec(struct file *file, | |||
| 1057 | size_t length = oldlen / sizeof(*vec); | 1059 | size_t length = oldlen / sizeof(*vec); |
| 1058 | char *str, *end; | 1060 | char *str, *end; |
| 1059 | int i; | 1061 | int i; |
| 1062 | loff_t pos = 0; | ||
| 1060 | 1063 | ||
| 1061 | result = kernel_read(file, 0, buffer, BUFSZ - 1); | 1064 | result = kernel_read(file, buffer, BUFSZ - 1, &pos); |
| 1062 | if (result < 0) | 1065 | if (result < 0) |
| 1063 | goto out_kfree; | 1066 | goto out_kfree; |
| 1064 | 1067 | ||
| @@ -1087,6 +1090,7 @@ static ssize_t bin_ulongvec(struct file *file, | |||
| 1087 | size_t length = newlen / sizeof(*vec); | 1090 | size_t length = newlen / sizeof(*vec); |
| 1088 | char *str, *end; | 1091 | char *str, *end; |
| 1089 | int i; | 1092 | int i; |
| 1093 | loff_t pos = 0; | ||
| 1090 | 1094 | ||
| 1091 | str = buffer; | 1095 | str = buffer; |
| 1092 | end = str + BUFSZ; | 1096 | end = str + BUFSZ; |
| @@ -1100,7 +1104,7 @@ static ssize_t bin_ulongvec(struct file *file, | |||
| 1100 | str += scnprintf(str, end - str, "%lu\t", value); | 1104 | str += scnprintf(str, end - str, "%lu\t", value); |
| 1101 | } | 1105 | } |
| 1102 | 1106 | ||
| 1103 | result = kernel_write(file, buffer, str - buffer, 0); | 1107 | result = kernel_write(file, buffer, str - buffer, &pos); |
| 1104 | if (result < 0) | 1108 | if (result < 0) |
| 1105 | goto out_kfree; | 1109 | goto out_kfree; |
| 1106 | } | 1110 | } |
| @@ -1120,8 +1124,9 @@ static ssize_t bin_uuid(struct file *file, | |||
| 1120 | if (oldval && oldlen) { | 1124 | if (oldval && oldlen) { |
| 1121 | char buf[UUID_STRING_LEN + 1]; | 1125 | char buf[UUID_STRING_LEN + 1]; |
| 1122 | uuid_t uuid; | 1126 | uuid_t uuid; |
| 1127 | loff_t pos = 0; | ||
| 1123 | 1128 | ||
| 1124 | result = kernel_read(file, 0, buf, sizeof(buf) - 1); | 1129 | result = kernel_read(file, buf, sizeof(buf) - 1, &pos); |
| 1125 | if (result < 0) | 1130 | if (result < 0) |
| 1126 | goto out; | 1131 | goto out; |
| 1127 | 1132 | ||
| @@ -1154,8 +1159,9 @@ static ssize_t bin_dn_node_address(struct file *file, | |||
| 1154 | char buf[15], *nodep; | 1159 | char buf[15], *nodep; |
| 1155 | unsigned long area, node; | 1160 | unsigned long area, node; |
| 1156 | __le16 dnaddr; | 1161 | __le16 dnaddr; |
| 1162 | loff_t pos = 0; | ||
| 1157 | 1163 | ||
| 1158 | result = kernel_read(file, 0, buf, sizeof(buf) - 1); | 1164 | result = kernel_read(file, buf, sizeof(buf) - 1, &pos); |
| 1159 | if (result < 0) | 1165 | if (result < 0) |
| 1160 | goto out; | 1166 | goto out; |
| 1161 | 1167 | ||
| @@ -1188,6 +1194,7 @@ static ssize_t bin_dn_node_address(struct file *file, | |||
| 1188 | __le16 dnaddr; | 1194 | __le16 dnaddr; |
| 1189 | char buf[15]; | 1195 | char buf[15]; |
| 1190 | int len; | 1196 | int len; |
| 1197 | loff_t pos = 0; | ||
| 1191 | 1198 | ||
| 1192 | result = -EINVAL; | 1199 | result = -EINVAL; |
| 1193 | if (newlen != sizeof(dnaddr)) | 1200 | if (newlen != sizeof(dnaddr)) |
| @@ -1201,7 +1208,7 @@ static ssize_t bin_dn_node_address(struct file *file, | |||
| 1201 | le16_to_cpu(dnaddr) >> 10, | 1208 | le16_to_cpu(dnaddr) >> 10, |
| 1202 | le16_to_cpu(dnaddr) & 0x3ff); | 1209 | le16_to_cpu(dnaddr) & 0x3ff); |
| 1203 | 1210 | ||
| 1204 | result = kernel_write(file, buf, len, 0); | 1211 | result = kernel_write(file, buf, len, &pos); |
| 1205 | if (result < 0) | 1212 | if (result < 0) |
| 1206 | goto out; | 1213 | goto out; |
| 1207 | } | 1214 | } |
