ubuntu 64bit에서 패킷 hooking 할 때 입니다.

tajja78의 이미지

안녕하세요

우분투 12.04 64비트 환경에서 netfilter를 써서 hooking 하는 커널 모듈을 만들었습니다.
그런데 sk_buff 구조체를 넘겨 받아서 ethernet header를 얻어 올려고

unsigned char* mac = skb_mac_header(skb);

printk("mac[%x] : %02x %02x %02x \n", mac, mac[0], mac[1], mac[2]);

or

display_packet(mac);

하면

BUG: unable to handle kernel paging request at ffff8801dba8e1ff

메세지를 띄우고 죽습니다.
함수에 인자로 넘길땐 함수에 아무동작도 없이 넘기기만 해도 죽습니다.

컴파일도 문제가 없고, 해당 포인터 변수(mac)의 주소값도 얻어집니다.

왜 그런지 아시는분 부탁드립니다.. 며칠째 고생중 입니다.

ㅜㅜ

winner의 이미지

User mode 인데 kernel memory 를 사용할려다가 오류난 것 아닌가요?

tajja78의 이미지

커널 모듈 내 에서 일어나는 현상인데... kernel mode 아닌가요?
지금 우분투를 virtual box에서 돌리고 있는데 혹시 이런게 영향을 줄수 있나요?