diff options
author | John Levon <john.levon@joyent.com> | 2020-03-19 07:52:05 -0700 |
---|---|---|
committer | John Levon <john.levon@joyent.com> | 2020-03-23 09:07:34 -0700 |
commit | c61137df0ddfe2318cd4b953495b4ccdb8f12b61 (patch) | |
tree | 5ae25c5ddaac3a6c0a1a3bfb946537454b8289e4 | |
parent | 2a9992ecc0392fdbbaa57613c1bcfc31b6c7e247 (diff) | |
download | illumos-joyent-c61137df0ddfe2318cd4b953495b4ccdb8f12b61.tar.gz |
12399 kobj printf functions should be checked
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r-- | usr/src/uts/common/krtld/kobj.c | 30 | ||||
-rw-r--r-- | usr/src/uts/common/krtld/reloc.h | 4 | ||||
-rw-r--r-- | usr/src/uts/common/sys/kobj_impl.h | 7 | ||||
-rw-r--r-- | usr/src/uts/intel/amd64/krtld/kobj_reloc.c | 12 |
4 files changed, 30 insertions, 23 deletions
diff --git a/usr/src/uts/common/krtld/kobj.c b/usr/src/uts/common/krtld/kobj.c index 8f2b885149..0e03425c8b 100644 --- a/usr/src/uts/common/krtld/kobj.c +++ b/usr/src/uts/common/krtld/kobj.c @@ -305,8 +305,8 @@ int use_iflush; /* iflush after relocations */ * through this function pointer cannot handle more that one conversion * specification in the format string. */ -void (*_kobj_printf)(void *, const char *, ...); /* printf routine */ -void (*_vkobj_printf)(void *, const char *, va_list); /* vprintf routine */ +void (*_kobj_printf)(void *, const char *, ...) __KPRINTFLIKE(2); +void (*_vkobj_printf)(void *, const char *, va_list) __KVPRINTFLIKE(2); /* * Standalone function pointers for use within krtld. @@ -511,7 +511,7 @@ kobj_init( #ifdef KOBJ_DEBUG if (kobj_debug & D_DEBUG) _kobj_printf(ops, - "krtld: transferring control to: 0x%p\n", entry); + "krtld: transferring control to: 0x%lx\n", entry); #endif /* @@ -532,7 +532,7 @@ kobj_init( #ifdef KOBJ_DEBUG if (kobj_debug & D_DEBUG) _kobj_printf(ops, - "krtld: really transferring control to: 0x%p\n", entry); + "krtld: really transferring control to: 0x%lx\n", entry); #endif /* restore printf/bcopy/bzero vectors before returning */ @@ -857,9 +857,9 @@ load_exec(val_t *bootaux, char *filename) if (kobj_debug & D_LOADING) { _kobj_printf(ops, "krtld: file=%s\n", mp->filename); _kobj_printf(ops, "\ttext: 0x%p", mp->text); - _kobj_printf(ops, " size: 0x%x\n", mp->text_size); + _kobj_printf(ops, " size: 0x%lx\n", mp->text_size); _kobj_printf(ops, "\tdata: 0x%p", mp->data); - _kobj_printf(ops, " dsize: 0x%x\n", mp->data_size); + _kobj_printf(ops, " dsize: 0x%lx\n", mp->data_size); } #endif /* KOBJ_DEBUG */ @@ -968,9 +968,9 @@ load_linker(val_t *bootaux) if (kobj_debug & D_LOADING) { _kobj_printf(ops, "krtld: file=%s\n", mp->filename); _kobj_printf(ops, "\ttext:0x%p", mp->text); - _kobj_printf(ops, " size: 0x%x\n", mp->text_size); + _kobj_printf(ops, " size: 0x%lx\n", mp->text_size); _kobj_printf(ops, "\tdata:0x%p", mp->data); - _kobj_printf(ops, " dsize: 0x%x\n", mp->data_size); + _kobj_printf(ops, " dsize: 0x%lx\n", mp->data_size); } #endif /* KOBJ_DEBUG */ @@ -2010,9 +2010,9 @@ kobj_load_module(struct modctl *modp, int use_path) if (kobj_debug & D_LOADING) { _kobj_printf(ops, "krtld: file=%s\n", mp->filename); _kobj_printf(ops, "\ttext:0x%p", mp->text); - _kobj_printf(ops, " size: 0x%x\n", mp->text_size); + _kobj_printf(ops, " size: 0x%lx\n", mp->text_size); _kobj_printf(ops, "\tdata:0x%p", mp->data); - _kobj_printf(ops, " dsize: 0x%x\n", mp->data_size); + _kobj_printf(ops, " dsize: 0x%lx\n", mp->data_size); } #endif /* KOBJ_DEBUG */ @@ -2714,8 +2714,8 @@ crypto_es_hash(struct module *mp, char *hash, char *shstrtab) if (kobj_debug & D_DEBUG) _kobj_printf(ops, "krtld: crypto_es_hash: updating hash with" - " %s data size=%d\n", shstrtab + shp->sh_name, - shp->sh_size); + " %s data size=%lx\n", shstrtab + shp->sh_name, + (size_t)shp->sh_size); #endif ASSERT(shp->sh_addr != 0); SHA1Update(&ctx, (const uint8_t *)shp->sh_addr, shp->sh_size); @@ -2868,7 +2868,7 @@ do_dependents(struct modctl *modp, char *modname, size_t modnamelen) _kobj_printf(ops, "%s: dependency ", modp->mod_modname); _kobj_printf(ops, "'%s' too long ", dep); - _kobj_printf(ops, "(max %d chars)\n", modnamelen); + _kobj_printf(ops, "(max %d chars)\n", (int)modnamelen); kobj_free(dep, p - d + 1); @@ -3820,7 +3820,7 @@ kobj_read_file(struct _buf *file, char *buf, uint_t size, uint_t off) if (_moddebug & MODDEBUG_ERRMSG) { _kobj_printf(ops, "kobj_read_file: size=%x,", size); _kobj_printf(ops, " offset=%x at", off); - _kobj_printf(ops, " buf=%x\n", buf); + _kobj_printf(ops, " buf=%lx\n", (uintptr_t)buf); } /* @@ -3863,7 +3863,7 @@ kobj_read_file(struct _buf *file, char *buf, uint_t size, uint_t off) if (dlen != size) { _kobj_printf(ops, "kobj_read_file: z_uncompress " - "failed to uncompress (size returned 0x%x , " + "failed to uncompress (size returned 0x%lx , " "expected size: 0x%x)\n", dlen, size); return (-1); } diff --git a/usr/src/uts/common/krtld/reloc.h b/usr/src/uts/common/krtld/reloc.h index b7ae5a8997..4f0c576203 100644 --- a/usr/src/uts/common/krtld/reloc.h +++ b/usr/src/uts/common/krtld/reloc.h @@ -21,6 +21,8 @@ /* * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. + * + * Copyright 2020 Joyent, Inc. */ #ifndef _RELOC_DOT_H @@ -274,7 +276,7 @@ extern const char *conv_reloc_SPARC_type(Word); _kobj_printf(ops, MSG_REL_PREGEN, CONV_RELOC_TYPE((rtype))); \ _kobj_printf(ops, MSG_REL_FILE, (file)); \ _kobj_printf(ops, MSG_REL_SYM, ((sym) ? (sym) : MSG_STR_UNKNOWN)); \ - _kobj_printf(ops, MSG_REL_NOFIT, EC_XWORD((uvalue))) + _kobj_printf(ops, MSG_REL_NOFIT, (u_longlong_t)EC_XWORD((uvalue))) #else /* !_KERNEL */ diff --git a/usr/src/uts/common/sys/kobj_impl.h b/usr/src/uts/common/sys/kobj_impl.h index a8488365b9..752217b5cf 100644 --- a/usr/src/uts/common/sys/kobj_impl.h +++ b/usr/src/uts/common/sys/kobj_impl.h @@ -21,6 +21,8 @@ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2020 Joyent, Inc. */ /* @@ -184,8 +186,9 @@ extern void mach_modpath(char *, const char *); extern void kobj_setup_standalone_vectors(void); extern void kobj_restore_vectors(void); -extern void (*_kobj_printf)(void *, const char *fmt, ...); -extern void (*_vkobj_printf)(void *, const char *fmt, va_list); +extern void (*_kobj_printf)(void *, const char *fmt, ...) __KPRINTFLIKE(2); +extern void (*_vkobj_printf)(void *, const char *fmt, va_list) + __KVPRINTFLIKE(2); extern void (*kobj_bcopy)(const void *, void *, size_t); extern void (*kobj_bzero)(void *, size_t); extern size_t (*kobj_strlcat)(char *, const char *, size_t); diff --git a/usr/src/uts/intel/amd64/krtld/kobj_reloc.c b/usr/src/uts/intel/amd64/krtld/kobj_reloc.c index 401f13a33a..b75e1300e1 100644 --- a/usr/src/uts/intel/amd64/krtld/kobj_reloc.c +++ b/usr/src/uts/intel/amd64/krtld/kobj_reloc.c @@ -22,6 +22,8 @@ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2020 Joyent, Inc. */ /* @@ -158,7 +160,7 @@ do_relocate(struct module *mp, char *reltbl, int nreloc, int relocsize, if ((rtype > R_AMD64_NUM) || IS_TLS_INS(rtype)) { _kobj_printf(ops, "krtld: invalid relocation type %d", rtype); - _kobj_printf(ops, " at 0x%llx:", off); + _kobj_printf(ops, " at 0x%lx:", off); _kobj_printf(ops, " file=%s\n", mp->filename); err = 1; continue; @@ -179,8 +181,8 @@ do_relocate(struct module *mp, char *reltbl, int nreloc, int relocsize, (mp->symtbl+(stndx * mp->symhdr->sh_entsize)); _kobj_printf(ops, "krtld:\t%s", conv_reloc_amd64_type(rtype)); - _kobj_printf(ops, "\t0x%8llx", off); - _kobj_printf(ops, " 0x%8llx", addend); + _kobj_printf(ops, "\t0x%8lx", off); + _kobj_printf(ops, " %8lld", (longlong_t)addend); _kobj_printf(ops, " %s\n", (const char *)mp->strings + symp->st_name); } @@ -254,8 +256,8 @@ do_relocate(struct module *mp, char *reltbl, int nreloc, int relocsize, #ifdef KOBJ_DEBUG if (kobj_debug & D_RELOCATIONS) { - _kobj_printf(ops, "krtld:\t\t\t\t0x%8llx", off); - _kobj_printf(ops, " 0x%8llx\n", value); + _kobj_printf(ops, "krtld:\t\t\t\t0x%8lx", off); + _kobj_printf(ops, " 0x%8lx\n", value); } #endif |