sparc: fix format string argument for prom_printf()
Akinobu Mita [Sat, 29 Sep 2012 03:14:49 +0000 (03:14 +0000)]
prom_printf() takes printf style arguments.  Specifing GCC's format
attribute reveals that there are several wrong usages of prom_printf().

This fixes those wrong format strings and arguments, and also leaves
format attributes in order to detect similar mistakes at compile time.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: sparclinux@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>

arch/sparc/include/asm/oplib_32.h
arch/sparc/include/asm/oplib_64.h
arch/sparc/kernel/hvapi.c
arch/sparc/kernel/prom_64.c
arch/sparc/kernel/traps_64.c
arch/sparc/mm/init_64.c
arch/sparc/mm/iommu.c

index 2751787..c72f304 100644 (file)
@@ -94,7 +94,7 @@ extern int prom_getprev(void);
 extern void prom_console_write_buf(const char *buf, int len);
 
 /* Prom's internal routines, don't use in kernel/boot code. */
-extern void prom_printf(const char *fmt, ...);
+extern __printf(1, 2) void prom_printf(const char *fmt, ...);
 extern void prom_write(const char *buf, unsigned int len);
 
 /* Multiprocessor operations... */
index 97a9047..a12dbe3 100644 (file)
@@ -98,7 +98,7 @@ extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);
 extern void prom_console_write_buf(const char *buf, int len);
 
 /* Prom's internal routines, don't use in kernel/boot code. */
-extern void prom_printf(const char *fmt, ...);
+extern __printf(1, 2) void prom_printf(const char *fmt, ...);
 extern void prom_write(const char *buf, unsigned int len);
 
 /* Multiprocessor operations... */
index 1032df4..c0a2de0 100644 (file)
@@ -194,7 +194,7 @@ void __init sun4v_hvapi_init(void)
 
 bad:
        prom_printf("HVAPI: Cannot register API group "
-                   "%lx with major(%u) minor(%u)\n",
+                   "%lx with major(%lu) minor(%lu)\n",
                    group, major, minor);
        prom_halt();
 }
index 340c5b9..d397d7f 100644 (file)
@@ -37,7 +37,7 @@ void * __init prom_early_alloc(unsigned long size)
        void *ret;
 
        if (!paddr) {
-               prom_printf("prom_early_alloc(%lu) failed\n");
+               prom_printf("prom_early_alloc(%lu) failed\n", size);
                prom_halt();
        }
 
index 3b05e66..fa1f1d3 100644 (file)
@@ -850,7 +850,7 @@ void __init cheetah_ecache_flush_init(void)
        ecache_flush_physbase = find_ecache_flush_span(ecache_flush_size);
 
        if (ecache_flush_physbase == ~0UL) {
-               prom_printf("cheetah_ecache_flush_init: Cannot find %d byte "
+               prom_printf("cheetah_ecache_flush_init: Cannot find %ld byte "
                            "contiguous physical memory.\n",
                            ecache_flush_size);
                prom_halt();
index 696bb09..7a9b788 100644 (file)
@@ -119,7 +119,8 @@ static void __init read_obp_memory(const char *property,
 
        ret = prom_getproperty(node, property, (char *) regs, prop_size);
        if (ret == -1) {
-               prom_printf("Couldn't get %s property from /memory.\n");
+               prom_printf("Couldn't get %s property from /memory.\n",
+                               property);
                prom_halt();
        }
 
@@ -497,7 +498,7 @@ static void __init read_obp_translations(void)
                prom_halt();
        }
        if (unlikely(n > sizeof(prom_trans))) {
-               prom_printf("prom_mappings: Size %Zd is too big.\n", n);
+               prom_printf("prom_mappings: Size %d is too big.\n", n);
                prom_halt();
        }
 
@@ -559,7 +560,7 @@ static void __init hypervisor_tlb_lock(unsigned long vaddr,
        unsigned long ret = sun4v_mmu_map_perm_addr(vaddr, 0, pte, mmu);
 
        if (ret != 0) {
-               prom_printf("hypervisor_tlb_lock[%lx:%lx:%lx:%lx]: "
+               prom_printf("hypervisor_tlb_lock[%lx:%x:%lx:%lx]: "
                            "errors with %lx\n", vaddr, 0, pte, mmu, ret);
                prom_halt();
        }
index a8a58ca..0f4f719 100644 (file)
@@ -90,8 +90,8 @@ static void __init sbus_iommu_init(struct platform_device *op)
            it to us. */
         tmp = __get_free_pages(GFP_KERNEL, IOMMU_ORDER);
        if (!tmp) {
-               prom_printf("Unable to allocate iommu table [0x%08x]\n",
-                           IOMMU_NPTES*sizeof(iopte_t));
+               prom_printf("Unable to allocate iommu table [0x%lx]\n",
+                           IOMMU_NPTES * sizeof(iopte_t));
                prom_halt();
        }
        iommu->page_table = (iopte_t *)tmp;