ioctl을 이용하여 parameter를 넘겨줄때...
글쓴이: superj10 / 작성시간: 목, 2004/09/23 - 11:22오전
ioctl을 이용하여 파라미터를 넘겨줄 때...
이 때 한 예로 구조체를 잡아서 그 멤버로 포인터 변수를 잡아주게 되면
커널로 이 구조체를 넘겨줄 때 멤버에 대한 어드레스값이 그대로 넘어가게 되네요(가상주소가 변하지 않고) 그래서 그 멤버를 커널에서 사용하려면 에러가 납니다.
마찬가지로 구조체에 멤버로 구조체를 가지고 있고 그 안에 멤버 변수가 포인터 변수일 경우... 등등.. 이런 경우 멤버 변수들까지 물리어드레스로 변환할 수 있는 방법이 없을까요?
아니면 ioctl을 이용하지 않더라도 커널에서 어플리케이션에서 사용하는 구조체나 자료구조 같은것을 값을 그대로 다 사용할 수 있는 방법이 없을까요?
copy_to/from_user 같은 경우도 전체적인 값을 그대로 복사해주지는 않는것 같더군요...
Forums:
ioctl parameter 로 포인터를 넘겨주는것 자체가 시스템 보안등
ioctl parameter 로 포인터를 넘겨주는것 자체가 시스템 보안등을 고려할때 별로 권장할 만한 방법이 아니군요. 포인터를 포함하지 않도록 구조체를 만들어서 구조체 전체를 넘겨줘야 되겠죠.
댓글 달기