Foros: Ayuda (Thread #27644)

コンパイル時の警告について (akari/lsm.c) (2010-10-20 21:27 by executive #53513)

はじめまして。早速使わせていただいています。

コンパイル時に以下の警告が出るのですが、
問題ありませんでしょうか。

ビルドできないわけではないので問題なさそうですが、
もし問題があればパッチを後記しましたので、よければお使い下さい。

ビルド環境:
ディストリビューション:Debian GNU/Linux unstable (squeeze/sid)
アーキテクチャ: i386 (CPU: Pentium M)
Linux kernel: 2.6.36-rc8-git4 SMP PREEMPT PENTIUMM
gcc version 4.4.5 (Debian 4.4.5-4)
GNU C Library (Debian EGLIBC 2.11.2-6) stable release version 2.11.2
akari: svnより取得、リビジョン 43

メッセージ(一部):
CC [M] /usr/src/linux/tmp/akari/lsm.o
/usr/src/linux/tmp/akari/lsm.c: In function ‘ccs_find_variable’:
/usr/src/linux/tmp/akari/lsm.c:1842: 警告: assignment makes pointer from integer without a cast
/usr/src/linux/tmp/akari/lsm.c:1852: 警告: キャストによってポインタから異なるサイズの整数となります
/usr/src/linux/tmp/akari/lsm.c: In function ‘ccs_find_security_ops’:
/usr/src/linux/tmp/akari/lsm.c:1890: 警告: キャストによってポインタから異なるサイズの整数となります

上記以外に警告、エラーメッセージはありません。

メッセージ(make V=1 実行時、一部):
make -f scripts/Makefile.build obj=/usr/src/linux/tmp/akari
gcc -Wp,-MD,/usr/src/linux/tmp/akari/.lsm.o.d -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.5/include -I/usr/src/linux/linux-source-2.6.36/arch/x86/include -Iinclude -include include/generated/autoconf.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=pentium3 -mtune=generic -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fomit-frame-pointer -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(lsm)" -D"KBUILD_MODNAME=KBUILD_STR(akari)" -c -o /usr/src/linux/tmp/akari/.tmp_lsm.o /usr/src/linux/tmp/akari/lsm.c
/usr/src/linux/tmp/akari/lsm.c: In function ‘ccs_find_variable’:
/usr/src/linux/tmp/akari/lsm.c:1842: 警告: assignment makes pointer from integer without a cast
/usr/src/linux/tmp/akari/lsm.c:1852: 警告: キャストによってポインタから異なるサイズの整数となります
/usr/src/linux/tmp/akari/lsm.c: In function ‘ccs_find_security_ops’:
/usr/src/linux/tmp/akari/lsm.c:1890: 警告: キャストによってポインタから異なるサイズの整数となります

以下のパッチを適用すると警告は消えました。
しかし、これで良いか、また問題があるか、エンバグしているか分かりません。
申し訳ありません。
(モジュールを読み込んで問題なく使えてはいるんですが)

diff --git a/security/akari/lsm.c b/security/akari/lsm.c
index 2aa243e..15b3030 100644
--- a/security/akari/lsm.c
+++ b/security/akari/lsm.c
@@ -1839,7 +1839,7 @@ static void * __init ccs_find_variable(v
for (i = 0; i < 128; i++) {
if (*(u32 *) cp == (u32) variable) {
static void *cp4ret;
- cp4ret = *(int *) (base + i);
+ cp4ret = (void *)(int *) (base + i);
return &cp4ret;
}
cp++;
@@ -1849,7 +1849,7 @@ static void * __init ccs_find_variable(v
if (sizeof(void *) == sizeof(u64)) {
cp = function;
for (i = 0; i < 128; i++) {
- if ((u64) (cp + sizeof(int) + *(int *)(cp)) ==
+ if (*(u64 *) (cp + sizeof(int) + *(int *)(cp)) ==
variable) {
static const u8 *cp4ret;
cp = base + i;
@@ -1887,7 +1887,7 @@ static struct security_operations * __in
* This trick assumes that compiler generates identical code for
* security_file_alloc() and lsm_addr_calculator().
*/
- cp = ccs_find_variable(lsm_addr_calculator, (u64) &ccs_security_ops,
+ cp = ccs_find_variable(lsm_addr_calculator, *(u64 *) &ccs_security_ops,
" security_file_alloc\n");
if (!cp) {
printk(KERN_ERR "Can't resolve security_file_alloc().\n");
--
1.7.2.3

もしよければお使い下さい。よろしくお願いいたします。

RE: コンパイル時の警告について (akari/lsm.c) (2010-10-20 21:40 by kumaneko #53514)

ご報告ありがとうございます。

この警告メッセージはこちらでも把握していますが、無視していただいて構いません。
Responder al #53513

RE: コンパイル時の警告について (akari/lsm.c) (2010-10-20 21:43 by executive #53515)

素早いご返答ありがとうございます。
了解致しました。ありがとうございます。
(スペースの関係でパッチも壊れてました、すみません。)
Responder al #53513