From 007b891fc7c53e4e12e7a2920ee03ee12c78a6a2 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Sat, 10 Jul 2010 12:36:16 -0700 Subject: [PATCH 1/3] Fix -Werror=format-security compiler option Noticed under Ubuntu kernel builds, there were two instances where printf() was not called with a "%s" and instread directly printed the string. This can potentially result in a crash and is considered bad form by gcc. It has been fixed by adding the needed "%s". --- cmd/zdb/zdb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/zdb/zdb.c b/cmd/zdb/zdb.c index 3cc2eb8619..49f7f42139 100644 --- a/cmd/zdb/zdb.c +++ b/cmd/zdb/zdb.c @@ -1654,7 +1654,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer) { time_t timestamp = ub->ub_timestamp; - (void) printf(header ? header : ""); + (void) printf("%s", header ? header : ""); (void) printf("\tmagic = %016llx\n", (u_longlong_t)ub->ub_magic); (void) printf("\tversion = %llu\n", (u_longlong_t)ub->ub_version); (void) printf("\ttxg = %llu\n", (u_longlong_t)ub->ub_txg); @@ -1666,7 +1666,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer) sprintf_blkptr(blkbuf, &ub->ub_rootbp); (void) printf("\trootbp = %s\n", blkbuf); } - (void) printf(footer ? footer : ""); + (void) printf("%s", footer ? footer : ""); } static void From 9820fd89a4b88bbe22c9758711533420ee8deb36 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Sat, 10 Jul 2010 12:58:48 -0700 Subject: [PATCH 2/3] Explicitly cast sizeof() to avoid format warnings Simply explicity cast sizeof() to a 'long int' these numbers will always be small and the removes all ambiguity. --- module/zpios/zpios.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/zpios/zpios.c b/module/zpios/zpios.c index 9aa3b5c1bb..3edc16105f 100644 --- a/module/zpios/zpios.c +++ b/module/zpios/zpios.c @@ -1042,7 +1042,7 @@ zpios_ioctl_cmd(struct file *file, unsigned long arg) kcmd = kmem_alloc(sizeof(zpios_cmd_t), KM_SLEEP); if (kcmd == NULL) { zpios_print(file, "Unable to kmem_alloc() %ld byte for " - "zpios_cmd_t\n", sizeof(zpios_cmd_t)); + "zpios_cmd_t\n", (long int)sizeof(zpios_cmd_t)); return -ENOMEM; } From d134105bba6ee635dfec640659a9f81dac200330 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Sat, 10 Jul 2010 12:50:24 -0700 Subject: [PATCH 3/3] Linux 2.6.34 compat: add_range() symbol collision The prototype for an add_range() function was added to the kernel header include/linux/range.h which conflicts with the static add_range() defined in zfs_fm.c. To resolve the conflict all range functions in zfs_fm.c have been prefixed with zei which is short for the zfs_ecksum_info struct since all of these functions operate on that base structure. --- module/zfs/zfs_fm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/module/zfs/zfs_fm.c b/module/zfs/zfs_fm.c index 5138f49e52..409f4f99fb 100644 --- a/module/zfs/zfs_fm.c +++ b/module/zfs/zfs_fm.c @@ -420,7 +420,7 @@ update_histogram(uint64_t value_arg, uint16_t *hist, uint32_t *count) * to the new smallest gap, to prepare for our next invocation. */ static void -shrink_ranges(zfs_ecksum_info_t *eip) +zei_shrink_ranges(zfs_ecksum_info_t *eip) { uint32_t mingap = UINT32_MAX; uint32_t new_allowed_gap = eip->zei_mingap + 1; @@ -465,13 +465,13 @@ shrink_ranges(zfs_ecksum_info_t *eip) } static void -add_range(zfs_ecksum_info_t *eip, int start, int end) +zei_add_range(zfs_ecksum_info_t *eip, int start, int end) { struct zei_ranges *r = eip->zei_ranges; size_t count = eip->zei_range_count; if (count >= MAX_RANGES) { - shrink_ranges(eip); + zei_shrink_ranges(eip); count = eip->zei_range_count; } if (count == 0) { @@ -493,7 +493,7 @@ add_range(zfs_ecksum_info_t *eip, int start, int end) } static size_t -range_total_size(zfs_ecksum_info_t *eip) +zei_range_total_size(zfs_ecksum_info_t *eip) { struct zei_ranges *r = eip->zei_ranges; size_t count = eip->zei_range_count; @@ -570,7 +570,7 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, if (start == -1) continue; - add_range(eip, start, idx); + zei_add_range(eip, start, idx); start = -1; } else { if (start != -1) @@ -580,10 +580,10 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info, } } if (start != -1) - add_range(eip, start, idx); + zei_add_range(eip, start, idx); /* See if it will fit in our inline buffers */ - inline_size = range_total_size(eip); + inline_size = zei_range_total_size(eip); if (inline_size > ZFM_MAX_INLINE) no_inline = 1;