[완료] netfilter hook 후 network device 사용하여 copy_from_user 함수 이용하다가 netfilter hook된 함수에서 접근 시 커널 패닉
글쓴이: winterprincess / 작성시간: 월, 2009/07/13 - 5:06오후
안녕하세요.
network_device를 이용해서 user영역에서 메모리를 복사해오는 과정을 만들었습니다.
netfilter hook 후 network device를 올려 copy_from_user 함수로 데이터를 가져오는데, ( 데이터를 받는 변수는 전역변수로 되어있음 )
netfilter hook된 함수에서 접근을 하려고 하면
커널 패닉이 나버립니다.
제가 커널 프로그래밍은 이번이 처음이라 많은 가설을 생각해보았는데...
network_device와 hooking된 netfilter의 함수가 각기 다른 thread에서 돌아간다고 생각하여
mutex로 각기 변수 접근에 대한 lock을 걸어보기도 해봤습니다만,
network_device에서 데이터를 가져온 후 변수에 접근하면 정상적으로 데이타가 printk 함수로 출력이 되지만,
후킹된 함수에서는 정상적으로 보이지 않습니다.
제가 놓친게 무엇인지 조언 부탁드립니다.
Forums:
원인을 제가 찾았습니다...
예상대로 잘못된 메모리 접근이었는데...
제가 만든 2차 구조체를 정상적으로 copy_from_user 함수가 먹지 않았던 모양입니다.
그래서 구조체를 버리고,
각 1차 동적 배열로 보내도록 했더니 문제 없이 작동이 잘됩니다.
구조체도 보낼 수 있는지 여부 디버깅을 위해 2대의 리눅스 머신이 필요한 것 같습니다...
오직 겨울 공주를 위하여.
-----------------------------------------------------------------------------------
오직 겨울 공주를 위하여.
댓글 달기