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 /drivers | |
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 'drivers')
-rw-r--r-- | drivers/md/dm-ioctl.c | 14 | ||||
-rw-r--r-- | drivers/parport/probe.c | 18 |
2 files changed, 8 insertions, 24 deletions
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c index ee3c869d970..200a0688f71 100644 --- a/drivers/md/dm-ioctl.c +++ b/drivers/md/dm-ioctl.c | |||
@@ -122,14 +122,6 @@ static struct hash_cell *__get_uuid_cell(const char *str) | |||
122 | /*----------------------------------------------------------------- | 122 | /*----------------------------------------------------------------- |
123 | * Inserting, removing and renaming a device. | 123 | * Inserting, removing and renaming a device. |
124 | *---------------------------------------------------------------*/ | 124 | *---------------------------------------------------------------*/ |
125 | static inline char *kstrdup(const char *str) | ||
126 | { | ||
127 | char *r = kmalloc(strlen(str) + 1, GFP_KERNEL); | ||
128 | if (r) | ||
129 | strcpy(r, str); | ||
130 | return r; | ||
131 | } | ||
132 | |||
133 | static struct hash_cell *alloc_cell(const char *name, const char *uuid, | 125 | static struct hash_cell *alloc_cell(const char *name, const char *uuid, |
134 | struct mapped_device *md) | 126 | struct mapped_device *md) |
135 | { | 127 | { |
@@ -139,7 +131,7 @@ static struct hash_cell *alloc_cell(const char *name, const char *uuid, | |||
139 | if (!hc) | 131 | if (!hc) |
140 | return NULL; | 132 | return NULL; |
141 | 133 | ||
142 | hc->name = kstrdup(name); | 134 | hc->name = kstrdup(name, GFP_KERNEL); |
143 | if (!hc->name) { | 135 | if (!hc->name) { |
144 | kfree(hc); | 136 | kfree(hc); |
145 | return NULL; | 137 | return NULL; |
@@ -149,7 +141,7 @@ static struct hash_cell *alloc_cell(const char *name, const char *uuid, | |||
149 | hc->uuid = NULL; | 141 | hc->uuid = NULL; |
150 | 142 | ||
151 | else { | 143 | else { |
152 | hc->uuid = kstrdup(uuid); | 144 | hc->uuid = kstrdup(uuid, GFP_KERNEL); |
153 | if (!hc->uuid) { | 145 | if (!hc->uuid) { |
154 | kfree(hc->name); | 146 | kfree(hc->name); |
155 | kfree(hc); | 147 | kfree(hc); |
@@ -273,7 +265,7 @@ static int dm_hash_rename(const char *old, const char *new) | |||
273 | /* | 265 | /* |
274 | * duplicate new. | 266 | * duplicate new. |
275 | */ | 267 | */ |
276 | new_name = kstrdup(new); | 268 | new_name = kstrdup(new, GFP_KERNEL); |
277 | if (!new_name) | 269 | if (!new_name) |
278 | return -ENOMEM; | 270 | return -ENOMEM; |
279 | 271 | ||
diff --git a/drivers/parport/probe.c b/drivers/parport/probe.c index c94963145e1..6e6f42d01e6 100644 --- a/drivers/parport/probe.c +++ b/drivers/parport/probe.c | |||
@@ -48,14 +48,6 @@ static void pretty_print(struct parport *port, int device) | |||
48 | printk("\n"); | 48 | printk("\n"); |
49 | } | 49 | } |
50 | 50 | ||
51 | static char *strdup(char *str) | ||
52 | { | ||
53 | int n = strlen(str)+1; | ||
54 | char *s = kmalloc(n, GFP_KERNEL); | ||
55 | if (!s) return NULL; | ||
56 | return strcpy(s, str); | ||
57 | } | ||
58 | |||
59 | static void parse_data(struct parport *port, int device, char *str) | 51 | static void parse_data(struct parport *port, int device, char *str) |
60 | { | 52 | { |
61 | char *txt = kmalloc(strlen(str)+1, GFP_KERNEL); | 53 | char *txt = kmalloc(strlen(str)+1, GFP_KERNEL); |
@@ -88,16 +80,16 @@ static void parse_data(struct parport *port, int device, char *str) | |||
88 | if (!strcmp(p, "MFG") || !strcmp(p, "MANUFACTURER")) { | 80 | if (!strcmp(p, "MFG") || !strcmp(p, "MANUFACTURER")) { |
89 | if (info->mfr) | 81 | if (info->mfr) |
90 | kfree (info->mfr); | 82 | kfree (info->mfr); |
91 | info->mfr = strdup(sep); | 83 | info->mfr = kstrdup(sep, GFP_KERNEL); |
92 | } else if (!strcmp(p, "MDL") || !strcmp(p, "MODEL")) { | 84 | } else if (!strcmp(p, "MDL") || !strcmp(p, "MODEL")) { |
93 | if (info->model) | 85 | if (info->model) |
94 | kfree (info->model); | 86 | kfree (info->model); |
95 | info->model = strdup(sep); | 87 | info->model = kstrdup(sep, GFP_KERNEL); |
96 | } else if (!strcmp(p, "CLS") || !strcmp(p, "CLASS")) { | 88 | } else if (!strcmp(p, "CLS") || !strcmp(p, "CLASS")) { |
97 | int i; | 89 | int i; |
98 | if (info->class_name) | 90 | if (info->class_name) |
99 | kfree (info->class_name); | 91 | kfree (info->class_name); |
100 | info->class_name = strdup(sep); | 92 | info->class_name = kstrdup(sep, GFP_KERNEL); |
101 | for (u = sep; *u; u++) | 93 | for (u = sep; *u; u++) |
102 | *u = toupper(*u); | 94 | *u = toupper(*u); |
103 | for (i = 0; classes[i].token; i++) { | 95 | for (i = 0; classes[i].token; i++) { |
@@ -112,7 +104,7 @@ static void parse_data(struct parport *port, int device, char *str) | |||
112 | !strcmp(p, "COMMAND SET")) { | 104 | !strcmp(p, "COMMAND SET")) { |
113 | if (info->cmdset) | 105 | if (info->cmdset) |
114 | kfree (info->cmdset); | 106 | kfree (info->cmdset); |
115 | info->cmdset = strdup(sep); | 107 | info->cmdset = kstrdup(sep, GFP_KERNEL); |
116 | /* if it speaks printer language, it's | 108 | /* if it speaks printer language, it's |
117 | probably a printer */ | 109 | probably a printer */ |
118 | if (strstr(sep, "PJL") || strstr(sep, "PCL")) | 110 | if (strstr(sep, "PJL") || strstr(sep, "PCL")) |
@@ -120,7 +112,7 @@ static void parse_data(struct parport *port, int device, char *str) | |||
120 | } else if (!strcmp(p, "DES") || !strcmp(p, "DESCRIPTION")) { | 112 | } else if (!strcmp(p, "DES") || !strcmp(p, "DESCRIPTION")) { |
121 | if (info->description) | 113 | if (info->description) |
122 | kfree (info->description); | 114 | kfree (info->description); |
123 | info->description = strdup(sep); | 115 | info->description = kstrdup(sep, GFP_KERNEL); |
124 | } | 116 | } |
125 | } | 117 | } |
126 | rock_on: | 118 | rock_on: |