History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (46 commits) UIO: Fix mapping of logical and virtual memory UIO: add automata sercos3 pci card support UIO: Change driver name of uio_pdrv UIO: Add alignment warnings for uio-mem Driver core: add bus_sort_breadthfirst() function NET: convert the phy_device file to use bus_find_device_by_name kobject: Cleanup kobject_rename and !CONFIG_SYSFS kobject: Fix kobject_rename and !CONFIG_SYSFS sysfs: Make dir and name args to sysfs_notify() const platform: add new device registration helper sysfs: use ilookup5() instead of ilookup5_nowait() PNP: create device attributes via default device attributes Driver core: make bus_find_device_by_name() more robust usb: turn dev_warn+WARN_ON combos into dev_WARN debug: use dev_WARN() rather than WARN_ON() in device_pm_add() debug: Introduce a dev_WARN() function sysfs: fix deadlock device model: Do a quickcheck for driver binding before doing an expensive check Driver core: Fix cleanup in device_create_vargs(). Driver core: Clarify device cleanup. ...

Linus Torvalds committed 18 years ago

Commit c813b4e2 parents c8d8a23 02683ff131 files · +1786 −617Browse files

Showing the changes to kernel/module.c (1 of 131 files). Show all

Unified · Split

kernel/module.c+32−1
@@ -784,6 +784,7 @@ sys_delete_module(const char __user *name_user, unsigned int flags) · 783 unmodified lines
784 mutex_lock(&module_mutex);784 mutex_lock(&module_mutex);
785 /* Store the name of the last unloaded module for diagnostic purposes */785 /* Store the name of the last unloaded module for diagnostic purposes */
786 strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module));786 strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module));
787 unregister_dynamic_debug_module(mod->name);
787 free_module(mod);788 free_module(mod);
788 789
789 out:790 out:
@@ -1173,7 +1174,7 @@ static void free_notes_attrs(struct module_notes_attrs *notes_attrs, · 383 unmodified lines
1173 while (i-- > 0)1174 while (i-- > 0)
1174 sysfs_remove_bin_file(notes_attrs->dir,1175 sysfs_remove_bin_file(notes_attrs->dir,
1175 &notes_attrs->attrs[i]);1176 &notes_attrs->attrs[i]);
1176 kobject_del(notes_attrs->dir);1177 kobject_put(notes_attrs->dir);
1177 }1178 }
1178 kfree(notes_attrs);1179 kfree(notes_attrs);
1179}1180}
@@ -1783,6 +1784,33 @@ static inline void add_kallsyms(struct module *mod, · 603 unmodified lines
1783}1784}
1784#endif /* CONFIG_KALLSYMS */1785#endif /* CONFIG_KALLSYMS */
1785 1786
1787#ifdef CONFIG_DYNAMIC_PRINTK_DEBUG
1788static void dynamic_printk_setup(Elf_Shdr *sechdrs, unsigned int verboseindex)
1789{
1790 struct mod_debug *debug_info;
1791 unsigned long pos, end;
1792 unsigned int num_verbose;
1793
1794 pos = sechdrs[verboseindex].sh_addr;
1795 num_verbose = sechdrs[verboseindex].sh_size /
1796 sizeof(struct mod_debug);
1797 end = pos + (num_verbose * sizeof(struct mod_debug));
1798
1799 for (; pos < end; pos += sizeof(struct mod_debug)) {
1800 debug_info = (struct mod_debug *)pos;
1801 register_dynamic_debug_module(debug_info->modname,
1802 debug_info->type, debug_info->logical_modname,
1803 debug_info->flag_names, debug_info->hash,
1804 debug_info->hash2);
1805 }
1806}
1807#else
1808static inline void dynamic_printk_setup(Elf_Shdr *sechdrs,
1809 unsigned int verboseindex)
1810{
1811}
1812#endif /* CONFIG_DYNAMIC_PRINTK_DEBUG */
1813
1786static void *module_alloc_update_bounds(unsigned long size)1814static void *module_alloc_update_bounds(unsigned long size)
1787{1815{
1788 void *ret = module_alloc(size);1816 void *ret = module_alloc(size);
@@ -1831,6 +1859,7 @@ static noinline struct module *load_module(void __user *umod, · 42 unmodified lines
1831#endif1859#endif
1832 unsigned int markersindex;1860 unsigned int markersindex;
1833 unsigned int markersstringsindex;1861 unsigned int markersstringsindex;
1862 unsigned int verboseindex;
1834 struct module *mod;1863 struct module *mod;
1835 long err = 0;1864 long err = 0;
1836 void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */1865 void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */
@@ -2117,6 +2146,7 @@ static noinline struct module *load_module(void __user *umod, · 280 unmodified lines
2117 markersindex = find_sec(hdr, sechdrs, secstrings, "__markers");2146 markersindex = find_sec(hdr, sechdrs, secstrings, "__markers");
2118 markersstringsindex = find_sec(hdr, sechdrs, secstrings,2147 markersstringsindex = find_sec(hdr, sechdrs, secstrings,
2119 "__markers_strings");2148 "__markers_strings");
2149 verboseindex = find_sec(hdr, sechdrs, secstrings, "__verbose");
2120 2150
2121 /* Now do relocations. */2151 /* Now do relocations. */
2122 for (i = 1; i < hdr->e_shnum; i++) {2152 for (i = 1; i < hdr->e_shnum; i++) {
@@ -2167,6 +2197,7 @@ static noinline struct module *load_module(void __user *umod, · 44 unmodified lines
2167 marker_update_probe_range(mod->markers,2197 marker_update_probe_range(mod->markers,
2168 mod->markers + mod->num_markers);2198 mod->markers + mod->num_markers);
2169#endif2199#endif
2200 dynamic_printk_setup(sechdrs, verboseindex);
2170 err = module_finalize(hdr, sechdrs, mod);2201 err = module_finalize(hdr, sechdrs, mod);
2171 if (err < 0)2202 if (err < 0)
2172 goto cleanup;2203 goto cleanup;