Fix panic when loading libiconv.ko on sparc64.
It seems that this issue only become obvious when compiled with -O2 on sparc64. Since each struct iconv_converter_class has been initialized by DEFINE_CLASS macro, not all members of struct iconv_converter_class has been allocated on memory and cc_link member has not been initialized, while iconv_register_converter() wanted to access it with TAILQ. Now we modify KICONV_CONVERTER macro and fix this bug. Problem reported on: freebsd-sparc64 Pointed out by: yongari Discussed with: yongari Tested by: yongari MFC after: 3 days
This commit is contained in:
parent
a43b8a5135
commit
b03a330dcf
@ -129,7 +129,9 @@ struct iconv_cspair {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define KICONV_CONVERTER(name,size) \
|
#define KICONV_CONVERTER(name,size) \
|
||||||
static DEFINE_CLASS(iconv_ ## name, iconv_ ## name ## _methods, (size)); \
|
static struct iconv_converter_class iconv_ ## name ## _class = { \
|
||||||
|
"iconv_"#name, iconv_ ## name ## _methods, size, NULL \
|
||||||
|
}; \
|
||||||
static moduledata_t iconv_ ## name ## _mod = { \
|
static moduledata_t iconv_ ## name ## _mod = { \
|
||||||
"iconv_"#name, iconv_converter_handler, \
|
"iconv_"#name, iconv_converter_handler, \
|
||||||
(void*)&iconv_ ## name ## _class \
|
(void*)&iconv_ ## name ## _class \
|
||||||
|
Loading…
Reference in New Issue
Block a user