[PATCH] powermac: Fix some 64b resource damage
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sun, 2 Jul 2006 01:55:03 +0000 (11:55 +1000)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 2 Jul 2006 03:11:56 +0000 (20:11 -0700)
The 64 bits resource patches did a bit of damage on PowerMac causing a
buffer overflow in macio_asic and a warning in a sound driver. The
former is fixed by reverting the sprintf of the bus_id to %08x as it was
before. The bus_id used for macio devices is always a 32 bits value
(macio always sits in 32 bits space) and since it's exposed to userland,
the format of the string shouldn't be changed like that anyway. The
second by using the proper type for printk.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/macintosh/macio_asic.c
sound/ppc/pmac.c

index d832e109b1b15cf0a1891c71066a73d663751ffd..40ae7b6a939da8c492afd1576d61ea24e89dac99 100644 (file)
@@ -427,10 +427,10 @@ static struct macio_dev * macio_add_one_device(struct macio_chip *chip,
 
        /* MacIO itself has a different reg, we use it's PCI base */
        if (np == chip->of_node) {
-               sprintf(dev->ofdev.dev.bus_id, "%1d.%016llx:%.*s",
+               sprintf(dev->ofdev.dev.bus_id, "%1d.%08x:%.*s",
                        chip->lbus.index,
 #ifdef CONFIG_PCI
-                       (unsigned long long)pci_resource_start(chip->lbus.pdev, 0),
+                       (unsigned int)pci_resource_start(chip->lbus.pdev, 0),
 #else
                        0, /* NuBus may want to do something better here */
 #endif
index be98f63773392af7e9afa04c748acffc5d5c8b94..90db9a1d1e0a18d0749f4eb68bd6a22a19236c40 100644 (file)
@@ -1170,7 +1170,7 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
                                               chip->rsrc[i].start + 1,
                                               rnames[i]) == NULL) {
                                printk(KERN_ERR "snd: can't request rsrc "
-                                      " %d (%s: 0x%016lx:%016lx)\n",
+                                      " %d (%s: 0x%016llx:%016llx)\n",
                                       i, rnames[i],
                                       (unsigned long long)chip->rsrc[i].start,
                                       (unsigned long long)chip->rsrc[i].end);