diff options
author | Paulo Marques <pmarques@grupopie.com> | 2005-06-23 03:09:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-23 12:45:18 -0400 |
commit | 543537bd922692bc978e2e356fcd8bfc9c2ee7d5 (patch) | |
tree | 0089e3907e7d6c17c01cffc6ea4a8962ed053079 /net | |
parent | 991114c6fa6a21d1fa4d544abe78592352860c82 (diff) |
[PATCH] create a kstrdup library function
This patch creates a new kstrdup library function and changes the "local"
implementations in several places to use this function.
Most of the changes come from the sound and net subsystems. The sound part
had already been acknowledged by Takashi Iwai and the net part by David S.
Miller.
I left UML alone for now because I would need more time to read the code
carefully before making changes there.
Signed-off-by: Paulo Marques <pmarques@grupopie.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/neighbour.c | 3 | ||||
-rw-r--r-- | net/core/sysctl_net_core.c | 15 | ||||
-rw-r--r-- | net/ipv4/devinet.c | 2 | ||||
-rw-r--r-- | net/ipv6/addrconf.c | 3 | ||||
-rw-r--r-- | net/sunrpc/svcauth_unix.c | 11 |
5 files changed, 7 insertions, 27 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index f6bdcad47da6..851eb927ed97 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <net/sock.h> | 32 | #include <net/sock.h> |
33 | #include <linux/rtnetlink.h> | 33 | #include <linux/rtnetlink.h> |
34 | #include <linux/random.h> | 34 | #include <linux/random.h> |
35 | #include <linux/string.h> | ||
35 | 36 | ||
36 | #define NEIGH_DEBUG 1 | 37 | #define NEIGH_DEBUG 1 |
37 | 38 | ||
@@ -2592,7 +2593,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, | |||
2592 | t->neigh_vars[17].extra1 = dev; | 2593 | t->neigh_vars[17].extra1 = dev; |
2593 | } | 2594 | } |
2594 | 2595 | ||
2595 | dev_name = net_sysctl_strdup(dev_name_source); | 2596 | dev_name = kstrdup(dev_name_source, GFP_KERNEL); |
2596 | if (!dev_name) { | 2597 | if (!dev_name) { |
2597 | err = -ENOBUFS; | 2598 | err = -ENOBUFS; |
2598 | goto free; | 2599 | goto free; |
diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c index c8be646cb191..880a88815211 100644 --- a/net/core/sysctl_net_core.c +++ b/net/core/sysctl_net_core.c | |||
@@ -35,19 +35,6 @@ extern int sysctl_somaxconn; | |||
35 | extern char sysctl_divert_version[]; | 35 | extern char sysctl_divert_version[]; |
36 | #endif /* CONFIG_NET_DIVERT */ | 36 | #endif /* CONFIG_NET_DIVERT */ |
37 | 37 | ||
38 | /* | ||
39 | * This strdup() is used for creating copies of network | ||
40 | * device names to be handed over to sysctl. | ||
41 | */ | ||
42 | |||
43 | char *net_sysctl_strdup(const char *s) | ||
44 | { | ||
45 | char *rv = kmalloc(strlen(s)+1, GFP_KERNEL); | ||
46 | if (rv) | ||
47 | strcpy(rv, s); | ||
48 | return rv; | ||
49 | } | ||
50 | |||
51 | ctl_table core_table[] = { | 38 | ctl_table core_table[] = { |
52 | #ifdef CONFIG_NET | 39 | #ifdef CONFIG_NET |
53 | { | 40 | { |
@@ -177,6 +164,4 @@ ctl_table core_table[] = { | |||
177 | { .ctl_name = 0 } | 164 | { .ctl_name = 0 } |
178 | }; | 165 | }; |
179 | 166 | ||
180 | EXPORT_SYMBOL(net_sysctl_strdup); | ||
181 | |||
182 | #endif | 167 | #endif |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 650dcb12d9a1..d8a10e3dd77d 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1471,7 +1471,7 @@ static void devinet_sysctl_register(struct in_device *in_dev, | |||
1471 | * by sysctl and we wouldn't want anyone to change it under our feet | 1471 | * by sysctl and we wouldn't want anyone to change it under our feet |
1472 | * (see SIOCSIFNAME). | 1472 | * (see SIOCSIFNAME). |
1473 | */ | 1473 | */ |
1474 | dev_name = net_sysctl_strdup(dev_name); | 1474 | dev_name = kstrdup(dev_name, GFP_KERNEL); |
1475 | if (!dev_name) | 1475 | if (!dev_name) |
1476 | goto free; | 1476 | goto free; |
1477 | 1477 | ||
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 14f5c53235fe..a54d4ef3fd35 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -57,6 +57,7 @@ | |||
57 | #endif | 57 | #endif |
58 | #include <linux/delay.h> | 58 | #include <linux/delay.h> |
59 | #include <linux/notifier.h> | 59 | #include <linux/notifier.h> |
60 | #include <linux/string.h> | ||
60 | 61 | ||
61 | #include <net/sock.h> | 62 | #include <net/sock.h> |
62 | #include <net/snmp.h> | 63 | #include <net/snmp.h> |
@@ -3437,7 +3438,7 @@ static void addrconf_sysctl_register(struct inet6_dev *idev, struct ipv6_devconf | |||
3437 | * by sysctl and we wouldn't want anyone to change it under our feet | 3438 | * by sysctl and we wouldn't want anyone to change it under our feet |
3438 | * (see SIOCSIFNAME). | 3439 | * (see SIOCSIFNAME). |
3439 | */ | 3440 | */ |
3440 | dev_name = net_sysctl_strdup(dev_name); | 3441 | dev_name = kstrdup(dev_name, GFP_KERNEL); |
3441 | if (!dev_name) | 3442 | if (!dev_name) |
3442 | goto free; | 3443 | goto free; |
3443 | 3444 | ||
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index 2b99b4028d31..d6baf6fdf8a9 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/err.h> | 8 | #include <linux/err.h> |
9 | #include <linux/seq_file.h> | 9 | #include <linux/seq_file.h> |
10 | #include <linux/hash.h> | 10 | #include <linux/hash.h> |
11 | #include <linux/string.h> | ||
11 | 12 | ||
12 | #define RPCDBG_FACILITY RPCDBG_AUTH | 13 | #define RPCDBG_FACILITY RPCDBG_AUTH |
13 | 14 | ||
@@ -20,14 +21,6 @@ | |||
20 | */ | 21 | */ |
21 | 22 | ||
22 | 23 | ||
23 | static char *strdup(char *s) | ||
24 | { | ||
25 | char *rv = kmalloc(strlen(s)+1, GFP_KERNEL); | ||
26 | if (rv) | ||
27 | strcpy(rv, s); | ||
28 | return rv; | ||
29 | } | ||
30 | |||
31 | struct unix_domain { | 24 | struct unix_domain { |
32 | struct auth_domain h; | 25 | struct auth_domain h; |
33 | int addr_changes; | 26 | int addr_changes; |
@@ -55,7 +48,7 @@ struct auth_domain *unix_domain_find(char *name) | |||
55 | if (new == NULL) | 48 | if (new == NULL) |
56 | return NULL; | 49 | return NULL; |
57 | cache_init(&new->h.h); | 50 | cache_init(&new->h.h); |
58 | new->h.name = strdup(name); | 51 | new->h.name = kstrdup(name, GFP_KERNEL); |
59 | new->h.flavour = RPC_AUTH_UNIX; | 52 | new->h.flavour = RPC_AUTH_UNIX; |
60 | new->addr_changes = 0; | 53 | new->addr_changes = 0; |
61 | new->h.h.expiry_time = NEVER; | 54 | new->h.h.expiry_time = NEVER; |