[PATCH] libertas link error due to gcc `smartness'
authorGeert Uytterhoeven <geert@linux-m68k.org>
Mon, 8 Oct 2007 07:43:02 +0000 (09:43 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:55:19 +0000 (16:55 -0700)
Some versions of gcc replace strstr() calls with a single-character `needle'
parameter by strchr() behind our back. This causes a link error if strchr() is
defined as an inline function in <asm/string.h> (e.g. on m68k):

| drivers/built-in.o: In function `libertas_parse_chan':
| linux/drivers/net/wireless/libertas/debugfs.c:209: undefined reference to `strchr'
| drivers/built-in.o: In function `libertas_parse_ssid':
| linux/drivers/net/wireless/libertas/debugfs.c:260: undefined reference to `strchr'

Avoid this by explicitly calling strchr() instead.

Also include <linux/string.h>, because this file calls lots of str*() routines.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-By: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-By: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/libertas/debugfs.c

index cb00b080409ebeea32eab99c4181db60b953c1dd..0bda0b5119109d1f23f13ab78dd31de2dff1ce25 100644 (file)
@@ -3,6 +3,7 @@
 #include <linux/debugfs.h>
 #include <linux/delay.h>
 #include <linux/mm.h>
+#include <linux/string.h>
 #include <net/iw_handler.h>
 
 #include "dev.h"
@@ -205,7 +206,7 @@ static int libertas_parse_chan(char *buf, size_t count,
        if (!start)
                return -EINVAL;
        start += 5;
-       end = strstr(start, " ");
+       end = strchr(start, ' ');
        if (!end)
                end = buf + count;
        hold = kzalloc((end - start)+1, GFP_KERNEL);
@@ -256,7 +257,7 @@ static void libertas_parse_ssid(char *buf, size_t count,
        if (!hold)
                return;
        hold += 5;
-       end = strstr(hold, " ");
+       end = strchr(hold, ' ');
        if (!end)
                end = buf + count - 1;