[PATCH] libertas link error due to gcc `smartness'
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>
This commit is contained in:
parent
6470a89de9
commit
d8b0fb51ef
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue