Commit 02aa2a37636c8fa4fb9322d91be46ff8225b7de0

Authored by Kees Cook
Committed by Linus Torvalds
1 parent 096a8aac6b

drivers: avoid format string in dev_set_name

Calling dev_set_name with a single paramter causes it to be handled as a
format string.  Many callers are passing potentially dynamic string
content, so use "%s" in those cases to avoid any potential accidents,
including wrappers like device_create*() and bdi_register().

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 23 changed files with 25 additions and 26 deletions Side-by-side Diff

drivers/base/attribute_container.c
... ... @@ -167,7 +167,7 @@
167 167 ic->classdev.parent = get_device(dev);
168 168 ic->classdev.class = cont->class;
169 169 cont->class->dev_release = attribute_container_release;
170   - dev_set_name(&ic->classdev, dev_name(dev));
  170 + dev_set_name(&ic->classdev, "%s", dev_name(dev));
171 171 if (fn)
172 172 fn(cont, dev, &ic->classdev);
173 173 else
drivers/devfreq/devfreq.c
... ... @@ -477,7 +477,7 @@
477 477 GFP_KERNEL);
478 478 devfreq->last_stat_updated = jiffies;
479 479  
480   - dev_set_name(&devfreq->dev, dev_name(dev));
  480 + dev_set_name(&devfreq->dev, "%s", dev_name(dev));
481 481 err = device_register(&devfreq->dev);
482 482 if (err) {
483 483 put_device(&devfreq->dev);
drivers/extcon/extcon-class.c
... ... @@ -602,7 +602,7 @@
602 602 edev->dev->class = extcon_class;
603 603 edev->dev->release = extcon_dev_release;
604 604  
605   - dev_set_name(edev->dev, edev->name ? edev->name : dev_name(dev));
  605 + dev_set_name(edev->dev, "%s", edev->name ? edev->name : dev_name(dev));
606 606  
607 607 if (edev->max_supported) {
608 608 char buf[10];
... ... @@ -75,7 +75,7 @@
75 75 cl->device.bus = &hsi_bus_type;
76 76 cl->device.parent = &port->device;
77 77 cl->device.release = hsi_client_release;
78   - dev_set_name(&cl->device, info->name);
  78 + dev_set_name(&cl->device, "%s", info->name);
79 79 cl->device.platform_data = info->platform_data;
80 80 if (info->archdata)
81 81 cl->device.archdata = *info->archdata;
drivers/ide/ide-cd.c
... ... @@ -1756,7 +1756,7 @@
1756 1756  
1757 1757 info->dev.parent = &drive->gendev;
1758 1758 info->dev.release = ide_cd_release;
1759   - dev_set_name(&info->dev, dev_name(&drive->gendev));
  1759 + dev_set_name(&info->dev, "%s", dev_name(&drive->gendev));
1760 1760  
1761 1761 if (device_register(&info->dev))
1762 1762 goto out_free_disk;
drivers/ide/ide-gd.c
... ... @@ -392,7 +392,7 @@
392 392  
393 393 idkp->dev.parent = &drive->gendev;
394 394 idkp->dev.release = ide_disk_release;
395   - dev_set_name(&idkp->dev, dev_name(&drive->gendev));
  395 + dev_set_name(&idkp->dev, "%s", dev_name(&drive->gendev));
396 396  
397 397 if (device_register(&idkp->dev))
398 398 goto out_free_disk;
drivers/ide/ide-probe.c
... ... @@ -545,7 +545,7 @@
545 545 int ret;
546 546  
547 547 /* register with global device tree */
548   - dev_set_name(&hwif->gendev, hwif->name);
  548 + dev_set_name(&hwif->gendev, "%s", hwif->name);
549 549 dev_set_drvdata(&hwif->gendev, hwif);
550 550 if (hwif->gendev.parent == NULL)
551 551 hwif->gendev.parent = hwif->dev;
... ... @@ -559,7 +559,7 @@
559 559 }
560 560  
561 561 hwif->portdev = device_create(ide_port_class, &hwif->gendev,
562   - MKDEV(0, 0), hwif, hwif->name);
  562 + MKDEV(0, 0), hwif, "%s", hwif->name);
563 563 if (IS_ERR(hwif->portdev)) {
564 564 ret = PTR_ERR(hwif->portdev);
565 565 device_unregister(&hwif->gendev);
drivers/ide/ide-tape.c
... ... @@ -1985,7 +1985,7 @@
1985 1985  
1986 1986 tape->dev.parent = &drive->gendev;
1987 1987 tape->dev.release = ide_tape_release;
1988   - dev_set_name(&tape->dev, dev_name(&drive->gendev));
  1988 + dev_set_name(&tape->dev, "%s", dev_name(&drive->gendev));
1989 1989  
1990 1990 if (device_register(&tape->dev))
1991 1991 goto out_free_disk;
drivers/infiniband/core/sysfs.c
... ... @@ -813,7 +813,7 @@
813 813  
814 814 class_dev->class = &ib_class;
815 815 class_dev->parent = device->dma_device;
816   - dev_set_name(class_dev, device->name);
  816 + dev_set_name(class_dev, "%s", device->name);
817 817 dev_set_drvdata(class_dev, device);
818 818  
819 819 INIT_LIST_HEAD(&device->port_list);
drivers/infiniband/hw/qib/qib_file_ops.c
... ... @@ -2208,7 +2208,7 @@
2208 2208 goto err_cdev;
2209 2209 }
2210 2210  
2211   - device = device_create(qib_class, NULL, dev, NULL, name);
  2211 + device = device_create(qib_class, NULL, dev, NULL, "%s", name);
2212 2212 if (!IS_ERR(device))
2213 2213 goto done;
2214 2214 ret = PTR_ERR(device);
drivers/isdn/mISDN/dsp_pipeline.c
... ... @@ -102,7 +102,7 @@
102 102 entry->dev.class = elements_class;
103 103 entry->dev.release = mISDN_dsp_dev_release;
104 104 dev_set_drvdata(&entry->dev, elem);
105   - dev_set_name(&entry->dev, elem->name);
  105 + dev_set_name(&entry->dev, "%s", elem->name);
106 106 ret = device_register(&entry->dev);
107 107 if (ret) {
108 108 printk(KERN_ERR "%s: failed to register %s\n",
drivers/mtd/mtdcore.c
... ... @@ -1151,7 +1151,7 @@
1151 1151  
1152 1152 ret = bdi_init(bdi);
1153 1153 if (!ret)
1154   - ret = bdi_register(bdi, NULL, name);
  1154 + ret = bdi_register(bdi, NULL, "%s", name);
1155 1155  
1156 1156 if (ret)
1157 1157 bdi_destroy(bdi);
drivers/platform/x86/wmi.c
... ... @@ -743,7 +743,7 @@
743 743 wblock->dev.class = &wmi_class;
744 744  
745 745 wmi_gtoa(gblock->guid, guid_string);
746   - dev_set_name(&wblock->dev, guid_string);
  746 + dev_set_name(&wblock->dev, "%s", guid_string);
747 747  
748 748 dev_set_drvdata(&wblock->dev, wblock);
749 749  
... ... @@ -2931,7 +2931,7 @@
2931 2931 device_initialize(&sdkp->dev);
2932 2932 sdkp->dev.parent = dev;
2933 2933 sdkp->dev.class = &sd_disk_class;
2934   - dev_set_name(&sdkp->dev, dev_name(dev));
  2934 + dev_set_name(&sdkp->dev, "%s", dev_name(dev));
2935 2935  
2936 2936 if (device_add(&sdkp->dev))
2937 2937 goto out_free_index;
drivers/staging/android/timed_output.c
... ... @@ -78,7 +78,7 @@
78 78  
79 79 tdev->index = atomic_inc_return(&device_count);
80 80 tdev->dev = device_create(timed_output_class, NULL,
81   - MKDEV(0, tdev->index), NULL, tdev->name);
  81 + MKDEV(0, tdev->index), NULL, "%s", tdev->name);
82 82 if (IS_ERR(tdev->dev))
83 83 return PTR_ERR(tdev->dev);
84 84  
drivers/staging/dgrp/dgrp_sysfs.c
... ... @@ -273,7 +273,7 @@
273 273 sprintf(name, "node%ld", nd->nd_major);
274 274  
275 275 nd->nd_class_dev = device_create(dgrp_class, dgrp_class_nodes_dev,
276   - MKDEV(0, nd->nd_major), NULL, name);
  276 + MKDEV(0, nd->nd_major), NULL, "%s", name);
277 277  
278 278 ret = sysfs_create_group(&nd->nd_class_dev->kobj,
279 279 &dgrp_node_attribute_group);
drivers/uwb/lc-dev.c
... ... @@ -440,7 +440,7 @@
440 440 uwb_dev_init(uwb_dev); /* This sets refcnt to one, we own it */
441 441 uwb_dev->mac_addr = *bce->mac_addr;
442 442 uwb_dev->dev_addr = bce->dev_addr;
443   - dev_set_name(&uwb_dev->dev, macbuf);
  443 + dev_set_name(&uwb_dev->dev, "%s", macbuf);
444 444 result = uwb_dev_add(uwb_dev, &rc->uwb_dev.dev, rc);
445 445 if (result < 0) {
446 446 dev_err(dev, "new device %s: cannot instantiate device\n",
drivers/video/backlight/backlight.c
... ... @@ -304,7 +304,7 @@
304 304 new_bd->dev.class = backlight_class;
305 305 new_bd->dev.parent = parent;
306 306 new_bd->dev.release = bl_device_release;
307   - dev_set_name(&new_bd->dev, name);
  307 + dev_set_name(&new_bd->dev, "%s", name);
308 308 dev_set_drvdata(&new_bd->dev, devdata);
309 309  
310 310 /* Set default properties */
drivers/video/backlight/lcd.c
... ... @@ -219,7 +219,7 @@
219 219 new_ld->dev.class = lcd_class;
220 220 new_ld->dev.parent = parent;
221 221 new_ld->dev.release = lcd_device_release;
222   - dev_set_name(&new_ld->dev, name);
  222 + dev_set_name(&new_ld->dev, "%s", name);
223 223 dev_set_drvdata(&new_ld->dev, devdata);
224 224  
225 225 rc = device_register(&new_ld->dev);
drivers/video/output.c
... ... @@ -97,7 +97,7 @@
97 97 new_dev->props = op;
98 98 new_dev->dev.class = &video_output_class;
99 99 new_dev->dev.parent = dev;
100   - dev_set_name(&new_dev->dev, name);
  100 + dev_set_name(&new_dev->dev, "%s", name);
101 101 dev_set_drvdata(&new_dev->dev, devdata);
102 102 ret_code = device_register(&new_dev->dev);
103 103 if (ret_code) {
drivers/xen/xenbus/xenbus_probe.c
... ... @@ -447,7 +447,7 @@
447 447 if (err)
448 448 goto fail;
449 449  
450   - dev_set_name(&xendev->dev, devname);
  450 + dev_set_name(&xendev->dev, "%s", devname);
451 451  
452 452 /* Register with generic device framework. */
453 453 err = device_register(&xendev->dev);
... ... @@ -515,7 +515,6 @@
515 515 int bdi_setup_and_register(struct backing_dev_info *bdi, char *name,
516 516 unsigned int cap)
517 517 {
518   - char tmp[32];
519 518 int err;
520 519  
521 520 bdi->name = name;
... ... @@ -524,8 +523,8 @@
524 523 if (err)
525 524 return err;
526 525  
527   - sprintf(tmp, "%.28s%s", name, "-%d");
528   - err = bdi_register(bdi, NULL, tmp, atomic_long_inc_return(&bdi_seq));
  526 + err = bdi_register(bdi, NULL, "%.28s-%ld", name,
  527 + atomic_long_inc_return(&bdi_seq));
529 528 if (err) {
530 529 bdi_destroy(bdi);
531 530 return err;
... ... @@ -292,7 +292,7 @@
292 292 }
293 293  
294 294 device_create(sound_class, dev, MKDEV(SOUND_MAJOR, s->unit_minor),
295   - NULL, s->name+6);
  295 + NULL, "%s", s->name+6);
296 296 return s->unit_minor;
297 297  
298 298 fail: