aboutsummaryrefslogtreecommitdiffstats
path: root/mm/backing-dev.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-05-20 20:20:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-20 20:20:23 -0400
commit57312b75aa06b09c28acd9c5a9c70827da3696d2 (patch)
treec35b230739f4b9a8e50b1651854ad830ca2b9fdf /mm/backing-dev.c
parent1b5e2a7e23439c13f73cacab1cf227f30cb9ae9f (diff)
parent24b42566c3fcbb5a9011d1446783d0f5844ccd45 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: SCSI: fix race in device_create USB: Core: fix race in device_create USB: Phidget: fix race in device_create s390: fix race in device_create SOUND: fix race in device_create UIO: fix race in device_create Power Supply: fix race in device_create LEDS: fix race in device_create IB: fix race in device_create ide: fix race in device_create fbdev: fix race in device_create mm: bdi: fix race in bdi_class device creation Driver core: add device_create_vargs and device_create_drvdata
Diffstat (limited to 'mm/backing-dev.c')
-rw-r--r--mm/backing-dev.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c
index 7c4f9e097095..f2e574dbc300 100644
--- a/mm/backing-dev.c
+++ b/mm/backing-dev.c
@@ -172,30 +172,22 @@ postcore_initcall(bdi_class_init);
172int bdi_register(struct backing_dev_info *bdi, struct device *parent, 172int bdi_register(struct backing_dev_info *bdi, struct device *parent,
173 const char *fmt, ...) 173 const char *fmt, ...)
174{ 174{
175 char *name;
176 va_list args; 175 va_list args;
177 int ret = 0; 176 int ret = 0;
178 struct device *dev; 177 struct device *dev;
179 178
180 va_start(args, fmt); 179 va_start(args, fmt);
181 name = kvasprintf(GFP_KERNEL, fmt, args); 180 dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args);
182 va_end(args); 181 va_end(args);
183
184 if (!name)
185 return -ENOMEM;
186
187 dev = device_create(bdi_class, parent, MKDEV(0, 0), name);
188 if (IS_ERR(dev)) { 182 if (IS_ERR(dev)) {
189 ret = PTR_ERR(dev); 183 ret = PTR_ERR(dev);
190 goto exit; 184 goto exit;
191 } 185 }
192 186
193 bdi->dev = dev; 187 bdi->dev = dev;
194 dev_set_drvdata(bdi->dev, bdi); 188 bdi_debug_register(bdi, dev_name(dev));
195 bdi_debug_register(bdi, name);
196 189
197exit: 190exit:
198 kfree(name);
199 return ret; 191 return ret;
200} 192}
201EXPORT_SYMBOL(bdi_register); 193EXPORT_SYMBOL(bdi_register);