sk buff를 복사한후 메모리 해제시 문제가..발생하네요..도와주
글쓴이: jurlse / 작성시간: 수, 2004/08/04 - 9:07오후
sk buff 복사를 두가지 방법으로 다 해봤는데 해제하는 방법이 이상한지 잘 안되네요..
복사 방법 1.
skb_clone => sk buff만 복사한다.
my_skb = skb_clone(skb, GFP_ATOMIC) ==> 이렇게 복사한 후에 어케 해제해야되나요..??
1. kfree(my_skb)
2. kfree_skb(my_skb)
3. 기타..
복사 방법 2.
skb_copy => sk buff와 그가 가리키고 있는 data영역까지 복사한다.
my_skb = skb_copy(skb, GFP_ATOMIC)
1. kfree(my_skb->head)
kfree(my_skb)
2. kfree_skb(my_skb)
kfree_skb(my_skb->head)
3. 기타..
정말 급한일입니다..ㅠㅠ..고수님들..답변부탁드립니다..
Forums:
RE:sk buff를 복사한후 메모리 해제시 문제가..발생하네요
skb_clone : sk_buff 구조체의 헤더만 복사하고, data field 는 공유합니다.
skb_copy : sk_buff 를 통체로 복사합니다.
이 둘의 메모리 해제는 kfree_skb(sk_buff) 입니다.
sk_buff 구조체의 users 필드가 이 구조체에 대한 reference 카운트인데, 이 값이 1일 때 kfree_skb 에서 메모리를 해제합니다. kfree_skb 의 구현을 보시면 쉽게 이해하실 겁니다.
kfree_skb 를 사용할 때 시스템 패닉이 발생한다면, 다른 부분에서 메모리가 overwrite 되는게 아닐까 싶습니다..
그럼....
댓글 달기