Re: usbcore.ko linkage problem on x86_64

From: Duncan Sands
Date: Fri Apr 30 2004 - 15:55:41 EST


> There seems to be a linkage problem with the usbcore.ko module in the
> 2.6.6-rc2-mm2 and 2.6.6-rc3-mm1 kernels. Namely, I get this message:
>
> if [ -r System.map ]; then /sbin/depmod -ae -F System.map 2.6.6-rc3-mm1;
> fi WARNING: /lib/modules/2.6.6-rc3-mm1/kernel/drivers/usb/core/usbcore.ko
> needs unknown symbol destroy_all_async
>
> after "make modules_install". AFAICS, it does not occur for the 2.6.6-rc2
> kernel.

Hi RJW, does this help? (I also got rid of the unused ld2 while I
was there).

All the best,

Duncan.

devio.c | 35 +++++------------------------------
1 files changed, 5 insertions(+), 30 deletions(-)


diff -Nru a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
--- a/drivers/usb/core/devio.c Fri Apr 30 23:36:25 2004
+++ b/drivers/usb/core/devio.c Fri Apr 30 23:36:25 2004
@@ -165,31 +165,6 @@
return ret;
}

-extern inline unsigned int ld2(unsigned int x)
-{
- unsigned int r = 0;
-
- if (x >= 0x10000) {
- x >>= 16;
- r += 16;
- }
- if (x >= 0x100) {
- x >>= 8;
- r += 8;
- }
- if (x >= 0x10) {
- x >>= 4;
- r += 4;
- }
- if (x >= 4) {
- x >>= 2;
- r += 2;
- }
- if (x >= 2)
- r++;
- return r;
-}
-
/*
* async list handling
*/
@@ -219,7 +194,7 @@
kfree(as);
}

-extern __inline__ void async_newpending(struct async *as)
+static inline void async_newpending(struct async *as)
{
struct dev_state *ps = as->ps;
unsigned long flags;
@@ -229,7 +204,7 @@
spin_unlock_irqrestore(&ps->lock, flags);
}

-extern __inline__ void async_removepending(struct async *as)
+static inline void async_removepending(struct async *as)
{
struct dev_state *ps = as->ps;
unsigned long flags;
@@ -239,7 +214,7 @@
spin_unlock_irqrestore(&ps->lock, flags);
}

-extern __inline__ struct async *async_getcompleted(struct dev_state *ps)
+static inline struct async *async_getcompleted(struct dev_state *ps)
{
unsigned long flags;
struct async *as = NULL;
@@ -253,7 +228,7 @@
return as;
}

-extern __inline__ struct async *async_getpending(struct dev_state *ps, void __user *userurb)
+static inline struct async *async_getpending(struct dev_state *ps, void __user *userurb)
{
unsigned long flags;
struct async *as;
@@ -321,7 +296,7 @@
destroy_async(ps, &hitlist);
}

-extern __inline__ void destroy_all_async(struct dev_state *ps)
+static inline void destroy_all_async(struct dev_state *ps)
{
destroy_async(ps, &ps->async_pending);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/