Skip to content

Commit 02aa2a3

Browse files
keestorvalds
authored andcommitted
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>
1 parent 096a8aa commit 02aa2a3

23 files changed

Lines changed: 25 additions & 26 deletions

File tree

drivers/base/attribute_container.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ attribute_container_add_device(struct device *dev,
167167
ic->classdev.parent = get_device(dev);
168168
ic->classdev.class = cont->class;
169169
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));
171171
if (fn)
172172
fn(cont, dev, &ic->classdev);
173173
else

drivers/devfreq/devfreq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
477477
GFP_KERNEL);
478478
devfreq->last_stat_updated = jiffies;
479479

480-
dev_set_name(&devfreq->dev, dev_name(dev));
480+
dev_set_name(&devfreq->dev, "%s", dev_name(dev));
481481
err = device_register(&devfreq->dev);
482482
if (err) {
483483
put_device(&devfreq->dev);

drivers/extcon/extcon-class.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ int extcon_dev_register(struct extcon_dev *edev, struct device *dev)
602602
edev->dev->class = extcon_class;
603603
edev->dev->release = extcon_dev_release;
604604

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));
606606

607607
if (edev->max_supported) {
608608
char buf[10];

drivers/hsi/hsi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ static void hsi_new_client(struct hsi_port *port, struct hsi_board_info *info)
7575
cl->device.bus = &hsi_bus_type;
7676
cl->device.parent = &port->device;
7777
cl->device.release = hsi_client_release;
78-
dev_set_name(&cl->device, info->name);
78+
dev_set_name(&cl->device, "%s", info->name);
7979
cl->device.platform_data = info->platform_data;
8080
if (info->archdata)
8181
cl->device.archdata = *info->archdata;

drivers/ide/ide-cd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1756,7 +1756,7 @@ static int ide_cd_probe(ide_drive_t *drive)
17561756

17571757
info->dev.parent = &drive->gendev;
17581758
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));
17601760

17611761
if (device_register(&info->dev))
17621762
goto out_free_disk;

drivers/ide/ide-gd.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ static int ide_gd_probe(ide_drive_t *drive)
392392

393393
idkp->dev.parent = &drive->gendev;
394394
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));
396396

397397
if (device_register(&idkp->dev))
398398
goto out_free_disk;

drivers/ide/ide-probe.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ static int ide_register_port(ide_hwif_t *hwif)
545545
int ret;
546546

547547
/* register with global device tree */
548-
dev_set_name(&hwif->gendev, hwif->name);
548+
dev_set_name(&hwif->gendev, "%s", hwif->name);
549549
dev_set_drvdata(&hwif->gendev, hwif);
550550
if (hwif->gendev.parent == NULL)
551551
hwif->gendev.parent = hwif->dev;
@@ -559,7 +559,7 @@ static int ide_register_port(ide_hwif_t *hwif)
559559
}
560560

561561
hwif->portdev = device_create(ide_port_class, &hwif->gendev,
562-
MKDEV(0, 0), hwif, hwif->name);
562+
MKDEV(0, 0), hwif, "%s", hwif->name);
563563
if (IS_ERR(hwif->portdev)) {
564564
ret = PTR_ERR(hwif->portdev);
565565
device_unregister(&hwif->gendev);

drivers/ide/ide-tape.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1985,7 +1985,7 @@ static int ide_tape_probe(ide_drive_t *drive)
19851985

19861986
tape->dev.parent = &drive->gendev;
19871987
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));
19891989

19901990
if (device_register(&tape->dev))
19911991
goto out_free_disk;

drivers/infiniband/core/sysfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,7 @@ int ib_device_register_sysfs(struct ib_device *device,
813813

814814
class_dev->class = &ib_class;
815815
class_dev->parent = device->dma_device;
816-
dev_set_name(class_dev, device->name);
816+
dev_set_name(class_dev, "%s", device->name);
817817
dev_set_drvdata(class_dev, device);
818818

819819
INIT_LIST_HEAD(&device->port_list);

drivers/infiniband/hw/qib/qib_file_ops.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2208,7 +2208,7 @@ int qib_cdev_init(int minor, const char *name,
22082208
goto err_cdev;
22092209
}
22102210

2211-
device = device_create(qib_class, NULL, dev, NULL, name);
2211+
device = device_create(qib_class, NULL, dev, NULL, "%s", name);
22122212
if (!IS_ERR(device))
22132213
goto done;
22142214
ret = PTR_ERR(device);

0 commit comments

Comments
 (0)