The patch titled modpost: remove fixed size buffer has been added to the -mm tree. Its filename is modpost-remove-fixed-size-buffer.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: modpost: remove fixed size buffer From: Andrew Morton <akpm@xxxxxxxx> modpost has a couple of fixed-sized buffers. As reported in http://bugzilla.kernel.org/show_bug.cgi?id=7878, it broke. Fix by dynamically allocating these things. Unpleasingly: we really want vasprintf(), but that's gnu-only. Cc: Roman Zippel <zippel@xxxxxxxxxxxxxx> Cc: Samuel Ortiz <samuel@xxxxxxxxxx> Cc: Rusty Russell <rusty@xxxxxxxxxxxxxxx> Cc: John Voltz <john.voltz@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- scripts/mod/modpost.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff -puN scripts/mod/modpost.c~modpost-remove-fixed-size-buffer scripts/mod/modpost.c --- a/scripts/mod/modpost.c~modpost-remove-fixed-size-buffer +++ a/scripts/mod/modpost.c @@ -1120,8 +1120,6 @@ static void read_symbols(char *modname) mod->unres = alloc_symbol("struct_module", 0, mod->unres); } -#define SZ 500 - /* We first write the generated file into memory using the * following helper, then compare to the file on disk and * only update the later if anything changed */ @@ -1129,20 +1127,28 @@ static void read_symbols(char *modname) void __attribute__((format(printf, 2, 3))) buf_printf(struct buffer *buf, const char *fmt, ...) { - char tmp[SZ]; - int len; + char *tmp; + size_t len; va_list ap; va_start(ap, fmt); - len = vsnprintf(tmp, SZ, fmt, ap); + len = snprintf(NULL, 0, fmt, ap); + va_end(ap); + tmp = malloc(len + 1); + if (tmp == NULL) + fatal("modpost: out of memory in %s\n", __FUNCTION__); + + va_start(ap, fmt); + len = snprintf(tmp, len, fmt, ap); buf_write(buf, tmp, len); va_end(ap); + free(tmp); } void buf_write(struct buffer *buf, const char *s, int len) { if (buf->size - buf->pos < len) { - buf->size += len + SZ; + buf->size += len + 500; buf->p = realloc(buf->p, buf->size); } strncpy(buf->p + buf->pos, s, len); @@ -1452,7 +1458,6 @@ int main(int argc, char **argv) { struct module *mod; struct buffer buf = { }; - char fname[SZ]; char *kernel_read = NULL, *module_read = NULL; char *dump_write = NULL; int opt; @@ -1502,6 +1507,9 @@ int main(int argc, char **argv) err = 0; for (mod = modules; mod; mod = mod->next) { + char *fname; + static const char fmt[] = "%s.mod.c"; + if (mod->skip) continue; @@ -1513,8 +1521,12 @@ int main(int argc, char **argv) add_moddevtable(&buf, mod); add_srcversion(&buf, mod); - sprintf(fname, "%s.mod.c", mod->name); + fname = malloc(strlen(mod->name) + sizeof(fmt)); + if (fname == NULL) + fatal("modpost: out of memory in %s\n", __FUNCTION__); + sprintf(fname, fmt, mod->name); write_if_changed(&buf, fname); + free(fname); } if (dump_write) _ Patches currently in -mm which might be from akpm@xxxxxxxx are origin.patch kvm-add-vm-exit-profiling-fix.patch blockdev-direct_io-fix-signedness-bug.patch submitchecklist-update.patch i386-vdso-use-vm_alwaysdump-tidy.patch use-correct-macros-in-raid-code-not-raw-asm-include.patch macintosh-mangle-caps-lock-events-on-adb-keyboards.patch git-acpi.patch exit-acpi-processor-module-gracefully-if-acpi-is-disabled-tidy.patch sony_apci-resume.patch sony_apci-resume-fix.patch video-sysfs-support-take-2-add-dev-argument-for-backlight_device_register-sony_acpi-fix.patch git-alsa.patch agpgart-allow-drm-populated-agp-memory-types-tidy.patch git-cifs.patch rewrite-lock-in-cpufreq-to-eliminate-cpufreq-hotplug-related-issues-fix-2.patch fix-gregkh-driver-driver-core-fix-race-in-sysfs-between-sysfs_remove_file-and-read-write.patch git-dvb.patch git-gfs2-nmw.patch git-hid-fixup.patch ia64-enable-config_debug_spinlock_sleep.patch git-ieee1394.patch git-input.patch git-libata-all.patch sata_nv-cleanup-adma-error-handling-v2-cleanup.patch git-lxdialog-fixup.patch git-mmc.patch git-mmc-fixup.patch git-ubi.patch git-netdev-all.patch git-e1000-fixup.patch update-smc91x-driver-with-arm-versatile-board-info.patch drivers-net-ns83820c-add-paramter-to-disable-auto.patch net-use-bitrev8.patch bonding-replace-kmalloc-memset-pairs-with-the-appropriate-kzalloc-calls-fix.patch net-uninline-skb_put.patch ioat-warning-fix.patch r8169-warning-fixes.patch make-cardbus_mem_size-and-cardbus_io_size-boot-options-fix.patch drivers-scsi-mca_53c9xc-save_flags-cli-removal.patch scsi-cover-up-bugs-fix-up-compiler-warnings-in-megaraid-driver.patch git-block-fixup.patch git-block-atomicity-fix.patch nokia-e70-is-an-unusual-device.patch spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix.patch spin_lock_irq-enable-interrupts-while-spinning-i386-implementation-fix-fix.patch touchkit-ps-2-touchscreen-driver.patch lumpy-reclaim-v2-page_to_pfn-fix.patch lumpy-reclaim-v2-tidy.patch avoid-excessive-sorting-of-early_node_map-tidy.patch proc-zoneinfo-fix-vm-stats-display.patch swsusp-change-code-ordering-in-userc-sanity.patch deprecate-smbfs-in-favour-of-cifs.patch drivers-add-lcd-support-3-Kconfig-fix.patch drivers-add-lcd-support-workqueue-fixups.patch add-retain_initrd-boot-option-tweak.patch count_vm_events-warning-fix.patch procfs-fix-race-between-proc_readdir-and-remove_proc_entry-fix.patch consolidate-line-discipline-number-definitions-v2-sparc-fix.patch consolidate-line-discipline-number-definitions-v2-fix-2.patch spi-controller-driver-for-omap-microwire-tidy.patch spi-controller-driver-for-omap-microwire-update-fix.patch add-taint_user-and-ability-to-set-taint-flags-from-userspace-fix-2.patch remove-invalidate_inode_pages.patch add-an-rcu-version-of-list-splicing-fix.patch factor-outstanding-i-o-error-handling-tidy.patch sync_sb_inodes-propagate-errors.patch block_write_full_page-handle-enospc.patch sysctl-warning-fix.patch proc_misc-warning-fix.patch return-enoent-from-ext3_link-when-racing-with-unlink-fix.patch vmi-versus-hrtimers.patch i386-use-gtod-persistent-clock-support.patch hrtimers-namespace-and-enum-cleanup-vs-git-input.patch hrtimers-cleanup-locking.patch hrtimers-add-state-tracking.patch clockevents-i383-drivers.patch generic-vsyscall-gtod-support-for-generic_time-tidy.patch revert-x86_64-mm-ignore-long-smi-interrupts-in-clock-calibration.patch time-x86_64-split-x86_64-kernel-timec-up-tidy.patch time-x86_64-split-x86_64-kernel-timec-up-fix.patch reapply-x86_64-mm-ignore-long-smi-interrupts-in-clock-calibration.patch time-x86_64-convert-x86_64-to-use-generic_time-fix.patch time-x86_64-convert-x86_64-to-use-generic_time-tidy.patch time-x86_64-re-enable-vsyscall-support-for-x86_64-tidy.patch schedule_on_each_cpu-use-preempt_disable.patch implement-flush_work-sanity.patch implement-flush_work_keventd.patch flush_workqueue-use-preempt_disable-to-hold-off-cpu-hotplug.patch aio-use-flush_work.patch kblockd-use-flush_work.patch relayfs-use-flush_keventd_work.patch tg3-use-flush_keventd_work.patch e1000-use-flush_keventd_work.patch libata-use-flush_work.patch phy-use-flush_work.patch extend-notifier_call_chain-to-count-nr_calls-made.patch extend-notifier_call_chain-to-count-nr_calls-made-fixes-2.patch define-and-use-new-eventscpu_lock_acquire-and-cpu_lock_release-fix.patch eliminate-lock_cpu_hotplug-in-kernel-schedc-fix.patch move-page-writeback-acounting-out-of-macros.patch per-backing_dev-dirty-and-writeback-page-accounting.patch ext2-reservations.patch edac-new-opteron-athlon64-memory-controller-driver.patch omap-gpio-wrappers-tidy.patch at91-gpio-wrappers-tidy.patch ecryptfs-public-key-packet-management-slab-fix.patch fsaio-enable-wait-bit-based-filtered-wakeups-to-work-for-aio-fix.patch aio-is-unlikely.patch sched2-sched-domain-sysctl-use-ctl_unnumbered.patch mm-implement-swap-prefetching-use-ctl_unnumbered.patch swap_prefetch-vs-zoned-counters.patch add-include-linux-freezerh-and-move-definitions-from-prefetch.patch introduce-and-use-get_task_mnt_ns-tweaks.patch user-ns-implement-user-ns-unshare-tidy.patch readahead-kconfig-options-fix.patch readahead-minmax_ra_pages.patch readahead-sysctl-parameters.patch readahead-sysctl-parameters-use-ctl_unnumbered.patch readahead-context-based-method-locking-fix.patch readahead-context-based-method-locking-fix-2.patch readahead-call-scheme-ifdef-fix.patch readahead-call-scheme-build-fix.patch readahead-nfsd-case-fix.patch make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch resier4-add-include-linux-freezerh-and-move-definitions-from.patch make-kmem_cache_destroy-return-void-reiser4.patch reiser4-hardirq-include-fix.patch reiser4-run-truncate_inode_pages-in-reiser4_delete_inode.patch reiser4-get_sb_dev-fix.patch reiser4-vs-zoned-allocator.patch reiser4-temp-fix.patch reiser4-kmem_cache_t-removal.patch reiser4-test_clear_page_dirty.patch reiser4-vs-git-block.patch reiser4-vs-git-block-2.patch cyber2010-framebuffer-on-arm-netwinder-fix-tidy.patch statistics-infrastructure-fix-buffer-overflow-in-histogram-with-linear-tidy.patch slim-main-include-fix.patch nr_blockdev_pages-in_interrupt-warning.patch device-suspend-debug.patch mutex-subsystem-synchro-test-module-fix.patch slab-leaks3-default-y.patch vdso-print-fatal-signals-use-ctl_unnumbered.patch restore-rogue-readahead-printk.patch put_bh-debug.patch e1000-printk-warning-fixes.patch acpi_format_exception-debug.patch add-debugging-aid-for-memory-initialisation-problems-fix.patch kmap_atomic-debugging.patch shrink_slab-handle-bad-shrinkers.patch squash-ipc-warnings.patch squash-udf-warnings.patch modpost-remove-fixed-size-buffer.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html