diff options
author | Michal Marek <mmarek@suse.cz> | 2010-08-04 07:59:13 -0400 |
---|---|---|
committer | Michal Marek <mmarek@suse.cz> | 2010-08-04 07:59:13 -0400 |
commit | 772320e84588dcbe1600ffb83e5f328f2209ac2a (patch) | |
tree | a7de21b79340aeaa17c58126f6b801b82c77b53a /kernel/sysctl_binary.c | |
parent | 1ce53adf13a54375d2a5c7cdbe341b2558389615 (diff) | |
parent | 9fe6206f400646a2322096b56c59891d530e8d51 (diff) |
Merge commit 'v2.6.35' into kbuild/kbuild
Conflicts:
arch/powerpc/Makefile
Diffstat (limited to 'kernel/sysctl_binary.c')
-rw-r--r-- | kernel/sysctl_binary.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c index 8f5d16e0707a..1357c5786064 100644 --- a/kernel/sysctl_binary.c +++ b/kernel/sysctl_binary.c | |||
@@ -13,6 +13,8 @@ | |||
13 | #include <linux/file.h> | 13 | #include <linux/file.h> |
14 | #include <linux/ctype.h> | 14 | #include <linux/ctype.h> |
15 | #include <linux/netdevice.h> | 15 | #include <linux/netdevice.h> |
16 | #include <linux/kernel.h> | ||
17 | #include <linux/slab.h> | ||
16 | 18 | ||
17 | #ifdef CONFIG_SYSCTL_SYSCALL | 19 | #ifdef CONFIG_SYSCTL_SYSCALL |
18 | 20 | ||
@@ -223,7 +225,6 @@ static const struct bin_table bin_net_ipv4_route_table[] = { | |||
223 | { CTL_INT, NET_IPV4_ROUTE_MTU_EXPIRES, "mtu_expires" }, | 225 | { CTL_INT, NET_IPV4_ROUTE_MTU_EXPIRES, "mtu_expires" }, |
224 | { CTL_INT, NET_IPV4_ROUTE_MIN_PMTU, "min_pmtu" }, | 226 | { CTL_INT, NET_IPV4_ROUTE_MIN_PMTU, "min_pmtu" }, |
225 | { CTL_INT, NET_IPV4_ROUTE_MIN_ADVMSS, "min_adv_mss" }, | 227 | { CTL_INT, NET_IPV4_ROUTE_MIN_ADVMSS, "min_adv_mss" }, |
226 | { CTL_INT, NET_IPV4_ROUTE_SECRET_INTERVAL, "secret_interval" }, | ||
227 | {} | 228 | {} |
228 | }; | 229 | }; |
229 | 230 | ||
@@ -1124,11 +1125,6 @@ out: | |||
1124 | return result; | 1125 | return result; |
1125 | } | 1126 | } |
1126 | 1127 | ||
1127 | static unsigned hex_value(int ch) | ||
1128 | { | ||
1129 | return isdigit(ch) ? ch - '0' : ((ch | 0x20) - 'a') + 10; | ||
1130 | } | ||
1131 | |||
1132 | static ssize_t bin_uuid(struct file *file, | 1128 | static ssize_t bin_uuid(struct file *file, |
1133 | void __user *oldval, size_t oldlen, void __user *newval, size_t newlen) | 1129 | void __user *oldval, size_t oldlen, void __user *newval, size_t newlen) |
1134 | { | 1130 | { |
@@ -1156,7 +1152,8 @@ static ssize_t bin_uuid(struct file *file, | |||
1156 | if (!isxdigit(str[0]) || !isxdigit(str[1])) | 1152 | if (!isxdigit(str[0]) || !isxdigit(str[1])) |
1157 | goto out; | 1153 | goto out; |
1158 | 1154 | ||
1159 | uuid[i] = (hex_value(str[0]) << 4) | hex_value(str[1]); | 1155 | uuid[i] = (hex_to_bin(str[0]) << 4) | |
1156 | hex_to_bin(str[1]); | ||
1160 | str += 2; | 1157 | str += 2; |
1161 | if (*str == '-') | 1158 | if (*str == '-') |
1162 | str++; | 1159 | str++; |
@@ -1331,7 +1328,7 @@ static ssize_t binary_sysctl(const int *name, int nlen, | |||
1331 | ssize_t result; | 1328 | ssize_t result; |
1332 | char *pathname; | 1329 | char *pathname; |
1333 | int flags; | 1330 | int flags; |
1334 | int acc_mode, fmode; | 1331 | int acc_mode; |
1335 | 1332 | ||
1336 | pathname = sysctl_getname(name, nlen, &table); | 1333 | pathname = sysctl_getname(name, nlen, &table); |
1337 | result = PTR_ERR(pathname); | 1334 | result = PTR_ERR(pathname); |
@@ -1342,15 +1339,12 @@ static ssize_t binary_sysctl(const int *name, int nlen, | |||
1342 | if (oldval && oldlen && newval && newlen) { | 1339 | if (oldval && oldlen && newval && newlen) { |
1343 | flags = O_RDWR; | 1340 | flags = O_RDWR; |
1344 | acc_mode = MAY_READ | MAY_WRITE; | 1341 | acc_mode = MAY_READ | MAY_WRITE; |
1345 | fmode = FMODE_READ | FMODE_WRITE; | ||
1346 | } else if (newval && newlen) { | 1342 | } else if (newval && newlen) { |
1347 | flags = O_WRONLY; | 1343 | flags = O_WRONLY; |
1348 | acc_mode = MAY_WRITE; | 1344 | acc_mode = MAY_WRITE; |
1349 | fmode = FMODE_WRITE; | ||
1350 | } else if (oldval && oldlen) { | 1345 | } else if (oldval && oldlen) { |
1351 | flags = O_RDONLY; | 1346 | flags = O_RDONLY; |
1352 | acc_mode = MAY_READ; | 1347 | acc_mode = MAY_READ; |
1353 | fmode = FMODE_READ; | ||
1354 | } else { | 1348 | } else { |
1355 | result = 0; | 1349 | result = 0; |
1356 | goto out_putname; | 1350 | goto out_putname; |
@@ -1361,7 +1355,7 @@ static ssize_t binary_sysctl(const int *name, int nlen, | |||
1361 | if (result) | 1355 | if (result) |
1362 | goto out_putname; | 1356 | goto out_putname; |
1363 | 1357 | ||
1364 | result = may_open(&nd.path, acc_mode, fmode); | 1358 | result = may_open(&nd.path, acc_mode, flags); |
1365 | if (result) | 1359 | if (result) |
1366 | goto out_putpath; | 1360 | goto out_putpath; |
1367 | 1361 | ||