[SPARC]: Fix bus_id[] string overflow.
dp->path_component_name can be larger than ->bus_id[] so use a different naming scheme for this stuff. Noticed by Jurij Smakov. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e803915000
commit
f5ef9d11fd
|
@ -237,12 +237,12 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
|
||||||
dev->ofdev.node = dp;
|
dev->ofdev.node = dp;
|
||||||
dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
|
dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
|
||||||
dev->ofdev.dev.bus = &ebus_bus_type;
|
dev->ofdev.dev.bus = &ebus_bus_type;
|
||||||
strcpy(dev->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(dev->ofdev.dev.bus_id, "ebus[%08x]", dp->node);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&dev->ofdev) != 0)
|
if (of_device_register(&dev->ofdev) != 0)
|
||||||
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
||||||
dev->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
|
|
||||||
if ((dp = dp->child) != NULL) {
|
if ((dp = dp->child) != NULL) {
|
||||||
dev->children = (struct linux_ebus_child *)
|
dev->children = (struct linux_ebus_child *)
|
||||||
|
@ -332,12 +332,12 @@ void __init ebus_init(void)
|
||||||
ebus->ofdev.node = dp;
|
ebus->ofdev.node = dp;
|
||||||
ebus->ofdev.dev.parent = &pdev->dev;
|
ebus->ofdev.dev.parent = &pdev->dev;
|
||||||
ebus->ofdev.dev.bus = &ebus_bus_type;
|
ebus->ofdev.dev.bus = &ebus_bus_type;
|
||||||
strcpy(ebus->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(ebus->ofdev.dev.bus_id, "ebus%d", num_ebus);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&ebus->ofdev) != 0)
|
if (of_device_register(&ebus->ofdev) != 0)
|
||||||
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
||||||
ebus->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
|
|
||||||
|
|
||||||
nd = dp->child;
|
nd = dp->child;
|
||||||
|
|
|
@ -651,7 +651,7 @@ build_resources:
|
||||||
if (!parent)
|
if (!parent)
|
||||||
strcpy(op->dev.bus_id, "root");
|
strcpy(op->dev.bus_id, "root");
|
||||||
else
|
else
|
||||||
strcpy(op->dev.bus_id, dp->path_component_name);
|
sprintf(op->dev.bus_id, "%08x", dp->node);
|
||||||
|
|
||||||
if (of_device_register(op)) {
|
if (of_device_register(op)) {
|
||||||
printk("%s: Could not register of device.\n",
|
printk("%s: Could not register of device.\n",
|
||||||
|
|
|
@ -389,12 +389,12 @@ static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_de
|
||||||
dev->ofdev.node = dp;
|
dev->ofdev.node = dp;
|
||||||
dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
|
dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
|
||||||
dev->ofdev.dev.bus = &ebus_bus_type;
|
dev->ofdev.dev.bus = &ebus_bus_type;
|
||||||
strcpy(dev->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(dev->ofdev.dev.bus_id, "ebus[%08x]", dp->node);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&dev->ofdev) != 0)
|
if (of_device_register(&dev->ofdev) != 0)
|
||||||
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
||||||
dev->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
|
|
||||||
dp = dp->child;
|
dp = dp->child;
|
||||||
if (dp) {
|
if (dp) {
|
||||||
|
@ -494,12 +494,12 @@ void __init ebus_init(void)
|
||||||
ebus->ofdev.node = dp;
|
ebus->ofdev.node = dp;
|
||||||
ebus->ofdev.dev.parent = &pdev->dev;
|
ebus->ofdev.dev.parent = &pdev->dev;
|
||||||
ebus->ofdev.dev.bus = &ebus_bus_type;
|
ebus->ofdev.dev.bus = &ebus_bus_type;
|
||||||
strcpy(ebus->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(ebus->ofdev.dev.bus_id, "ebus%d", num_ebus);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&ebus->ofdev) != 0)
|
if (of_device_register(&ebus->ofdev) != 0)
|
||||||
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
printk(KERN_DEBUG "ebus: device registration error for %s!\n",
|
||||||
ebus->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
|
|
||||||
|
|
||||||
child = dp->child;
|
child = dp->child;
|
||||||
|
|
|
@ -115,12 +115,12 @@ static void __init isa_fill_devices(struct sparc_isa_bridge *isa_br)
|
||||||
isa_dev->ofdev.node = dp;
|
isa_dev->ofdev.node = dp;
|
||||||
isa_dev->ofdev.dev.parent = &isa_br->ofdev.dev;
|
isa_dev->ofdev.dev.parent = &isa_br->ofdev.dev;
|
||||||
isa_dev->ofdev.dev.bus = &isa_bus_type;
|
isa_dev->ofdev.dev.bus = &isa_bus_type;
|
||||||
strcpy(isa_dev->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(isa_dev->ofdev.dev.bus_id, "isa[%08x]", dp->node);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&isa_dev->ofdev) != 0) {
|
if (of_device_register(&isa_dev->ofdev) != 0) {
|
||||||
printk(KERN_DEBUG "isa: device registration error for %s!\n",
|
printk(KERN_DEBUG "isa: device registration error for %s!\n",
|
||||||
isa_dev->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
kfree(isa_dev);
|
kfree(isa_dev);
|
||||||
goto next_sibling;
|
goto next_sibling;
|
||||||
}
|
}
|
||||||
|
@ -191,12 +191,12 @@ void __init isa_init(void)
|
||||||
isa_br->ofdev.node = dp;
|
isa_br->ofdev.node = dp;
|
||||||
isa_br->ofdev.dev.parent = &pdev->dev;
|
isa_br->ofdev.dev.parent = &pdev->dev;
|
||||||
isa_br->ofdev.dev.bus = &isa_bus_type;
|
isa_br->ofdev.dev.bus = &isa_bus_type;
|
||||||
strcpy(isa_br->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(isa_br->ofdev.dev.bus_id, "isa%d", index);
|
||||||
|
|
||||||
/* Register with core */
|
/* Register with core */
|
||||||
if (of_device_register(&isa_br->ofdev) != 0) {
|
if (of_device_register(&isa_br->ofdev) != 0) {
|
||||||
printk(KERN_DEBUG "isa: device registration error for %s!\n",
|
printk(KERN_DEBUG "isa: device registration error for %s!\n",
|
||||||
isa_br->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
kfree(isa_br);
|
kfree(isa_br);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -861,7 +861,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
|
||||||
if (!parent)
|
if (!parent)
|
||||||
strcpy(op->dev.bus_id, "root");
|
strcpy(op->dev.bus_id, "root");
|
||||||
else
|
else
|
||||||
sprintf(op->dev.bus_id, "%s@%08x", dp->name, dp->node);
|
sprintf(op->dev.bus_id, "%08x", dp->node);
|
||||||
|
|
||||||
if (of_device_register(op)) {
|
if (of_device_register(op)) {
|
||||||
printk("%s: Could not register of device.\n",
|
printk("%s: Could not register of device.\n",
|
||||||
|
|
|
@ -61,11 +61,11 @@ static void __init fill_sbus_device(struct device_node *dp, struct sbus_dev *sde
|
||||||
else
|
else
|
||||||
sdev->ofdev.dev.parent = &sdev->bus->ofdev.dev;
|
sdev->ofdev.dev.parent = &sdev->bus->ofdev.dev;
|
||||||
sdev->ofdev.dev.bus = &sbus_bus_type;
|
sdev->ofdev.dev.bus = &sbus_bus_type;
|
||||||
strcpy(sdev->ofdev.dev.bus_id, dp->path_component_name);
|
sprintf(sdev->ofdev.dev.bus_id, "sbus[%08x]", dp->node);
|
||||||
|
|
||||||
if (of_device_register(&sdev->ofdev) != 0)
|
if (of_device_register(&sdev->ofdev) != 0)
|
||||||
printk(KERN_DEBUG "sbus: device registration error for %s!\n",
|
printk(KERN_DEBUG "sbus: device registration error for %s!\n",
|
||||||
sdev->ofdev.dev.bus_id);
|
dp->path_component_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init sbus_bus_ranges_init(struct device_node *dp, struct sbus_bus *sbus)
|
static void __init sbus_bus_ranges_init(struct device_node *dp, struct sbus_bus *sbus)
|
||||||
|
|
Loading…
Reference in New Issue