From: Sam Ravnborg <sam@ravnborg.org>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org
Subject: Re: modpost error about size inconsitency
Date: Sun, 9 Jul 2006 14:49:27 +0200 [thread overview]
Message-ID: <20060709124927.GA25899@mars.ravnborg.org> (raw)
In-Reply-To: <20060709124640.GA23306@mars.ravnborg.org>
On Sun, Jul 09, 2006 at 02:46:40PM +0200, Sam Ravnborg wrote:
Patch below is on top of -rc1 - not -mm by the way. So you will see some
minor conflicts with the eisa stuff.
Sam
> diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
> index 37f67c2..c522f16 100644
> --- a/scripts/mod/file2alias.c
> +++ b/scripts/mod/file2alias.c
> @@ -52,6 +52,23 @@ do {
> sprintf(str + strlen(str), "*"); \
> } while(0)
>
> +/**
> + * Check that sizeof(device_id type) are consistent with size of section
> + * in .o file. If in-consistent then userspace and kernel does not agree
> + * on actual size which is a bug.
> + **/
> +static void device_id_size_check(const char *modname, const char *device_id,
> + unsigned long size, unsigned long id_size)
> +{
> + if (size % id_size || size < id_size) {
> + fatal("%s: sizeof(struct %s_device_id)=%lu is not a modulo "
> + "of the size of section __mod_%s_device_table=%lu.\n"
> + "Fix definition of struct %s_device_id "
> + "in mod_devicetable.h\n",
> + modname, device_id, id_size, device_id, size, device_id);
> + }
> +}
> +
> /* USB is special because the bcdDevice can be matched against a numeric range */
> /* Looks like "usb:vNpNdNdcNdscNdpNicNiscNipN" */
> static void do_usb_entry(struct usb_device_id *id,
> @@ -152,10 +169,8 @@ static void do_usb_table(void *symval, u
> unsigned int i;
> const unsigned long id_size = sizeof(struct usb_device_id);
>
> - if (size % id_size || size < id_size) {
> - warn("%s ids %lu bad size "
> - "(each on %lu)\n", mod->name, size, id_size);
> - }
> + device_id_size_check(mod->name, "usb", size, id_size);
> +
> /* Leave last one: it's the terminator. */
> size -= id_size;
>
> @@ -434,6 +449,7 @@ static inline int sym_is(const char *sym
>
> static void do_table(void *symval, unsigned long size,
> unsigned long id_size,
> + const char *device_id,
> void *function,
> struct module *mod)
> {
> @@ -441,10 +457,7 @@ static void do_table(void *symval, unsig
> char alias[500];
> int (*do_entry)(const char *, void *entry, char *alias) = function;
>
> - if (size % id_size || size < id_size) {
> - warn("%s ids %lu bad size "
> - "(each on %lu)\n", mod->name, size, id_size);
> - }
> + device_id_size_check(mod->name, device_id, size, id_size);
> /* Leave last one: it's the terminator. */
> size -= id_size;
>
> @@ -476,40 +489,51 @@ void handle_moddevtable(struct module *m
> + sym->st_value;
>
> if (sym_is(symname, "__mod_pci_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct pci_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct pci_device_id), "pci",
> do_pci_entry, mod);
> else if (sym_is(symname, "__mod_usb_device_table"))
> /* special case to handle bcdDevice ranges */
> do_usb_table(symval, sym->st_size, mod);
> else if (sym_is(symname, "__mod_ieee1394_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct ieee1394_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct ieee1394_device_id), "ieee1394",
> do_ieee1394_entry, mod);
> else if (sym_is(symname, "__mod_ccw_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct ccw_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct ccw_device_id), "ccw",
> do_ccw_entry, mod);
> else if (sym_is(symname, "__mod_serio_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct serio_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct serio_device_id), "serio",
> do_serio_entry, mod);
> else if (sym_is(symname, "__mod_pnp_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct pnp_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct pnp_device_id), "pnp",
> do_pnp_entry, mod);
> else if (sym_is(symname, "__mod_pnp_card_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct pnp_card_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct pnp_card_device_id), "pnp_card",
> do_pnp_card_entry, mod);
> else if (sym_is(symname, "__mod_pcmcia_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct pcmcia_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct pcmcia_device_id), "pcmia",
> do_pcmcia_entry, mod);
> else if (sym_is(symname, "__mod_of_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct of_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct of_device_id), "of",
> do_of_entry, mod);
> else if (sym_is(symname, "__mod_vio_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct vio_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct vio_device_id), "vio",
> do_vio_entry, mod);
> else if (sym_is(symname, "__mod_i2c_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct i2c_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct i2c_device_id), "i2c",
> do_i2c_entry, mod);
> else if (sym_is(symname, "__mod_input_device_table"))
> - do_table(symval, sym->st_size, sizeof(struct input_device_id),
> + do_table(symval, sym->st_size,
> + sizeof(struct input_device_id), "input",
> do_input_entry, mod);
> }
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2006-07-09 12:49 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-09 9:11 2.6.18-rc1-mm1 Andrew Morton
2006-07-09 10:20 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 10:26 ` 2.6.18-rc1-mm1 Fabio Comolli
2006-07-09 10:45 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-09 12:37 ` 2.6.18-rc1-mm1 Nick Piggin
2006-07-09 12:55 ` 2.6.18-rc1-mm1 Nick Piggin
2006-07-10 8:50 ` 2.6.18-rc1-mm1 Arjan van de Ven
2006-07-09 10:32 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 10:33 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 10:52 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-09 21:06 ` 2.6.18-rc1-mm1 Arjan van de Ven
2006-07-10 7:40 ` 2.6.18-rc1-mm1 Ingo Molnar
2006-07-10 9:22 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-10 9:25 ` 2.6.18-rc1-mm1 Ingo Molnar
2006-07-10 10:01 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-10 10:37 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-10 10:37 ` 2.6.18-rc1-mm1 Ingo Molnar
2006-07-10 10:57 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 11:02 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 11:13 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 12:10 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-09 13:19 ` 2.6.18-rc1-mm1 Michal Piotrowski
2006-07-09 11:22 ` 2.6.18-rc1-mm1 Reuben Farrelly
2006-07-09 12:22 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-09 12:56 ` 2.6.18-rc1-mm1 Alan Cox
2006-07-09 14:21 ` 2.6.18-rc1-mm1 Reuben Farrelly
2006-07-09 16:29 ` 2.6.18-rc1-mm1 Jeff Garzik
2006-07-09 18:35 ` 2.6.18-rc1-mm1 Andi Kleen
2006-07-11 19:37 ` 2.6.18-rc1-mm1 Greg KH
2006-07-09 21:10 ` 2.6.18-rc1-mm1 john stultz
2006-07-09 17:33 ` 2.6.18-rc1-mm1 Randy.Dunlap
2006-07-09 21:40 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-10 4:56 ` 2.6.18-rc1-mm1 Randy.Dunlap
2006-07-10 5:01 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-10 5:35 ` 2.6.18-rc1-mm1 Randy.Dunlap
2006-07-09 11:49 ` 2.6.18-rc1-mm1 fails on amd64 (smp_call_function_single) Gregoire Favre
2006-07-09 13:00 ` Adrian Bunk
2006-07-09 14:11 ` Gregoire Favre
2006-07-09 20:39 ` Rafael J. Wysocki
2006-07-09 21:03 ` Andrew Morton
2006-07-09 22:37 ` Rafael J. Wysocki
2006-07-09 22:44 ` Andrew Morton
2006-07-10 0:08 ` Andi Kleen
2006-07-09 12:46 ` modpost error about size inconsitency Sam Ravnborg
2006-07-09 12:49 ` Sam Ravnborg [this message]
2006-07-09 14:28 ` [-mm patch] fix MODULES=n compile Adrian Bunk
2006-07-09 14:28 ` [-mm patch] proper prototype for drivers/scsi/arcmsr/arcmsr_attr.c:arcmsr_free_sysfs_attr() Adrian Bunk
2006-07-09 14:28 ` Adrian Bunk
2006-07-09 16:19 ` 2.6.18-rc1-mm1 oops on x86_64 Cedric Le Goater
2006-07-09 20:21 ` Andrew Morton
2006-07-09 20:35 ` Rafael J. Wysocki
2006-07-09 20:59 ` Andrew Morton
2006-07-09 21:11 ` Rafael J. Wysocki
2006-07-10 15:54 ` Christoph Lameter
2006-07-10 17:22 ` Christoph Lameter
2006-07-10 16:20 ` Christoph Lameter
2006-07-10 17:38 ` Christoph Lameter
2006-07-10 20:27 ` Cedric Le Goater
2006-07-10 20:32 ` Rafael J. Wysocki
2006-07-09 17:28 ` 2.6.18-rc1-mm1 Dominik Karall
2006-07-09 20:24 ` 2.6.18-rc1-mm1 Andrew Morton
2006-07-10 7:11 ` 2.6.18-rc1-mm1 Mauro Carvalho Chehab
2006-07-10 22:25 ` 2.6.18-rc1-mm1 Dominik Karall
2006-07-13 22:10 ` 2.6.18-rc1-mm1 Dominik Karall
2006-07-09 17:53 ` [-mm patch] make arch/i386/kernel/cpu/cpufreq/longhaul.c:longhaul_walk_callback() static Adrian Bunk
2006-07-09 17:53 ` [-mm patch] kernel/rcutorture.c: make code static Adrian Bunk
2006-07-10 14:58 ` Paul E. McKenney
2006-07-09 18:22 ` 2.6.18-rc1-mm1: /sys/class/net/ethN becoming symlink befuddled /sbin/ifup Mike Galbraith
2006-07-09 19:01 ` Mike Galbraith
2006-07-09 20:51 ` Andrew Morton
2006-07-10 0:32 ` David Miller
2006-07-11 22:59 ` Greg KH
2006-07-12 6:29 ` Kay Sievers
2006-07-10 1:29 ` Jeremy Fitzhardinge
2006-07-10 5:01 ` Mike Galbraith
2006-07-09 19:24 ` 2.6.18-rc1-mm1 Valdis.Kletnieks
2006-07-09 21:11 ` 2.6.18-rc1-mm1 john stultz
2006-07-09 21:37 ` 2.6.18-rc1-mm1 inconsistent lock state in netpoll_send_skb Laurent Riffard
2006-07-10 8:40 ` Arjan van de Ven
2006-07-10 19:06 ` Laurent Riffard
2006-07-11 8:40 ` Arjan van de Ven
2006-07-11 22:00 ` Laurent Riffard
2006-07-09 21:47 ` 2.6.18-rc1-mm1 reiser4 module calls generic_file_read Laurent Riffard
2006-07-10 13:37 ` Edward Shishkin
2006-07-09 23:32 ` [Ocfs2-devel] [-mm patch] fs/ocfs2/ioctl.c should #include "ioctl.h" Adrian Bunk
2006-07-09 23:32 ` Adrian Bunk
2006-07-10 0:33 ` 2.6.18-rc1-mm1 J.A. Magallón
2006-07-10 10:02 ` 2.6.18-rc1-mm1 Alan Cox
2006-07-10 1:10 ` 2.6.18-rc1-mm1 Brice Goglin
2006-07-10 15:22 ` 2.6.18-rc1-mm1 Rafael J. Wysocki
2006-07-10 18:33 ` [-mm patch] include/scsi/libsas.h should #include <linux/scatterlist.h> Adrian Bunk
2006-07-10 19:29 ` [PATCH -mm] sysfs_remove_bin_file: no return value, no check needed Randy.Dunlap
2006-07-10 21:43 ` Andrew Morton
2006-07-11 0:36 ` Randy.Dunlap
2006-07-11 6:05 ` [PATCH -mm] sysfs_remove_bin_file: no return value, dump_stack on error Randy.Dunlap
2006-07-10 22:21 ` 2.6.18-rc1-mm1 J.A. Magallón
2006-07-11 12:47 ` [-mm patch] MICROCODE should select FW_LOADER Adrian Bunk
2006-07-11 12:52 ` 2.6.18-rc1-mm1: drivers/ide/pci/jmicron.c warning Adrian Bunk
2006-07-11 14:02 ` Alan Cox
2006-07-11 22:10 ` Adrian Bunk
2006-07-11 23:10 ` Alan Cox
2006-07-11 23:23 ` Andrew Morton
2006-07-11 23:27 ` Adrian Bunk
2006-07-12 20:45 ` 2.6.18-rc1-mm1 Reuben Farrelly
2006-07-13 20:18 ` [-mm patch] DEBUG_SHIRQ should depend on DEBUG_KERNEL Adrian Bunk
2006-07-15 13:41 ` Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060709124927.GA25899@mars.ravnborg.org \
--to=sam@ravnborg.org \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.